记录一下es节点掉线后修复好了的情况

问题定位: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 集群

相关推荐
safestar20121 小时前
Elasticsearch深度实战:从分布式原理到生产环境踩坑全记录
运维·搜索引擎·全文检索·es
小兔薯了3 小时前
7. LNMP-wordpress
android·运维·服务器·数据库·nginx·php
福尔摩斯张3 小时前
Linux进程间通信(IPC)机制深度解析与实践指南
linux·运维·服务器·数据结构·c++·算法
不过普通话一乙不改名3 小时前
Linux 网络发包的极致之路:从普通模式到 AF_XDP ZeroCopy
linux·运维·网络
x***13394 小时前
如何在Linux中找到MySQL的安装目录
linux·运维·mysql
p***92484 小时前
服务器部署,用 nginx 部署后页面刷新 404 问题,宝塔面板修改(修改 nginx.conf 配置文件)
运维·服务器·nginx
HarrySunCn4 小时前
Rocky服务器部署前端静态项目的注意点
运维·服务器
w***37514 小时前
Nginx 的 proxy_pass 使用简介
运维·nginx
uxiang_blog5 小时前
Linux学习之旅8
linux·运维·学习