基于Docker安装Elasticsearch
1、安装Elasticsearch
1)下载docker镜像
docker pull elasticsearch:8.7.1
2)查看镜像
docker images elasticsearch
3)docker创建共享网络docker-net
docker network create docker-net
4)查看共享网络
docker network ls
5)运行elasticsearch
docker run --network docker-net -d --name es -e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" -e "discovery.type=single-node" -v G:\develop\docker\elasticsearch\data:/usr/share/elasticsearch/data -v G:\develop\docker\elasticsearch\plugins:/usr/share/elasticsearch/plugins -v G:\develop\docker\elasticsearch\temp:/usr/temp --privileged -p 9200:9200 -p 9300:9300 elasticsearch:8.7.1
6)运行参数详解
--network es-net #执行容器运行网络,与kibana运行保持在同一网络
-d #后台运行
--name es #容器名
-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" #设置容器最小最大运行内存
-e "discovery.type=single-node" #设置es的运行模式是单机运行
-v /usr/share/elasticsearch/data #数据卷
-v /usr/share/elasticsearch/plugins #数据卷
-v /usr/temp #数据卷
--privileged #以最大权限运行容器
-p 9200:9200 #开放端口
-p 9300:9300 #开放端口
elasticsearch:8.7.1 #运行镜像和tag
7)查看容器运行情况
docker ps
10)访问es,地址:http://localhost:9200/
2、Elasticsearch的XPACK验证
2.1、什么是Xpack
X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。
自6.8以及7.1+版本之后,基础级安全永久免费。
2.2、Xpack相关安全配置介绍
2.2.1、xpack.security.enabled
默认为true,启用节点上ES的XPACK安全功能,相当于总开关
2.2.2 、xpack.security.http.ssl
这个是用来开启https的,以及对应的设置,整体配置项如下:
xpack.security.http.ssl:enabled: false 【开启还是关闭】verification_mode: certificate【如下】【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】【none:它不执行服务器证书的验证。】truststore.path: certs/elastic-certificates.p12 【信任存储库文件的存放位置】keystore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】
2.2.3、xpack.security.transport.ssl
这个是传输层的认证设置,整体配置项如下:
xpack.security.transport.ssl:enabled: true【开启还是关闭】verification_mode: certificate【如下】【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】【none:它不执行服务器证书的验证。】keystore.path: certs/elastic-certificates.p12【信任存储库文件的存放位置】truststore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】
2.3、创建证书
1. 进入docker容器
进入docker容器的方法有两种:
1)通过PowerShell,执行命令,进入容器内部执行命令
docker exec -it es bash
2. 创建证书颁发机构
提示命名文件:直接回车,默认文件名elastic-stack-ca.p12文件(建议使用默认文件名)
提示输入密码:输入密码进行设置(也可以直接回车)
./bin/elasticsearch-certutil ca
3. 为节点生成证书和私钥
提示命名文件,直接回车,默认文件名elastic-certificates.p12文件
提示输入密码:输入密码进行设置(也可以直接回车)
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
4. 在elasticsearch/config目录下创建下certs目录
进入docker容器后,默认所处目录为elasticsearch所在目录
mkdir config/certs
5. 将elastic-certificates.p12文件可剪切到certs目录下
mv elastic-certificates.p12 config/certs/
2.4、给keystore和truststore设置密码
keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。truststore是放信任的证书的一个store。
truststore和keystore的性质是一样的,都是存放key的一个仓库,区别在于,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书,而keystore是包含私钥的。
1)执行以下命令。如果在创建证书的过程中加了密码,需要输入这个密码。每个节点都需要。
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password
2.5、修改elasticsearch.yml配置文件并重启elasticsearch
1)打开docker desktop,进入到es容器。
2)在Files目录下找到elasticsearch.yml文件。(容器内文件绝对路径:/usr/share/elasticsearch/config/elasticsearch.yml)
3)修改配置文件内容,如下:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: false
verification_mode: certificate
truststore.path: certs/elastic-certificates.p12
keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/elastic-certificates.p12
truststore.path: certs/elastic-certificates.p12
4)重启docker容器
2.6、重置用户密码
集群中的节点都按照上面的方式完成配置并启动后,就可以设置账号密码了。
1)es共有3个默认账户:
- elastic 账号:拥有 superuser 角色,是内置的超级用户。 kibana 账号:拥有 kibana_system 角色,用户
- kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。 logstash_system 账号:拥有 logstash_system 角色。用户
- Logstash 在 Elasticsearch 中存储监控信息时使用。
2)自动创建密码(elastic、kibana 、Logstash账号,密码均会重置)
./bin/elasticsearch-setup-passwords auto
3)手动输入密码(需要重置elastic、kibana 、Logstash账号密码)
./bin/elasticsearch-setup-passwords interactive
4)重置用户密码(随机密码)
./bin/elasticsearch-reset-password -u elastic
5)重置用户密码(指定密码)
./bin/elasticsearch-reset-password -u elastic -i <password>
2.7、登录ES
1)登录http://localhost:9200/,输入账号密码。展示es版本信息。