编辑
2022-12-06
后端技术
0
请注意,本文编写于 528 天前,最后修改于 246 天前,其中某些信息可能已经过时。

目录

环境准备
集群部署
修改linux的limits配置文件,设置内存线程和文件
es00 服务器部署es
创建相关目录
拷贝配置文件
启动
验证
es01 服务器部署es
创建相关目录
拷贝配置文件
启动
验证
es02 服务器部署es
创建相关目录
拷贝配置文件
启动
验证
Kibana部署(192.169.180.134)
部署
启用加密
进入容器
制作p12
修改配置使用证书
重启es
配置ES访问密码
配置Kibana访问密码

环境准备

准备3台已经安装好docker的linux服务器,进行安装的版本如下:

  • Elasticsearch:7.10.1
  • Kibana:7.10.1
  • ik:7.10.1
部署内容部署名称端口号机器数据目录
ES节点0es009200 9300机器A(192.168.180.134)数据存储目录:/opt/Es/es00/data
日志文件目录:/opt/Es/es00/logs
配置文件目录:/opt/Es/es00/config
ES节点1es019201 9301机器B(192.168.180.133)数据存储目录:/opt/Es/es01/data
日志文件目录:/opt/Es/es01/logs
配置文件目录:/opt/Es/es01/config
ES节点2es029202 9302机器C(192.168.180.132)数据存储目录:/opt/Es/es02/data
日志文件目录:/opt/Es/es02/logs
配置文件目录:/opt/Es/es02/config
Kibana服务kib5601机器A(192.168.180.134)不需要

集群部署

修改linux的limits配置文件,设置内存线程和文件

vi /etc/security/limits.conf

shell
# 在文件最后添加 root soft nofile 65535 root hard nofile 65535 * soft nofile 65535 * hard nofile 65535

执行以下命令

shell
sysctl -w vm.max_map_count=262144

es00 服务器部署es

创建相关目录
shell
# 创建相关目录 mkdir -p /opt/Es/es00/{data,logs,config} # 赋予权限 chmod 777 -R /opt/Es/es00
拷贝配置文件

依次执行以下命令

shell
curl 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中的参数

启动
shell
docker 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

上面的命令参数补充说明:

  • -d: 后台运行
  • -p: 端口映射
  • -v: 持久化存储目录映射
  • –add-host * 3: 记录所有节点名称和IP地址的映射关系,加入到容器的hosts文件中
验证

直接浏览器访问IP:9200即可验证启动成功

es01 服务器部署es

创建相关目录
shell
# 创建相关目录 mkdir -p /opt/Es/es01/{data,logs,config} # 赋予权限 chmod 777 -R /opt/Es/es01
拷贝配置文件

依次执行以下命令

shell
curl 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中的参数

启动
shell
docker 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

上面的命令参数补充说明:

  • -d: 后台运行
  • -p: 端口映射
  • -v: 持久化存储目录映射
  • –add-host * 3: 记录所有节点名称和IP地址的映射关系,加入到容器的hosts文件中
验证

直接浏览器访问IP:9201即可验证启动成功

es02 服务器部署es

创建相关目录
shell
# 创建相关目录 mkdir -p /opt/Es/es02/{data,logs,config} # 赋予权限 chmod 777 -R /opt/Es/es02
拷贝配置文件

依次执行以下命令

shell
curl 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中的参数

启动
shell
docker 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

上面的命令参数补充说明:

  • -d: 后台运行
  • -p: 端口映射
  • -v: 持久化存储目录映射
  • –add-host * 3: 记录所有节点名称和IP地址的映射关系,加入到容器的hosts文件中
验证

直接浏览器访问IP:9202即可验证启动成功

Kibana部署(192.169.180.134)

部署

在192.169.180.134服务器上执行以下命令

shell
docker run \ --name kib \ -d -p 5601:5601 \ -e "ELASTICSEARCH_HOSTS=http://192.168.180.134:9200" \ kibana:7.10.1

启用加密

进入容器

在确保es00运行的情况下,执行如下命令进入容器内部(以便使用es相关脚本进行加密证书的生成与配置)

shell
docker exec -it es00 bash
制作p12

1、创建本地CA,仍然在容器内,执行如下语句

shell
./bin/elasticsearch-certutil ca
  • 第一次要求输入文件名称直接回车
  • 第二次要求输入的证书密码输入一个不小于6位的密码(设置为 abc123456)
  • 记录好,完成后当前目录会多一个"elastic-stack-ca.p12"文件

2、生成数字证书

  • 仍然在容器内,执行如下命令
shell
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
  • 第一次要求输入时输入上面创建本地CA时输入的密码(设置为 abc123456)
  • 第二次要求输入的文件名称直接回车
  • 第三次要求输入时也可以输入上面创建本地CA时输入的密码(设置为 abc123456)
  • 完成后当前目录会多一个"elastic-certificates.p12"文件
  • 然后将其移动到./config/certificates中去
shell
mkdir ./config/certificates mv ./elastic-certificates.p12 ./config/certificates/
  • 最后对其的权限进行修改确保ES能够正常使用它
shell
chmod 777 ./config/certificates/elastic-certificates.p12

3、将数字证书拷贝到其他节点上 将上面的elastic-certificates.p12文件拷贝到所有节点上,文件在宿主机的:/opt/Es/es00/config/certificates/ 目录下,拷贝到其他节点(对于本文还剩es01和es02)的同样目录

shell
scp -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使用刚才创建的证书文件:

txt
http.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
重启es

依次进入三台服务器执行以下命令

shell
# 192.169.180.134 docker restart es00 # 192.169.180.133 docker restart es01 # 192.169.180.132 docker restart es02
配置ES访问密码

在确保es服务运行的情况下,找任意一个节点执行如下命令进入容器(密码设置会自动同步到各个节点上,所以不用重复执行)

shell
docker exec -it es00 bash

然后执行如下语句,先输入 y 进行确认,然后会要求定义ES相关各类账户的密码,输入不少于6位的,不是纯数字的若干平台(elastic,apm,kibana,logstash,beats,remote_monitor)的密码(我设置的仍然是abc123456)(账号elastic)

shell
./bin/elasticsearch-setup-passwords interactive

注:如果想要修改密码的话,可以使用下面的方法,注意–user后面跟上目前elastic用户的账号密码

  • 修改elastic账号密码为a123456:
shell
curl --user elastic:123456 -XPOST --header "Content-Type: application/json" -d '{"password": "a123456"}' http://192.168.180.134:9200/_security/user/elastic/_password
  • 修改kibana账号密码为123456a:
shell
curl --user elastic:a123456 -XPOST --header "Content-Type: application/json" -d '{"password": "123456a"}' http://192.168.180.134:9200/_security/user/kibana/_password
配置Kibana访问密码

此时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中文插件

​ kibana.yml文件最后一行添加: i18n.locale: zh-CN ​ 保存,重新启动

安装IK分词器

分别进入三台服务器的es容器中,以下仅演示192.168.180.134(es00):

shell
docker 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 许可协议。转载请注明出处!