场景

服务上线部署后,访问日志接口提示  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

参考:

127.0.0.1和localhost和本机IP三者的区别_lianzhang861的博客-CSDN博客_本机地址1,什么是环回地址??与127.0.0.1的区别呢??环回地址是主机用于向自身发送通信的一个特殊地址(也就是一个特殊的目的地址)。可以这么说:同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开TCP/IP协议栈的下层。(也就是说:不用再通过什么链路层,物理层,以太网传出去了,而是可以直接在自己的网络层,运输层进行处理了)IPv4的环回地址为:127.0.0.0到127.255.25...https://blog.csdn.net/lianzhang861/article/details/80454606

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐