0. 前言
版本8.0版本及以后版本,默认开启安全配置,极大简化了开启安全需要的工作量,7.x开启安全需要N步复杂的步骤比如CA、证书签发、yml添加多个配置等等,8.x只需要一步即可。
1. 准备
1.1 集群规划
- 奇数个集群
节点 | IP | http.port | transport.port |
redis01 | 192.168.92.145 | 9200 | 9300 |
redis02 | 192.168.92.146 | 9200 | 9300 |
redis03 | 192.168.92.147 | 9200 | 9300 |
1.2 节点安装ES
在节点redis02、redis03上安装ES,参考:ElasticSearch2:传统安装
2. 集群搭建
2.1 解压
- 这里下载的
elasticsearch-8.1.2-linux-x86_64.tar.gz
,使用普通用户进行解压
# 解压 bigdata@redis01:/usr/local$ sudo tar -zxvf elasticsearch-8.1.2-linux-x86_64.tar.gz # 重命名 bigdata@redis01:/usr/local$ sudo mv elasticsearch-8.1.2 es
- 对es目录进行授权
# 查看以下目录 root@redis01:/usr/local/es# ls bin config jdk lib LICENSE.txt logs modules NOTICE.txt plugins README.asciidoc
2.2 创建配置文件
- 创建数据和日志目录
bigdata@redis01:/usr/local$ sudo mkdir ./es/{mydata,mylog}
- 对es目录进行授权
bigdata@redis01:/usr/local$ sudo chown -R bigdata:root /usr/local/es
- 修改配置文件
elasticsearch.yml
,注意cluster.name
需要保持一致。
bigdata@redis01:/usr/local$ vim es/config/elasticsearch.yml
node-1
cluster.name: my-application node.name: node-1 path.data: /usr/local/es/mydata path.logs: /usr/local/es/mylog network.host: 192.168.92.145 http.port: 9200
node-2
cluster.name: my-application node.name: node-3 path.data: /usr/local/es/mydata path.logs: /usr/local/es/mylog network.host: 192.168.92.146 http.port: 9200
node-3
cluster.name: my-application node.name: node-3 path.data: /usr/local/es/mydata path.logs: /usr/local/es/mylog network.host: 192.168.92.147 http.port: 9200
2.3 启动
# 启动 bigdata@redis01:/usr/local/es$ ./bin/elasticsearch
报错
报错如下,启动内存小了。
解决
# 切换到root root@redis01:/etc# vim sysctl.conf
sysctl.conf
添加如下内容# 自己添加的配置,用于解决ElasticSearch的内存问题 vm.max_map_count=655360
加载配置
# 加载参数 root@redis02:/etc# sysctl -p
2.4 再次启动
使用普通用户
root@redis01:/etc# su bigdata bigdata@redis01:/etc$ cd /usr/local/es/bin/ # 启动 bigdata@redis01:/usr/local/es/bin$ ./elasticsearch
2.5 重要信息
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ Elasticsearch security features have been automatically configured! ✅ Authentication is enabled and cluster connections are encrypted. ℹ️ Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`): mSksgtJrFkfuF6HvS2SV ℹ️ HTTP CA certificate SHA-256 fingerprint: bef4cb7ed56472badb0b3cf9f018e0ed04404bc728c0c650ed28d29a01e59114 ℹ️ Configure Kibana to use this cluster: • Run Kibana and click the configuration link in the terminal when Kibana starts. • Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes): eyJ2ZXIiOiI4LjEuMiIsImFkciI6WyIxOTIuMTY4LjkyLjE0NTo5MjAwIl0sImZnciI6ImJlZjRjYjdlZDU2NDcyYmFkYjBiM2NmOWYwMThlMGVkMDQ0MDRiYzcyOGMwYzY1MGVkMjhkMjlhMDFlNTkxMTQiLCJrZXkiOiJZV3paTjRBQk01d0llQXJVWDZxRTpINzZ3UFBLZVEwV1VFYnVvUnpsOG1nIn0= ℹ️ Configure other nodes to join this cluster: • Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes): eyJ2ZXIiOiI4LjEuMiIsImFkciI6WyIxOTIuMTY4LjkyLjE0NTo5MjAwIl0sImZnciI6ImJlZjRjYjdlZDU2NDcyYmFkYjBiM2NmOWYwMThlMGVkMDQ0MDRiYzcyOGMwYzY1MGVkMjhkMjlhMDFlNTkxMTQiLCJrZXkiOiJYMnpaTjRBQk01d0llQXJVWDZwMDpwUS1QMVdGOFMxeW95bmJLY090bEpRIn0= If you're running in Docker, copy the enrollment token and run: `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.1.2` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Tips📢📢📢
- 三台机器能够互相通信,设置免密登录。
# 如果token过期 bigdata@redis01:/usr/local/es$ ./bin/elasticsearch-create-enrollment-token -s node # 如果Kibana过期 bigdata@redis01:/usr/local/es$ ./bin/elasticsearch-create-enrollment-token -s kibana
- 在redis02、redis03执行
./bin/elasticsearch --enrollment-token eyJ2ZXIiOiI4LjEuMiIsImFkciI6WyIxOTIuMTY4LjkyLjE0NTo5MjAwIl0sImZnciI6ImJlZjRjYjdlZDU2NDcyYmFkYjBiM2NmOWYwMThlMGVkMDQ0MDRiYzcyOGMwYzY1MGVkMjhkMjlhMDFlNTkxMTQiLCJrZXkiOiJYMnpaTjRBQk01d0llQXJVWDZwMDpwUS1QMVdGOFMxeW95bmJLY090bEpRIn0=
- 添加成功,显示
访问失败,修改三台机器的配置
config/elasticsearch.yml
bigdata@redis01:/usr/local$ vim es/config/elasticsearch.yml
xpack.security.enabled: false
关闭集群
- 界面启动,直接
Ctrl+C
关闭节点即可。
- 后台启动,杀死进程即可。
kill -9 进程号
启动
# -d 后台启动 bigdata@redis01:/usr/local/es$ ./bin/elasticsearch -d bigdata@redis02:/usr/local/es$ ./bin/elasticsearch -d bigdata@redis03:/usr/local/es$ ./bin/elasticsearch -d
访问:
http://192.168.92.147:9200/_cat/nodes http://192.168.92.147:9200/_cluster/health
结果中:*代表
master
节点;-代表 slave
节点。结果中:关注颜色状态
green
: 有完整的主版本和副本,一切正常;yellow
: 数据完整,但是没有完整的副本,相当于警告;red
: 数据不完整,部分主分片不可用,相当于故障;