ElasticSearch21:ES集群

ElasticSearch21:ES集群

 

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:传统安装
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
notion image

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

报错

报错如下,启动内存小了。
notion image

解决

# 切换到root root@redis01:/etc# vim sysctl.conf
sysctl.conf添加如下内容
# 自己添加的配置,用于解决ElasticSearch的内存问题 vm.max_map_count=655360
加载配置
# 加载参数 root@redis02:/etc# sysctl -p
notion image

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
notion image
  • 在redis02、redis03执行
./bin/elasticsearch --enrollment-token eyJ2ZXIiOiI4LjEuMiIsImFkciI6WyIxOTIuMTY4LjkyLjE0NTo5MjAwIl0sImZnciI6ImJlZjRjYjdlZDU2NDcyYmFkYjBiM2NmOWYwMThlMGVkMDQ0MDRiYzcyOGMwYzY1MGVkMjhkMjlhMDFlNTkxMTQiLCJrZXkiOiJYMnpaTjRBQk01d0llQXJVWDZwMDpwUS1QMVdGOFMxeW95bmJLY090bEpRIn0=
  • 添加成功,显示
notion image
 
访问失败,修改三台机器的配置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
notion image
结果中:*代表 master 节点;-代表 slave 节点。
 
notion image
notion image
结果中:关注颜色状态
 green : 有完整的主版本和副本,一切正常;
 yellow : 数据完整,但是没有完整的副本,相当于警告;
 red : 数据不完整,部分主分片不可用,相当于故障;
 
 

ref