Elasticsearch双节点集群配置后仅显示单节点,如何解决?
Elasticsearch集群仅显示单个节点的排查与解决方法
一、修正核心配置参数
你的两台节点配置中,cluster.initial_master_nodes参数存在关键问题:
- node-2的该参数仅配置了
["node-1"],但两台节点都设置了node.master: true,具备主节点候选资格,集群首次启动时,该参数必须包含所有主节点候选的节点名称。
修改node-1和node-2的elasticsearch.yml中该参数:
cluster.initial_master_nodes: ["node-1", "node-2"]
该参数用于集群首次启动时确定初始主节点候选池,仅配置单个节点会导致其他主节点候选无法被集群识别,进而无法加入。
二、检查网络连通性
Elasticsearch节点通过9300端口进行集群内部通信,需确保端口互通:
- 在node-1执行命令测试与node-2的连通性:
nc -zv 192.168.72.130 9300 # 或使用telnet telnet 192.168.72.130 9300 - 在node-2执行反向测试:
nc -zv 192.168.72.129 9300 - 检查服务器防火墙/安全组,确保9300端口允许两台节点互相访问:
- firewalld环境:
firewall-cmd --add-port=9300/tcp --permanent && firewall-cmd --reload - iptables环境:添加对应规则开放9300端口
- firewalld环境:
三、验证节点名称与主机名解析
Elasticsearch依赖节点名称进行集群内通信,需确保节点名称可被正确解析:
- 确认两台服务器的主机名分别为
node-1和node-2,执行hostname命令查看。 - 若主机名不匹配,在两台服务器的
/etc/hosts文件中添加映射:192.168.72.129 node-1 192.168.72.130 node-2
四、查看日志定位具体问题
查看node-2的Elasticsearch日志(默认路径为/var/log/elasticsearch/cluster-es.log),搜索discovery、master、join等关键词,获取节点无法加入的具体错误信息,比如:
- 数据目录权限不足
- 集群名称配置冲突
- 网络端口未开放导致的连接超时
五、调整网关恢复参数(可选)
当前配置中gateway.recover_after_nodes: 2,意味着集群需等待至少2个节点启动才会恢复数据。若node-2迟迟无法加入,node-1会一直处于等待状态。可临时将该值改为1,待集群稳定后再改回2:
gateway.recover_after_nodes: 1
修改配置后,重启两台节点的Elasticsearch服务,再执行curl http://192.168.72.129:9200/_cat/nodes查看节点列表。
内容的提问来源于stack exchange,提问作者tientoen
相关产品推荐
相关产品推荐

