場景
有同事從公司寄了一台服務器到現場,用來安裝數據庫、緩存等組件供開發使用。到了之后,連接電源、網線,設置IP,用vSphere Client遠程連接沒問題。開了兩個虛擬機,給他們遠程用。大概就是創建幾個虛擬機,安裝一整套的管理平台和組件。等到晚上,跟我說很卡,服務器上的應用網頁總是打不開,讓我用本機幫他們弄一下,結果我這邊也一直打不開,然后ping了一下,發現延遲很高,丟包也很嚴重。
思路
懷疑有兩種可能:
- 虛擬機壓力太大,反應不過來。有兩台虛擬機的內存已經爆了,在用swap了,而那三台虛擬機上的應用是相互關聯的
- 網絡問題。服務器是連在一個交換機上,而電腦是通過一個路由器連上交換機,之前使用過程中網絡就經常有問題,而且路由器用的人很多,可能是路由器抗不住了。
解決過程
提升虛擬機配置
主要是加大了內存,然后重啟虛擬機和應用,沒有區別。
直連交換機
將電腦直接連上交換機,還是很卡,ping一直丟包。
期間,同事通過虛擬機,修改了服務器上虛擬機的掩碼為0.0.0.0,導致整個網絡掛了,然后我還信誓旦旦說不是我,很尷尬。
最終解決方案
上面兩種方法都不行,后面ping宿主機,發現網絡正常。只能懷疑宿主機到虛擬機,或者虛擬機配置有問題。檢查了一下虛擬機的ip配置(/etc/sysconfig/network-scripts/ifcfg-ens160),發現所有虛擬機的UUID都相同。同事直接復制了多台,只修改了IP,沒有修改UUID,UUID沖突了。
解決步驟:
- 生產UUID。
uuidgen
- 復制UUID,修改配置文件(/etc/sysconfig/network-scripts/ifcfg-ens160)中的UUID。
- 重啟網絡。
systemctl restart network
由於虛擬機上有docker服務,所以還要重啟docker服務,否則docker的網絡無法使用。
總結
其實這個問題之前創建虛擬機的時候遇到過,解決方法也是一樣的,那會是虛擬機直接連接不上,而這次卻可以連接,只是會經常丟包。剛開始沒能想到這個問題,對於CentOS的網絡方面還是不了解。
對於UUID也不熟悉,網上也沒找到相關信息,猜測為類似MAC地址之類的東西,交換機上記錄了UUID和IP,使用的時候,幾台虛擬機之間的包都是混亂的。
有哪里說錯了,或者有什么指教,請在評論區探討,謝謝。