個人博客: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地址還需要查詢了解一下