先说一下公司网站的架构,公司的前端用Keepalived+LVS做的负载均衡,后面跟的是WEB服务器,WEB和IMG独立,IMG采用NFS+存储服务器,IMG前端用Squid做的缓存。整个网站前面用的是金盾的防火墙,网站的整个架构并不复杂。
在9月22日12:22收到故障短信报警,说整个站点不可用。此时用手机访问我们的网站,根本打不开,我火速赶往公司进行处理,下面是我总结解决问题的方法和思路。
第一步:首先用curl/lsof等工具测试了后端WEB服务都是正常的,排除了WEB故障,在公司用浏览器打开网站也是OK的。
第二步:想到的是不是DNS解析有问题(公司内部访问做了指向),让我的同学在其它地方做了测试,DNS解析正常,ping域名不通,首先排除的是DNS问题。然后让他traceroute一下,看线路是否畅通,到我们机柜上一级路由就找不到我们的VIP了。
第三步:ping域名不通,是不是LVS VIP的问题,然后在Load Balancer用tail -f /var/log/messages查看日志,没有发现异常信息,用ip addr查看VIP也是绑定在eth0:2网卡上面的,然后在Load Balancer 用curl工具访问网站也是OK 的,说明LVS是正常的。
第四步:DNS,WEB,LVS都正常,肯定是机房的金盾防火墙出了问题,然后查找防火墙的日志,发现防火墙在12:39重启过,可能是由于重启后策略问题导致访问不了我们的网站。
第五步:为了节省时间,联系了金盾的技术支持,帮我们看了防火墙是不是有问题,发现有一个策略有问题(是屏蔽客户端所有ip的规则,没有查出来设置该规则的日期,可能是之前设置的策略在重启后生效了),删掉该策略一切OK。
总结:当整个网站出现问题的时候首先和领导汇报网站出了问题,最好在第一时间能确定问题出现在哪里,然后看能不能及时解决,如果解决不了的先出临时解决方案,让整个网站让用户能访问。