系統重啟後DNS地址預設修改修改引起的一次事故(Tomcat報錯:java.net.UnknownHostException)

散盡浮華發表於2018-04-17

 

事故描述:公司的一個內部業務系統由於程式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

相關文章