elasticsearch学习(三)多节点集群部署

发布于:2025-09-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

上一篇文章

elasticsearch学习(二)插件安装

概述

本次主要是单集群多节点部署,由于elasticsearch 7版本以后不支持单机多实例,所以本文采用的是两台物理机进行部署

es版本:9.1.2

节点一

物理机配置

系统:MAC

解压后,修改elasticsearch.yml文件

#集群名字
cluster.name: testCluster
#节点名字
node.name: node-1
#对外绑定的ip
network.host: 192.168.0.115
#对外支持的端口
http.port: 9200
#节点间通信的端口
transport.port: 9300
#集群初始化的主节点
cluster.initial_master_nodes: ["node-1"]
#https支持
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12

以上配置都是必须的
对外绑定的ip和端口用于节点服务发现
节点间通信的端口用于节点间通信
https支持提供通过token加入集群功能
集群初始化的主节点不配置会导致其他节点无法发现集群master节点

启动elasticsearch

查看节点是否正常

https://localhost:9200/_cat/nodes
https://localhost:9200/

执行命令生成token

➜  bin elasticsearch-create-enrollment-token -s node --url "https://192.168.0.115:9200"
warning: ignoring JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home; using bundled JDK
eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTkyLjE2OC4wLjExNTo5MjAwIl0sImZnciI6IjdkODI1YjJmMWMxNDRhMGQ0YzU2YTA1N2Q5ZGNiZDNlZTM2MmQxN2Y2ODg4ZGNiM2I1Nzc3ZmUxYzQ4NTUzNWQiLCJrZXkiOiJVdEV1MkpnQjhWOFdXYkU3cWJ1ZDp4OFFqWmJjTENMcjZ6eklraFBkc1ZRIn0=

–url最好加上,否则可能会出现从节点访问失败的问题
记录下返回值,从节点加入时需要使用

节点二

物理机配置

系统:Windows

解压后,修改elasticsearch.yml文件

#集群名字
cluster.name: testCluster
#节点名字
node.name: node-2
#对外绑定的ip
network.host: 192.168.0.128
#对外支持的端口
http.port: 9200
#节点间通信的端口
transport.port: 9300
#直接指定发现的节点一
discovery.seed_hosts: ["192.168.0.115:9300"]

在命令行执行启动命令(不要用bat)

elasticsearch --enrollment-token
TOKEN是节点一生成的

F:\workspace\elasticsearch-9.1.2-windows-x86_64\elasticsearch-9.1.2\bin>elasticsearch --enrollment-token eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTkyLjE2OC4wLjExNTo5MjAwIl0sImZnciI6IjdkODI1YjJmMWMxNDRhMGQ0YzU2YTA1N2Q5ZGNiZDNlZTM2MmQxN2Y2ODg4ZGNiM2I1Nzc3ZmUxYzQ4NTUzNWQiLCJrZXkiOiJVdEV1MkpnQjhWOFdXYkU3cWJ1ZDp4OFFqWmJjTENMcjZ6eklraFBkc1ZRIn0=

启动完毕,访问节点一

https://192.168.0.115:9200/_cat/nodes
image.png

可能遇到的问题

1 节点二启动时报错

原因:
1 节点一没有绑定ip
2 节点一生成的token对应的url和节点二发现的https://192.168.0.115:9200不一致
3 发现加入集群服务使用https链接,节点一没有开启https支持会导致访问不到

解决方案:
1 加上绑定配置
2 生成token命令中加上url指定(url必须是有效的才能生成token)
3 节点一开启https服务

2 节点二启动后,没找到节点一

原因:
1 节点一没有配置9300端口,导致节点二请求失败

解决方案:
1 节点一加上9300端口配置

3 节点二启动并找到节点一,但加入集群失败

原因:
1 节点一和节点二版本不一致,可以通过看log来判断

Caused by: java.lang.IllegalStateException: index [.security-7/-dQ3_vgwT7eixer_KAq45g] version not supported: 9.1.0-9.1.2 maximum compatible index version is: 9.0.0-9.0.4
	at org.elasticsearch.cluster.coordination.NodeJoinExecutor.ensureIndexCompatibility(NodeJoinExecutor.java:422) ~[elasticsearch-9.0.4.jar:?]
	at org.elasticsearch.cluster.coordination.NodeJoinExecutor.lambda$addBuiltInJoinValidators$11(NodeJoinExecutor.java:560) ~[elasticsearch-9.0.4.jar:?]
	at org.elasticsearch.cluster.coordination.Coordinator.lambda$validateJoinRequest$11(Coordinator.java:723) ~[elasticsearch-9.0.4.jar:?]
	at java.util.ArrayList.forEach(ArrayList.java:1604) ~[?:?]

解决方案:
1 保持一致的版本


网站公告

今日签到

点亮在社区的每一天
去签到