事故描述:公司的一個內部業務系統由於程式bug,導致系統崩潰,需要強制重啟伺服器。系統重啟後,趕緊將業務程式啟動。隨後發現/etc/resolv.conf檔案的DNS地址被修改成了預設地址。發現之後,隨即修改為線上環境下專門的內網DNS地址。
事故反饋:業務部門反饋系統使用異常。
事故排查:
1)檢視呼叫介面的日誌資訊,發現異常資訊:
[root@kevin-app ~]# tail -10000 /data/applog/20180416/timsserver.log ......... kevin介面呼叫異常: kevin-app.haha.cn
2)排查系統業務日誌:
[root@kevin-app ~]# tail -10000 /data/master/kevin-log.log ...... java.net.UnknownHostException: kevin-app.haha.cn
通過上面的日誌可知,系統在呼叫介面的時候,跟kevin-app.haha.cn域名通訊失敗!
但是線上上機器ping或telnet這個域名都是通的!
[root@kevin-app ~]# ping kevin-app.haha.cn PING kevin-app.haha.cn (192.168.11.25) 56(84) bytes of data. 64 bytes from kevin-app.haha.cn (192.168.11.25): icmp_seq=1 ttl=62 time=0.276 ms 64 bytes from kevin-app.haha.cn (192.168.11.25): icmp_seq=2 ttl=62 time=0.186 ms ^C --- kevin-app.haha.cn ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1427ms rtt min/avg/max/mdev = 0.186/0.231/0.276/0.045 ms
[root@kevin-app ~]# telnet kevin-app.haha.cn 80 Trying 192.168.11.25... Connected to kevin-app.haha.cn. Escape character is '^]'.
最後發現真正原因:
當將/etc/resolv.conf檔案中DNS修改為線上環境的內網DNS地址後,需要重啟業務程式才生效!
這也就可以解釋:為什麼之前修改DND地址後,本地能ping通或telnet kevin-app.haha.cn也通,但是介面呼叫不通。
正確操作是:先修改/etc/resolv.conf中的DNS地址;然後重啟業務程式(tomcat程式),重啟後,才能跟呼叫的域名kevin-app.haha.cn域名連通!
臨時修改方法:
在/etc/hosts中繫結kevin-app.haha.cn域名:
[root@kevin-app ~]# cat /etc/hosts 192.168.11.25 kevin-app.haha.cn