在cloudstack4.5.2版本下,偶爾出現libvirtd服務無響應的情況,導致virsh命令無法使用,同時伴隨cloudstack master丟失該slave主機連接的情況。最初懷疑是libvirtd服務或版本的問題,經過分析和排查最終確定是cloudstack-agent的問題。但是在官網上并沒有找到類似的bug提交,該問題可能還存在于更高的版本,需要時間進一步從根本上分析。下面是該問題的處理過程,在此記錄下,關注和使用cloudstack的朋友可以參考。
眾所周知,cloudstack的社區熱度遠不如openstack,為什么還要選擇clcoudstack?這個問題以后有機會再和大家聊。言歸正傳。
環境交代
宿主機操作系統:centos6.5x64(2.6.32-431.el6.x86_64)
cloudstack版本:4.5.2libvirt版本:libvirt-0.10.2-54.el6_7.2.x86_64問題描述
通過cloudstackapi listHosts報警信息顯示:
node5.cloud.rtmap:192.168.14.20 state is Down at 2016-05-13T07:19:04+0800#有關cloudstackapi的使用方法在其它文章中總結,不在此處說明。登陸問題宿主服務器檢查:
[root@node5 log]#virsh list --all
沒有響應ctrl^c退出
這時的vm可以正常工作,但處于失控狀態
嘗試重啟啟動libvirtd服務:
[root@node5 log]# service libvirtd stop
正在關閉 libvirtd 守護進程: [失敗] #無法關閉libvirtd服務
嘗試重啟啟動cloudstack-agent服務:
[root@node5 libvirt]# service cloudstack-agent restartStopping Cloud Agent: Starting Cloud Agent:
libvirtd故障依舊
簡單維護
[root@node5 ping]# libvirtd -d -l --config /etc/libvirt/libvirtd.conf
libvirtd:錯誤:Unable to initialize network sockets。查看 /var/log/messages 或者運行不帶 --daemon 的命令查看更多信息。
[root@node5 log]# libvirtd -d
可以執行成功,這時執行virsh list --all 可以查看和操作vm
[root@node5 log]#virsh list --allId 名稱 狀態---------------------------------------------------- 2 i-4-185-VM running
雖然vm運行正常,現在也可以通過命令正常管理了。但是對于cloudstack平臺而言,宿主機處于down狀態,vm處于失控狀態。
臨時解決辦法是在其它大的升級和維護過程中重啟服務器解決,根本解決還要具體問題具體分析。
分析與排查
檢查進程
[root@node5 log]# ps ax |grep libvirtd 6485 ? R 863:37 libvirtd --daemon -l #該服務始終處于run狀態
[root@node5 log]# top -p 6485top -p 6485top - 09:19:41 up 12 days, 22:27, 1 user, load average: 3.05, 5.07, 6.64Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombieCpu(s): 4.8%us, 1.4%sy, 0.0%ni, 93.1%id, 0.6%wa, 0.0%hi, 0.1%si, 0.0%stMem: 264420148k total, 182040780k used, 82379368k free, 834232k buffersSwap: 8388600k total, 92k used, 8388508k free, 100453708k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6485 root 20 0 984m 12m 4440 R 100.2 0.0 844:22.68 libvirtd #cpu占用100%,無法釋放,影響系統穩定性
新聞熱點
疑難解答