cloudstack私有雲監控虛擬機狀態,異常自動重啟虛擬機
阿新 • • 發佈:2019-02-02
p地址 權限 風險 list 之前 自己 idea 天都 網卡
背景:
由於某項目的虛擬機均為Windows Server,並且經常出現藍屏狀態(有的幾乎每天都需要重啟),作為該項目的運維,甲方要求春節期間每天7點進行巡檢,發現異常的及時處理。春節期間WTF,一百個不樂意,於是便有了想偷懶的念頭。
想法很簡單,就是通過ping探測,如果發現ping不通某個IP,就調用cloudstack的命令行工具去重啟機器。有了ideal之後,就可以開始行動,但是行動之前就遇到了一個問題,就是cloudstack機器網絡無法訪問虛擬機網絡,想了下,主要有以下幾種方法
1. 和甲方拿網絡權限,自己去調整網絡(甲方肯定不會同意我在網絡上做調整,而且出了問題肯定要甩鍋,風險比較大)
2. 尋找或者創建一個既能訪問cloudstack又能訪問虛擬機網絡的主機(又要創建機器,資源不一定夠)
3. 直接在host動手腳,添加vlan id和添加網卡(直接改底層,這個我喜歡)
解決方案:
1. 分析cloudstack所在網絡和需要監控虛擬機所在的Host,獲取網絡的基本信息
虛擬機所在的host,發現是用vlan820
brctl show brbond0-820 8000.b8ca3af39b53 no bond0.820 vnet11
2. 手工在cloudstack所在host機器上添加vlan接口和添加網橋
#bond0是我的物理網卡捆綁接口
vconfig add bond0 820 brctl addbr brbond0-820 brctl addif brbond0-820 bond0.820 ip link set eth0.820 up ip link set brbond0-820 up
3. 手工給cloudstack添加網卡,以及配置IP地址
virsh attach-interface cloudstack --type bridge --source brbond0-820
#這樣cloudstack就多了一個網卡,並且是連接到vlan820的網絡
登錄cloudstack,配置對應虛擬機的IP地址
4. 配置監控腳本
#重啟腳本,由於cloudmonkey重啟需要虛擬機的ID,所以要提前準備好IP和ID之間的對應關系,存放在vmlist.txt中
#!/bin/bash for ip in $(seq 2 11) 60 do j=0 for count in $(seq 3) do ping -c 3 -t 2 192.168.20.$ip ##ping3次,超時2s if [[ $? -ne 0 ]] then ((j++)) fi done if [[ $j -eq 3 ]] then vmid=$(grep "192.168.20.$ip" /server/script/vmlist.txt |awk ‘{print $1}‘) /usr/bin/cloudmonkey reboot virtualmachine id=${vmid} echo "reboot 192.168.20.${ip} in $(date +%F_%r)" >>/server/script/reboot.log fi done
#vmlist.txt內容如下
xxxx-xxxx-xxxx-xxxx 192.168.20.xx
......
總結:
1. 春節我真不想拿電腦處理重啟這種操作。。。
2. 藍屏的原因其實應該查清楚,然後把問題拋出給甲方。雖然我知道,甲方估計也沒這個能力。。。。
cloudstack私有雲監控虛擬機狀態,異常自動重啟虛擬機