最近做项目的时候发现一个问题,网站打开的时候,一停的在转,大概5分钟以后返回504网关超时
当时第一反应是我的网络架构出问题了,于是从前端LVS一直往下查,我的架构是LVS+NGINX+TOMCAT,一直到nginx这块都没问题,从nginx的错误日志也看不出什么,同样的报504网关超时,当时就在想502坏的网关是以为nginx把请求抛给tomcat的时候找不到tomcat的端口,504会不会也一样呢?
[root@web1 ~]# netstat -lntup|grep 800
tcp 0 0 :::8000 :::* LISTEN 4208/java
tcp 0 0 :::8002 :::* LISTEN 4208/java
没看出什么问题,再与线上服务器对比的时候找到问题
[root@web1 ~]# netstat -lntup|grep 800
tcp 0 0 :::8000 :::* LISTEN 4208/java
tcp 0 0 ::ffff:127.0.0.1:8001 :::* LISTEN 4208/java
tcp 0 0 :::8002 :::* LISTEN 4208/java
发现tomcat少了一个端口,为什么没会导致这个问题呢?
查看tomcat日志,发现tomcat没起来,一直卡在连接连接数据库那块
于是我在web端查看mysql端口,发现能通
[root@web2 server]# telnet 10.10.0.126 3306
Trying 10.10.0.126...
Connected to 10.10.0.126.
Escape character is ‘^]‘.
^]
telnet> \q
Connection closed.
到这里发现自己的思路断了!!
峰回路转,无意中在db2上查看了一下mysql端口,发现和在web上的结果不一样
[root@db2 root]# telnet 10.10.0.126 3306
Trying 10.10.0.126...
Connected to 10.10.0.126.
Escape character is ‘^]‘.
N
5.5.32-log0pKhJw=db!>MIgIxAwW,s"mysql_native_password
这是为什么呢?
于是一点点的回忆,思考web和db的区别,最后终于找到问题所在
10.10.0.126和10.10.0.127是我数据的读vip和写vip,只有这两台机器才有10.10.0.0网段的ip
web上只有一个外网ip,于是route -n查看了一下web和db的网关
[root@web1 server]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.192.168.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth1
0.0.0.0 202.192.168.1 0.0.0.0 UG 0 0 0 eth1
[root@db2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.192.168.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 202.192.168.1 0.0.0.0 UG 0 0 0 eth0
很明显,web上缺少10.10.0.0的网关
于是在web端添加了一个网关
route add -net 10.10.0.0 netmask 255.255.255.0 dev eth1
再查看一下
[root@web1 server]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.192.168.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth1
0.0.0.0 202.192.168.1 0.0.0.0 UG 0 0 0 eth1
已经和db端一样了
查看一下mysql端口
[root@web1 server]# telnet 10.10.0.126 3306
Trying 10.10.0.126...
Connected to 10.10.0.126.
Escape character is ‘^]‘.
N
5.5.32-log±vj3[SkES!Q{9H=9E0]fjamysql_native_password
成功啦!!!!!
重启tomcat,查看tomcat端口
[root@web1 server]# netstat -lntup|grep 800
tcp 0 0 :::8000 :::* LISTEN 4208/java
tcp 0 0 ::ffff:127.0.0.1:8001 :::* LISTEN 4208/java
tcp 0 0 :::8002 :::* LISTEN 4208/java
端口起来啦
页面访问也正常了!!!
本文出自 “wanliang” 博客,请务必保留此出处http://wlmint.blog.51cto.com/10931984/1826740
原文地址:http://wlmint.blog.51cto.com/10931984/1826740