
我們有許多 Xen 虛擬化伺服器,全部運行 Debian 6 64 位元。我們遇到一個間歇性問題,伺服器偶爾會停止透過網路回應。發生這種情況時,我們無法 ping 伺服器,並且我們的應用程式日誌表明它無法連接到網路上的其他伺服器。
現在,這種情況已經發生在一些不同的不相關的伺服器上,唯一的共同因素是 VPS 主機和相關基礎設施、作業系統以及我們的作業系統設定。我正在與主持人跟進此事,但確實需要追根究底。
我現在真的沒什麼好做的。我能找到的與該事件同時發生的唯一作業系統日誌條目是系統日誌中的一行:
Nov 21 19:36:10 xxxxxx ntpd[2460]: xxxx:4f8:xxx:xxx:1:2:3:4 interface xxxx:7e00::xxxx:91ff:xxxx:1bd4 -> (null)
但我認為這是網路連線中斷的結果,而不是原因的線索。
來自工作伺服器的 MTR 報告沒有顯示任何有用的信息。
所以,我應該如何嘗試了解這裡發生的事情? 是否有任何我不知道應該檢查的網絡特定日誌?
謝謝你!
答案1
我假設您無權存取 VPS 主機,並且只能從虛擬機器內部進行偵錯。所以這就是我要做的事。
我會嘗試找出損壞發生的位置 - 是在虛擬機器和主機之間、虛擬機器和網關之間還是在您的提供者網路內的某個位置。
設定一個腳本來 ping 您的第一跳 - 即您的網關。如果在同一廣播域內有其他虛擬機,您可以 ping 它們而不是 GW。你可以運行 screen/tmux 並將 ping 留在裡面:
$ ping IP_OF_GW_OR_OTHER_VM | tee -a mytest.log
當發生斷電時,如果網關仍然存在且 ping 通暢,那麼問題就會被徹底解決。在這種情況下,請執行追蹤路由並 ping 接下來的 2-3 個躍點,直到找出中斷發生的位置。如果網關立即不可用,則可以設定 cron,在發生中斷時拍攝網路資訊的快照:
ping -c 3 gateway
if [ $? -ne 0 ]; then
ifconfig eth0 2>&1 >> /tmp/ifconfig-$(date +"%Y-%m-%d_%H:%M").log
ethtool eth0 >> /tmp/ethtool-$(date +"%Y-%m-%d_%H:%M").log
fi
如果您覺得您也需要這些信息,您可以使用正常運行時間(以獲取當前負載)lsof 或 netstat 等附加資訊來擴展腳本。
有時,客人 dhclient 會斷開連接或無法續訂租約,因此在中斷期間收集的任何資訊都會有所幫助。