Elasticsearch集群问题,导致主master节点发现不了node节点
个人博客:https://blog.sharedata.info/
最新需要配置es集群采用5个分片和1个副片,正好是11台机器,而只保留一份备份所以只需要5*2=10台机器
方案:
1.1台作为master 只用来数据的分发,不存储数据
2.10台用来作为节点存储数据
配置完毕,此时开启master不能发现子节点
排查:
1.查询master到节点之间的9200 9300端口是否通
2.查询master到节点之间能否ping通
3.以上全都没有问题
关闭防火墙,此时发现master节点发现了各个子节点,然后就懵逼了,内网都是通的呀!排查日志发现子节点到master不通竟然是master的外网ip地址,可是配置的都是内网ip地址,怎么会发现外网ip地址?
在elasticsearch-head中查看master节点信息:
transport_address 参数竟然是外网的地址
google一下次参数的具体配置又查询了之前配置的内网集群发现这个其实是内网的地址
transport模块:
传输模块用于集群内节点之间的内部通信,从一个节点到另一个节点的每个呼叫都使用传输模块(例如,当HTTP GET请求由一个节点处理,并且实际上应该由保存数据的另一个节点处理时)
transport.publish_host:要发布的集群中要连接的节点的主机地址。默认为transport.host(如果设置)或network.publish_host
transport.host:用于设置transport.bind_host和transport.publish_host默认设置为transport.host或network.host
network.publish_host:要发布的集群中要连接的节点的主机地址。默认为transport.host(如果设置)或network.publish_host
此时transport.host和network.publish_host都没有设置,那么只设置了network.host:0.0.0.0
设置master的配置文件:transport.publish_host 指定内网地址
然集群之间进行内外通信,具体0.0.0.0 什么是外网ip地址还需要查询了解一下