1. 程式人生 > >cloudstack私有雲監控虛擬機狀態,異常自動重啟虛擬機

cloudstack私有雲監控虛擬機狀態,異常自動重啟虛擬機

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私有雲監控虛擬機狀態,異常自動重啟虛擬機