之前一直都是通過yum安裝es,最近使用docker-compose部署了一個(gè)單節(jié)點(diǎn)es,java調(diào)用9300端口的時(shí)候,總是報(bào)錯(cuò):None of the configured nodes are available,網(wǎng)上找了很多文檔,都說cluster.name不一致導(dǎo)致,或者端口不正確,但是程序和es的name都是一致,端口也是正確的。
都有點(diǎn)想放棄的時(shí)候,終于找到一篇有用的文章,被坑了兩周的問題,終于得到了解決。
主要原因:spring-boot項(xiàng)目中使用了client.transport.sniff為true,使客戶端去嗅探整個(gè)集群的狀態(tài),把集群中其它機(jī)器的ip地址加到客戶端中。這樣做的好處是,一般你不用手動(dòng)設(shè)置集群里所有集群的ip到連接客戶端,它會(huì)自動(dòng)幫你添加,并且自動(dòng)發(fā)現(xiàn)新加入集群的機(jī)器。
處理方式:
1、把client.transport.sniff修改為false關(guān)閉嗅探;或者直接使用addTransportAddress方法把集群中其它機(jī)器的ip地址加到客戶端中。
2、修改ES服務(wù)器配置,將publish_host改為服務(wù)器的ip而不是docker分配的內(nèi)部IP
elasticsearch.yml
cluster.name: elasticsearch network.host: 0.0.0.0 network.publish_host: 192.168.1.200 http.port: 9200 discovery.type: single-node
贊
6
賞