Elasticsearch部分节点不能发现集群(脑裂)问题处理
2017-10-13 13:53
288 查看
现象描述
es版本 1.4.5+centos 6.5es1,es2,es3三台es组成一个集群,集群状态正常,
当es1 服务器重启后,es1不能加到集群中,自己选举自己为master,这就产生了es集群中所谓的“脑裂”, 把es1的es服务重启后,es1则能正常发现集群并加入。
当重启es2服务器后,es2不能加到集群中,自己选举自己为master,也产生了es集群中所谓的“脑裂”,当重启es服务后,还是不能发现集群。
当重启es3服务器后,es3能加到集群中。正常。
分析
三台es服务器es服务,插件的版本均一样,配置除了节点名不同也一样。查看es服务的启动日志发现:
[2015-07-22 16:48:24,628][INFO ][cluster.service ] [Es_node_10_0_31_2] new_master [Es_node_10_0_31_2][fDJA3kUtTHC7eJuS4h78FA][localhost][inet[/10.0.31.2:9300]]{rack=rack2,
master=true}, reason: zen-disco-join (elected_as_master)
服务启动过程中,由于未能发现集群,自己选举自己为master
导致该问题有可能网络原因。因为discovery.zen(es 中一个集群的服务)超时了还没有找到集群则选举自己为master。
修改设置 discovery.zen.ping_timeout: 30s,原来10s 重启es1发现正常了。用同样的方法修改es2,发现不凑效
修改es2的设置如下:
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping_timeout: 120s
discovery.zen.minimum_master_nodes: 2
#至少要发现集群可做master的节点数,
client.transport.ping_timeout: 60s
discovery.zen.ping.unicast.hosts: ["10.0.31.2", "10.0.33.2"] 指明集群中其它可能为master的节点ip,以防找不到
用该方法后,重启es2服务器能正常发现集群,服务正常。
实验后三台es服务的配置均加了
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping_timeout: 120s
discovery.zen.minimum_master_nodes: 2
client.transport.ping_timeout: 60s
discovery.zen.ping.unicast.hosts: ["10.0.31.2", "10.0.33.2"]
只是ip,及超时时间略有不同,es2的超时时间设得最长。
es2的服务虽然正常了,但启动日志中会有个异常,如下:
[2015-07-22 21:43:29,012][WARN ][transport.netty ] [Es_node_10_0_32_2] exception caught on transport layer [[id: 0x5c87285c]], closing
connection
java.net.NoRouteToHostException: No route to host
at
sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at
sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at
org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
at
org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
at
org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79)
at
org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
at
org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
at
org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at
org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at
java.lang.Thread.run(Thread.java:745)
[2015-07-22 21:43:55,839][WARN ][discovery
怀疑跟网络有关系,虽然不影响服务。
总结:
es服务启动后到发现集群的时间有点长,如果超时时间设得短则发现不了。这个原因还未知。只是通过修改设置让他尽可能能找到了集群了。如果看到此文章是有人知道该问题的根本原因或更好的解决方法敬请告知,不胜感激!!!
相关文章推荐
- Elasticsearch部分节点不能发现集群(脑裂)问题处理
- Elasticsearch部分节点不能发现集群(脑裂)问题处理
- Elasticsearch部分节点不能发现集群(脑裂)问题处理
- elasticsearch集群中的slave节点不能发现master节点的问题解决
- ElasticSearch集群未连接 无法发现节点(windows环境)以及windows环境下设置服务 不能自动启动的问题
- Elasticsearch集群问题,导致主master节点发现不了node节点
- 【Hadoop】Hbase分布式链接出错的问题,启动后不能连上其他节点处理问题。一直报错The node /hbase is not in ZooKeeper.不能同步的问题。
- Elasticsearch系列05:Elasticsearch集群问题处理
- hadoop集群经常性节点不能连接问题
- Elasticsearch集群运行过程中常见的问题及处理
- Elasticsearch上遇到的部分问题及处理
- elasticsearch节点不能自动进入集群
- hbase集群部分节点HRegionServer启动后自动关闭的问题
- ELK-ElasticSearch集群索引分配异常问题处理
- 使用Apache通过JK实现多Tomcat负载均衡集群时,Apache不能将请求分发给Tomcat处理(即Apache反向代理不成功)的问题
- 多网卡导致的应用集群访问部分节点登陆慢问题
- hbase集群部分节点HRegionServer启动后自动关闭的问题
- [解决]ganglia集群中某节点不能移除的问题
- ckplayer播放器设置默认封面时部分浏览器不能正常显示封面图片问题的处理
- elasticsearch新加入节点不能识别问题