处理了一个“服务器能ping得通,但telnet连接失败”导致数据库登录不了的问题

  • A+
所属分类:linux技术
摘要

今天运维同事说重启程序后数据库连接不上,让我帮忙看看。其它机器连接数据库是正常的,应该是网络出现问题。

今天运维同事说重启程序后数据库连接不上,让我帮忙看看。

其它机器连接数据库是正常的,应该是网络出现问题。

我上去后先试一下在应用服务器ping数据库服务器,发现可以正常ping通。

再用telnet试一下应用服务器连接数据库服务器端口是否通,发现telnet提示No route to host

本来以为是路由设置问题,但发现两台机是在同一个局域网内,路由配置正常。

再检查了一下数据库服务器的防火墙和iptables,发现配置也没问题,即使把防火墙关了也没用。

能想到的网络问题都排除了,网上也查不到有用的资料,只能暂时放弃。

为了解决问题,我想出了一个临时解决方法:

从数据库服务器上连接回应用服务器,做一个ssh转发,把应用服务器本地的1521端口转到远程的1521端口

这样应用程序就不需要连接数据库服务器的端口,只要连接本地端口就行。

但实际操作时发现一个问题:从数据库服务器ssh连接应用服务器时,提示密码错误。

但使用SecureCRT直接连接应用服务器时,使用相同密码却能正常登录。

当时我心里突然灵光一闪:“难道连接的不是同一台机?”

于是用ifconfig 检查一下两台服务器的ip设置,发现一个问题:

数据库服务器有多个网卡,其中有一个网卡配置的ip地址与应用服务器的一样!

咨询了一下运费同事,这个配置有问题的网卡并没有用。

于是让他把这个网卡ip改了,然后再试了一下,发现这次应用服务器可以正常使用telnet连接数据库服务器的端口了。

(中间有一个插曲,我使用ip down停了有问题的网卡后,发现连接还是有问题。看到网上说需要把网络全停了,修改配置再启动才有效。于是我就照着操作执行“ service network stop”时,突然发现有问题:SecureCRT所有窗口都断开了。这时我才想起来,我现在是通过远程连接操作服务器的,把网络关了我啥都干不了-_-!。后来只能让现场的运维同事帮忙到机房连接机器重新开启网络服务才行。远程操作服务器时应该禁止执行关闭机器或者关闭网络的命令,我安全操作意识还是太低了。

感概:要是有网络问题检查清单就好了,不用每次靠灵感去查问题。