✅ 问题定位:96 节点是"孤儿节点"------因为它不知道其他节点在哪
从日志中可以明确看到:
关键证据 1:它只在找 localhost
日志不断出现:
discovery will continue using [127.0.0.1:9300, 127.0.0.1:9301 ...]
说明这一台(192.142.8.96):
-
完全没有向 97 或 100 发起过连接
-
配置文件缺少真正的 seed hosts
-
它只能试图在自己机器内部寻找集群(当然找不到)
这就是它无法加入集群的根本原因。
关键证据 2:集群 UUID 冲突
日志提示:
this node is locked into cluster UUID [...] but [cluster.initial_master_nodes] is set to [node-1]; remove this setting
含义是:
-
96 节点先前加入过集群(有 UUID)
-
但配置里仍然写着"我是一个新的集群的初始主节点"
-
这会导致 ES 拒绝加入本来就存在的 97/100 的集群
✅ 解决方案(在 192.142.8.96 上操作)
⚠️ 该机不需要再初始化集群,它只需要加入现有集群。
1. 编辑配置文件
vi /data/elk/es/elasticsearch-8.13.3/config/elasticsearch.yml
2. 修改关键配置
✔ 添加正确的节点发现列表 discovery.seed_hosts
找到或新增以下行,并写上三台机器的真实 IP:
discovery.seed_hosts: ["192.142.8.96", "192.142.8.97", "192.142.8.100"]
✔ 注释掉 cluster.initial_master_nodes
集群已经存在,这台机器不是初始化节点,所以这一行必须被注释掉:
# cluster.initial_master_nodes: ["node-1"]
3. 重启 Elasticsearch
su - es
# 结束旧进程
kill -9 $(ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}')
# 重启
/data/elk/es/elasticsearch-8.13.3/bin/elasticsearch -d
4. 验证节点是否成功加入集群(在 97 或 100 上执行)
curl -u elastic:'xxxxxx' -X GET "http://localhost:9200/_cat/nodes?v"
成功时你会看到 3 条节点记录,包括:
-
96
-
97
-
100
此时 96 节点正式归队。
🎉 修复完成后你可以:
-
恢复 Java 程序的 3 节点配置
-
继续使用整个 3 节点 ES 集群