Huawei 云主机上,安装elasticsearch 集群,启动后,始终无法正常选举,报选举超时。
看日志报错如下:
![](https://img.haomeiwen.com/i12979420/70e85698014f1af5.png)
红框中为elasticsearch服务器上一个vip(服务器上安装其他组件需用到)
本节点给peer发布地址时,将本服务器的vip发布出去了,其他peer连vip+port 时无法连接。
原因:
1. Huawei云主机,要求提前绑定 vip 在指定的服务器上
2. vip需要监听的端口也需要绑定声明,否则监听端口无法被VPC网络中其他主机访问
解决办法1: 将集群端口9300,在云主机控制台上在对应的vip上绑定开放,使得VPC网络中其他主机可以访问
解决办法2: 在各个elasticsearch节点的配置文件中添加 network.push_host 的信息(本机在集群中的IP),这样就不会发布本机其他IP,达到精准推送本机地址给其他peer
![](https://img.haomeiwen.com/i12979420/292cb46c0886a525.png)
在集群启动的时候,会启动TransportService,TransportService是用来进行节点之间通信的服务,内部封装了一个Transport(接口),在TransportService启动的过程中会初始化Transport(有多种实现,最基本的实现是Netty4Transport),会根据配置参数来进行address绑定(network.host,transport.host等等都是相关的一些配置,在设置network.host为0.0.0.0时,这个地址会选取一个最合适的host,需要注意,有且只有一个地址被绑定)。
在启动成功后,会在控制台输出当前transport绑定的地址。
![](https://img.haomeiwen.com/i12979420/ac37265b53a4ab43.png)
![](https://img.haomeiwen.com/i12979420/a5b222c0c5b2dd9b.png)
如果不清楚是否配置正确的情况下,那么现在排查这个问题就有一个比较好的思路,首先查看服务启动时绑定的host和port;
其次呢需要检查discovery.seed_hosts,是否能访问到;
再次呢,检查其他节点指向的master的指向的host,也就是cluster.initial_master_nodes这个参数对应的地址;然后对比host是否一致。
各个节点间的通信基础是tranport维护,而上述的配置目的是保证节点能够通过tranpost正确的连接到其他节点。
参考
ElasticSearch 7.1.1 集群环境搭建
https://www.cnblogs.com/remainsu/p/elasticsearch-711-ji-qun-huan-jing-da-jian.html
ES7.1.1 network.host: 0.0.0.0 时 无法组成集群
https://elasticsearch.cn/question/7877
网友评论