You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何恢复故障Elasticsearch集群且不丢失节点数据

3节点Elasticsearch集群恢复方案(主节点选举失败+认证失败)

一、解决主节点选举失败问题

从日志可知,集群有3个具备主节点资格的节点,主节点选举需要至少2个节点达成quorum(法定人数),当前仅发现1个节点,导致选举无法完成。

1. 先确保节点间通信正常

  • 检查所有节点的9300端口是否开放(防火墙、安全组规则),确认节点间能互相ping通并访问9300端口
  • 验证每个节点elasticsearch.yml配置:
    • cluster.name必须完全一致(大小写敏感)
    • discovery.zen.ping.unicast.hosts需包含另外两个节点的IP:9300(5.x版本使用Zen发现机制)

2. 临时启动单节点集群(应急恢复)

若其他节点暂时无法启动,可临时降低quorum要求启动单节点集群:

  1. 停止当前运行的ES节点
  2. 修改elasticsearch.yml,添加/修改参数:
    discovery.zen.minimum_master_nodes: 1
    
  3. 启动主节点,此时集群将以单节点模式运行,恢复基本可用性

二、解决elastic用户认证失败问题

5.x版本无elasticsearch-reset-password工具,需手动重置密码:

  1. 临时关闭安全认证:修改elasticsearch.yml,设置
    xpack.security.enabled: false
    
  2. 重启ES节点,此时可无认证访问集群
  3. 执行curl命令重置elastic用户密码:
    curl -XPUT '<master_node_ip>:9200/_xpack/security/user/elastic/_password' \
    -H "Content-Type: application/json" \
    -d '{
      "password": "your_new_secure_password"
    }'
    
  4. 恢复安全配置:改回xpack.security.enabled: true,重启ES节点,使用新密码登录

三、恢复完整3节点集群

  1. 确认另外两个节点的elasticsearch.yml配置与主节点完全一致(集群名称、发现配置、安全配置等)
  2. 依次启动另外两个节点,它们会自动加入集群
  3. 所有节点加入后,将主节点的discovery.zen.minimum_master_nodes改回2(符合3节点主资格的quorum要求),然后滚动重启所有节点

关键注意事项

  • 修改配置前务必备份elasticsearch.yml和数据目录(默认路径为data/)
  • 确保所有节点的Elasticsearch版本、JVM版本完全一致,避免兼容性问题
  • 操作完成后,验证集群状态:curl -u elastic:new_password '<master_node_ip>:9200/_cat/nodes?v'

内容的提问来源于stack exchange,提问作者sicdb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 16:14:54