在微軟私有云解決方案裏,System Center是重要一環。System Center的各大組件類似於三權分立:SCSM是立法和審判機構(服務請求與審覈),SCOM是監察機構(監控數據中心的性能和事件),而Orchestrator則是執法機構(負責驅動底層的組件)。
在盆盆錄製的這段視頻裏,描述了這樣一段場景,分佈式應用的Web前端過載時,會觸發runbook新建變更請求;領導批准後,會觸發另一個runbook,或者新建結點以橫向擴展/或者啓動池中可用的節點,以應對業務系統訪問量暴漲。
其中最關鍵的地方就是Orchestrator的Runbook,它可以根據SCOM監控的性能警報自動執行復雜的操作,以下是視頻中所示的runbook。
由於視頻裏所示的demo相對複雜,需要引入SCSM,所以該runbook中的初始化數據和更新RB活動這兩個Activity都和SCSM有關。
爲方便描述,我們將該runbook略作修改,如附圖所示:
該runbook可以實現的功能如下:
- 從SCOM中獲取Web前端的報警
- 根據SCOM警報中的源虛機名稱,得出其所在的計算機層的名稱
- 在該計算機層中,尋找是否有未啓動的虛機
- 如果有,則啓動該虛機
- 如果沒有,則對該計算機層執行scale-out
這裏着重描述幾個關鍵的Activity(括號內是來自VMM IP中的實際Activity Name):
獲取Web層信息(Get Tier)
根據Member VM Instance Names來倒推計算機層的名稱,如附圖所示:
其中的Value採用了Orchestrator獨特的所謂databus的技術,我們可以右鍵單擊,選擇訂閱前幾個Activity所發佈的數據。在活動一欄,選擇第一個Activity(監控Web前端報警),然後選擇其所發佈的數據NetbiosComputerName。這表明我們根據SCOM警報中顯示的源計算機的名稱,來查詢其計算機層的名稱。這樣我們就無需在runbook裏採用硬編碼,而根據前面Activity發佈的動態數據作爲變量,十分方便。
Web層有否未啓動VM(Get VM)
查到該虛機所在Web層名稱,就可以查詢該計算機層中是否有未啓動的虛機。
查詢參數有兩個:Comuter Tier和Status,表示所在的計算機層和運行狀態。返回同時滿足這兩個條件的虛機。
其中Computer Tier的值可以訂閱前一個Activity(獲取Web層信息)發佈在Databus上的數據(Tier Name)。
Status的值可以選擇正在運行(注意中文版的VMM,必須輸入正在運行,英文版的話,應該選擇running)。
判斷分支
如果實現後續的判斷分支?我們無需編寫代碼(儘管runbook可以直接使用powershell或者代碼)。我們別小看活動之間的連接線(smart link),這些連接線也可以進行自定義!
例如當Web層有否未啓動VM返回空值時(下方的分支),我們將連接線的屬性值配置爲返回對象數等於0。
在包括部分,單擊添加,然後設置已發佈數據爲Number of Objects。
設置條件表達式爲等於。數據值可以填0。
同理設置上方的分支爲Number of Objects大於0
發送電子郵件
Runbook執行成功後,會自動發送電子郵件,報告給指定的人員,告知哪臺虛機發生性能問題,並且已經執行了解決措施。
更有意思的是,郵件正文裏涉及到的故障主機,也可以訂閱databus上的數據!