场景
服务上线部署后,访问日志接口提示 NoNodeAvailableException[None of the configured nodes are available
linux本地测试环境
elasticsearch服务,应用服务 部署在同一ip下(测试的时候没有问题)
本地elasticsearch.yml部署配置如下
cluster.name: gis-elk
node.name: node-1
network.host: 192.168.100.88
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
访问:192.168.100.88:9200正常
linux线上环境
elasticsearch服务部署在172.27.27.82
应用服务部署在172.27.27.90
线上elasticsearch.yml配置
cluster.name: gis-elk
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
线上访问:172.27.27.82:9200(正常显示启动信息)
问题分析:
(1)线上代码中的配置和本地代码中配置都确定是一样的(包括版本,集群名称等)。
(2)部署环境上有区别:
线上是应用服务和elasticsearch部署时分开的(172.27.27.90,172.27.27.82),
本地是在同一个ip部署的
(3)elasticsearch.yml配置中区别:
线上部署的是network.host: 127.0.0.1
本地部署的是network.host: 192.168.100.88
问题解决方法:
修改配置文件中的network.host项,将network.host: 127.0.0.1修改为本机network.host: 172.27.27.82
原因:
线上应用和es服务是分开部署的,es配置中设置成127.0.0.1只能被本机访问,
而设置成172.27.27.82可以被本机和外部访问
拓展延伸:怎么修改Elasticsearch的对外ip 默认是本地IP 127.0.0.1
network.bind_host: 172.27.27.82
参考: