都是服务器多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些许配置参数的详解,靠它解决了几天的烦恼啊。
- 都是服务器多IP惹的祸
- 都是‘/’惹的祸
- 都是Gmail惹的祸。
- 都是Gmail惹的祸
- 都是咖啡惹的祸~
- 都是公款惹的祸
- 都是进步惹的祸!
- 都是"魔波"惹的祸
- 都是一句话惹的祸
- 都是内存惹的祸
- 都是base惹的祸
- 都是习惯惹的祸
- 都是包包惹的祸
- 都是@@IDENTITY惹的祸
- 都是诺顿惹的祸
- 都是心态惹的祸!
- 都是virtual惹的祸
- 都是名字惹的祸。。。。。。
- .NET链接Access数据库的方式(总是忘,记一下)
- 关于java.lang.UnsupportedClassVersionError的错误解决
- Spring AMQP 1.6完整参考指南-第一部分
- SMTP抓包分析
- Web 开发的安全核对清单简要
- 都是服务器多IP惹的祸
- 关于jQuery中的attr和prop
- C/C++
- 网络通讯TCP和UDP的编程流程
- AGC 011
- 99乘法表
- Libcurl 表单提交模式(POST 模式)
- 简单排序算法:冒泡排序(交换排序)
- 计算机视觉识别简史:从 AlexNet、ResNet 到 Mask RCNN