Elasticsearch6.3.0无法加入集群的一个原因

表现:
es无法加入集群
前台启动查看日志:
或者在配置的数据所在目录与data同级的log里查看。(es安装目录本身也有log目录)

failed to send join request to master [{datalake-data05}{D9v-_YK3QyOeVgpeHCMAcA}{Web9hn4uTMyLadkvO4b_CA}{172.28.14.8}{172.28.14.8:9300}{ml.machine_memory=101210378240, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true}], reason [RemoteTransportException[[datalake-data05][172.28.14.8:9300][internal:discovery/zen/join]]; nested: ConnectTransportException[[datalake-data04][10.255.0.1:9300] connect_timeout[30s]]; ]
[2018-12-06T10:24:06,615][INFO ][o.e.d.z.ZenDiscovery     ] [datalake-data04] failed to send join request to master [{datalake-data05}{D9v-_YK3QyOeVgpeHCMAcA}{Web9hn4uTMyLadkvO4b_CA}{172.28.14.8}{172.28.14.8:9300}{ml.machine_memory=101210378240, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true}], reason [RemoteTransportException[[datalake-data05][172.28.14.8:9300][internal:discovery/zen/join]]; nested: ConnectTransportException[[datalake-data04][10.255.0.1:9300] connect_timeout[30s]]; ]

分析:
发现nested: ConnectTransportException[[datalake-data04][10.255.0.1:9300]
这个IP不是es的集群IP 认为es识别本身IP时出错,所以无法加入集群

验证:查看elasticsearch.yml查看host配置

# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:

所以有理由怀疑识别本身IP出错。
又验证服务器IP ifconfig查看
在这里插入图片描述

不是集群里预先设置的IP,所以针对elasticsearch.yml里
network.host设置为es所在服务器的有效IP.

查资料时看到的扩展:

背景:项目在阿里云平台有一个ES集群,每个节点绑定的是内网ip,即配置文件elasticsearch.yml中network.host的值是内网ip。但是,查询ES的应用在阿里云和腾讯云上都有,又不想都换绑成外网ip,浪费流量。
方案:使用network.host参数满足不了需求,ES提供了更高级的配置,network.bind_host和network.publish_host。network.publish_host,表示发布地址,是唯一的,用来集群各节点的相互通信;但network.bind_host可以绑定多个ip,因此我们可以把外网和内网ip都配上,相同云平台用内网ip访问,不同云平台用外网ip访问。

猜你喜欢

转载自blog.csdn.net/hayaqi0504/article/details/84849446
今日推荐