准备3台已经安装好docker的linux服务器,进行安装的版本如下:
部署内容 | 部署名称 | 端口号 | 机器 | 数据目录 |
---|---|---|---|---|
ES节点0 | es00 | 9200 9300 | 机器A(192.168.180.134) | 数据存储目录:/opt/Es/es00/data 日志文件目录:/opt/Es/es00/logs 配置文件目录:/opt/Es/es00/config |
ES节点1 | es01 | 9201 9301 | 机器B(192.168.180.133) | 数据存储目录:/opt/Es/es01/data 日志文件目录:/opt/Es/es01/logs 配置文件目录:/opt/Es/es01/config |
ES节点2 | es02 | 9202 9302 | 机器C(192.168.180.132) | 数据存储目录:/opt/Es/es02/data 日志文件目录:/opt/Es/es02/logs 配置文件目录:/opt/Es/es02/config |
Kibana服务 | kib | 5601 | 机器A(192.168.180.134) | 不需要 |
vi /etc/security/limits.conf
shell# 在文件最后添加
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
执行以下命令
shellsysctl -w vm.max_map_count=262144
shell# 创建相关目录
mkdir -p /opt/Es/es00/{data,logs,config}
# 赋予权限
chmod 777 -R /opt/Es/es00
依次执行以下命令
shellcurl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es00/jvm.options > /opt/Es/es00/config/jvm.options curl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es00/elasticsearch.yml > /opt/Es/es00/config/elasticsearch.yml curl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es00/log4j2.properties > /opt/Es/es00/config/log4j2.properties
执行完成后可以根据自己的需求修改jvm.options和elasticsearch.yml中的参数
shelldocker run \ --name es00 \ -d -p 9200:9200 -p 9300:9300 \ -v /opt/Es/es00/data:/usr/share/elasticsearch/data \ -v /opt/Es/es00/logs:/usr/share/elasticsearch/logs \ -v /opt/Es/es00/config:/usr/share/elasticsearch/config \ --add-host es00:192.168.180.134 --add-host es01:192.168.180.133 --add-host es02:192.168.180.132 \ elasticsearch:7.10.1
上面的命令参数补充说明:
直接浏览器访问IP:9200即可验证启动成功
shell# 创建相关目录
mkdir -p /opt/Es/es01/{data,logs,config}
# 赋予权限
chmod 777 -R /opt/Es/es01
依次执行以下命令
shellcurl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es01/jvm.options > /opt/Es/es01/config/jvm.options curl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es01/elasticsearch.yml > /opt/Es/es01/config/elasticsearch.yml curl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es01/log4j2.properties > /opt/Es/es01/config/log4j2.properties
执行完成后可以根据自己的需求修改jvm.options和elasticsearch.yml中的参数
shelldocker run \ --name es01 \ -d -p 9201:9201 -p 9301:9301 \ -v /opt/Es/es01/data:/usr/share/elasticsearch/data \ -v /opt/Es/es01/logs:/usr/share/elasticsearch/logs \ -v /opt/Es/es01/config:/usr/share/elasticsearch/config \ --add-host es00:192.168.180.134 --add-host es01:192.168.180.133 --add-host es02:192.168.180.132 \ elasticsearch:7.10.1
上面的命令参数补充说明:
直接浏览器访问IP:9201即可验证启动成功
shell# 创建相关目录
mkdir -p /opt/Es/es02/{data,logs,config}
# 赋予权限
chmod 777 -R /opt/Es/es02
依次执行以下命令
shellcurl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es02/jvm.options > /opt/Es/es02/config/jvm.options curl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es02/elasticsearch.yml > /opt/Es/es02/config/elasticsearch.yml curl https://nginx.mostintelligentape.com/blogimg/elasticsearch/init_config/es02/log4j2.properties > /opt/Es/es02/config/log4j2.properties
执行完成后可以根据自己的需求修改jvm.options和elasticsearch.yml中的参数
shelldocker run \ --name es02 \ -d -p 9202:9202 -p 9302:9302 \ -v /opt/Es/es02/data:/usr/share/elasticsearch/data \ -v /opt/Es/es02/logs:/usr/share/elasticsearch/logs \ -v /opt/Es/es02/config:/usr/share/elasticsearch/config \ --add-host es00:192.168.180.134 --add-host es01:192.168.180.133 --add-host es02:192.168.180.132 \ elasticsearch:7.10.1
上面的命令参数补充说明:
直接浏览器访问IP:9202即可验证启动成功
在192.169.180.134服务器上执行以下命令
shelldocker run \ --name kib \ -d -p 5601:5601 \ -e "ELASTICSEARCH_HOSTS=http://192.168.180.134:9200" \ kibana:7.10.1
在确保es00运行的情况下,执行如下命令进入容器内部(以便使用es相关脚本进行加密证书的生成与配置)
shelldocker exec -it es00 bash
1、创建本地CA,仍然在容器内,执行如下语句
shell./bin/elasticsearch-certutil ca
2、生成数字证书
shell./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
shellmkdir ./config/certificates mv ./elastic-certificates.p12 ./config/certificates/
shellchmod 777 ./config/certificates/elastic-certificates.p12
3、将数字证书拷贝到其他节点上 将上面的elastic-certificates.p12文件拷贝到所有节点上,文件在宿主机的:/opt/Es/es00/config/certificates/ 目录下,拷贝到其他节点(对于本文还剩es01和es02)的同样目录
shellscp -r certificates root@192.168.180.133:/opt/Es/es01/config scp -r certificates root@192.168.180.132:/opt/Es/es02/config
依次进入所有节点的容器,通过执行如下的vi命令编辑elasticsearch.yml文件
shell docker exec -it es00 bash
# docker exec -it es01 bash
# docker exec -it es02 bash
vi ./config/elasticsearch.yml
添加如下内容,告知ES使用刚才创建的证书文件:
txthttp.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization,X-Requested-With,Content-Type,Content-Length xpack.security.enabled: true xpack.security.authc.accept_default_password: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certificates/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certificates/elastic-certificates.p12
最后执行如下两行语句,如果需要输入密码使用第二步的密码即可(之前设置的密码:abc123456)
shell./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password ./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
依次进入三台服务器执行以下命令
shell# 192.169.180.134
docker restart es00
# 192.169.180.133
docker restart es01
# 192.169.180.132
docker restart es02
在确保es服务运行的情况下,找任意一个节点执行如下命令进入容器(密码设置会自动同步到各个节点上,所以不用重复执行)
shelldocker exec -it es00 bash
然后执行如下语句,先输入 y 进行确认,然后会要求定义ES相关各类账户的密码,输入不少于6位的,不是纯数字的若干平台(elastic,apm,kibana,logstash,beats,remote_monitor)的密码(我设置的仍然是abc123456)(账号elastic)
shell./bin/elasticsearch-setup-passwords interactive
注:如果想要修改密码的话,可以使用下面的方法,注意–user后面跟上目前elastic用户的账号密码
shellcurl --user elastic:123456 -XPOST --header "Content-Type: application/json" -d '{"password": "a123456"}' http://192.168.180.134:9200/_security/user/elastic/_password
shellcurl --user elastic:a123456 -XPOST --header "Content-Type: application/json" -d '{"password": "123456a"}' http://192.168.180.134:9200/_security/user/kibana/_password
此时ES已经有了密码,如果再访问我们上面部署的Kibana会发现无法访问了,也需要告诉Kibana对应ES的密码才行。
如果之前已经启动了Kibana,可以先执行docker rm -f kib进行删除
启动命令加入ES的账号密码信息即可,如下,将ELASTICSEARCH_HOSTS,ELASTICSEARCH_USERNAME,ELASTICSEARCH_PASSWORD配置成你的ES的地址、账号和密码即可。
shell```shell docker run \ --name kib \ -d -p 5601:5601 \ -e "ELASTICSEARCH_HOSTS=http://192.168.180.134:9200" \ -e "ELASTICSEARCH_USERNAME=elastic" \ -e "ELASTICSEARCH_PASSWORD=abc123456" \ kibana:7.10.1
kibana.yml文件最后一行添加: i18n.locale: zh-CN 保存,重新启动
分别进入三台服务器的es容器中,以下仅演示192.168.180.134(es00):
shelldocker exec -it es00 bash
执行以下命令
shell./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip
修改完成后分别重启即可。
本文作者:whitebear
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!