提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 准备工作
- 1. 查看现状【单节点】
- 2. 原节点改集群模式
- 3. 改es配置文件,增加集群相关配置项
- 4. *改docker映射的端口*
- 启动新节点
- ==5. docker-compose起一个新节点==
- 验证
- 6. 验证
前言
前面我们已经解决了ES使用过程中的安全问题,那么,
随着ES的继续使用,单节点难免会出现单点故障,毕竟是个单节点;
那么这篇文章,我们就来解决一下这个问题
没看过上集的兄弟可以先看看上集
【ELK】ES节点开启https【亲测可用】
【ELK】保姆级教程docker部署Elasticsearch+Kibana,必成
开始操作
准备工作
1. 查看现状【单节点】
docker ps
kibana:可以看出是单节点
2. 原节点改集群模式
vim dockers-compose.yml
······
environment:
# 删除这个单节点环境变量,es就会升级为集群模式
# - discovery.type=single-node
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- ELASTIC_PASSWORD=Qianyue@2024#
- "TZ=Asia/Shanghai"
······
3. 改es配置文件,增加集群相关配置项
vim elasticsearch.yml
node.name: es01
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
# -------------- 集群相关配置 -------------------
# 集群名
cluster.name: es-cluster
# 本节点在集群中的IP(经测试docker部署需要加这个配置,不然无法发现)
network.publish_host: 192.168.56.57
# 集群通信端口(docker部署需要加这个配置,不然无法发现,docker映射端口也得改成这个)
transport.port: 19300
# 设置集群角色:数据节点+主节资格+远程连接资格
node.roles: [ data, master, remote_cluster_client ]
# 集群发现
discovery.seed_hosts:
- 192.168.56.56:19300
# 引导集群初始化
cluster.initial_master_nodes:
- es01
- es02
# -------------- 集群相关配置 END -------------------
#--------------- 安全相关配置 -------------------
# 开启账号密码
xpack.security.enabled: true
# 开启浏览器https
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
# 开启集群间加密通信
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
#--------------- 安全相关配置 END -------------------
4. 改docker映射的端口
vim dockers-compose.yml
······
ports:
- "19200:9200"
# 节点上配置了集群通信端口,要映射出来
- "19300:19300"
······
这个时候就可以重启了,重启后登录到kibana看下
没有问题,kibana可以正常开起来,进控制台查一下ES的状态
GET /_cat/health?v&format=json
es正常运行
启动新节点
5. docker-compose起一个新节点
准备工作做完了,可以起一个新节点了!
-
docker-compose.yml
version: "3" services: elasticsearch: restart: always image: elasticsearch:8.14.3 container_name: es02 hostname: es02 privileged: true ulimits: memlock: soft: -1 hard: -1 environment: - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" - ELASTIC_PASSWORD=Qianyue@2024# ports: - "19200:9200" - "19300:19300" volumes: - "./es/es02/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml" - "./es/es02/config/certs:/usr/share/elasticsearch/config/certs" - "./es/plugins:/usr/share/elasticsearch/plugins:rw" - "./es/es02/data:/usr/share/elasticsearch/data:rw" - "./es/es02/logs:/usr/share/elasticsearch/logs:rw"
-
elasticsearch.yml
节点名,集群IP,通信端口填写相应的信息
node.name: es02 network.host: 0.0.0.0 # 开启跨域 http.cors.enabled: true # 表示支持所有域名 http.cors.allow-origin: "*" # -------------- 集群相关配置 ------------------- # 集群名 cluster.name: es-cluster # 集群中的IP network.publish_host: 192.168.56.56 # 集群通信端口 transport.port: 19300 # 设置集群角色:数据节点+主节资格+远程连接资格 node.roles: [ data, master, remote_cluster_client ] # 集群发现 discovery.seed_hosts: - 192.168.56.57:19300 # 引导集群初始化 cluster.initial_master_nodes: - es01 - es02 # -------------- 集群相关配置 END ------------------- #--------------- 安全相关配置 ------------------- # 开启账号密码 xpack.security.enabled: true # 开启浏览器https #xpack.security.http.ssl: # enabled: true # keystore.path: certs/http.p12 # 开启集群间加密通信 xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.client_authentication: required xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12 #--------------- 安全相关配置 END -------------------
docker-compose up -d
启动节点
验证
6. 验证
ES通过发现机制形成集群,前文我们已经在yml文件中配置好了各种发现参数,那么新节点启动后,就会自动与原节点形成集群:
docker ps
节点正常启动,登kibana看一下节点数量
加入成功