都是服务器多IP惹的祸

来源:互联网 发布:抽奖算法 奖池 c 编辑:程序博客网 时间:2024/05/22 01:54

1      背景

ElasticSearch服务器运行好好的,突然有一天,同事1的电脑报500的错误,说是找不到ES服务器,导致Tomcat启动失败,但是在我的电脑上又能成功的运行,连接ES成功。此现象,使项目的开发进度阻塞,自己又在做别的事儿,一直让同事1找原因。此情况一直持续了3天,毫无进展。突然间不知道什么原因又好了。今天又出现了这个情况,好吧。Dandy决定解决你!

2      问题解决

先解决问题,再给大家讲解插曲。问题服务器上有多个IP,当ES启动时,network.publish_host: 192.168.0.1 (publish_host设置其他节点连接此节点的地址,如果不设置的话,则自动获取,publish_host的地址必须为真实地址)Publish_address的值是192.168.0.1并不是我们研发部内部(192.168.3.*)网段。因此,我们研发哥们儿的电脑怎么也连接不上ES,为什么我能连上呢。是因为我的电脑上也设置了多IP,有192.168.0.*的IP,因此,能找到ES服务器,当禁用到192.168.0.*的网卡后,我也连接不上ES啦。

因此,设置elasticsearch.yml文件下的network.publish_host的值为192.168.3.225(ES服务器分配IP),重启ES,问题解决。真是苦了ZF同学啊。悄悄的对你说一声sorry.

3      问题排查插序

3.1        程序员谎言之一:在我的电脑上运行都没有问题啊!

同一代码,在我的电脑上运行可以接连ES服务器,但是在zf,Sunny的电脑上打死也连接不上ES,只看到500的错误。

结论:通过排查,代码是同步的,说明代码没有问题。

3.2        开发环境的问题:JDK、Eclipse

由于在本人的电脑上运行无误,我自信的认为网络是没有问题的,因此,判断是zf的电脑开发环境有问题,因为我用的Eclipse,而他用的是IntelliJ IDEA。在确认了JDK的版本一致后,在他的电脑上还是连接不上ES,为了排除问题,他果断重装系统。坑的是,第二天来了后,装好开发环境,依然连接不上ES。迷茫了。

结论:说明不是开发环境的问题。

3.3        网络的问题:连接ES的网络不一致。

为了确定是网络的问题,我们连接别一台ES服务器,奇迹出现了,新ES服务器可以连接成功,且两台ES服务器的配置是一样的。

结论:如此可以判断问题是出现在问题服务器的网络上。

4      感悟

对ES还是有很多未解之处啊。性能、配置、网络这些问题还得在持续的学习。

以后排查问题的逻辑还要多细腻的想想,别贸然的让同事重装系统。惹人烦的事儿。劳民伤财!

此外,明明ES的publish_address是192.168.0.*网段的,是bind_address为0.0.0.0,在WEB浏览器下用192.168.3.*的IP仍然能访问,但是,用JAVA程序就不行。不知道和是何原因,先把问题记下吧,说不定以后会自然明朗。

5      引用

http://www.cnblogs.com/zhi-leaf/p/6180492.htmlES些许配置参数的详解,靠它解决了几天的烦恼啊。