阿里云國際站經銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優惠大,聯系客服飛機@jkkddd
ECS主機狀態變化事件的自動化運維
本文通過實踐案例為您介紹云監控如何通過消息服務MNS的隊列實現自動化處理ECS主機狀態變化事件。前提條件
請您確保已在消息服務MNS控制臺,創建隊列,例如:ecs-cms-event。
關于如何創建隊列,請參見創建隊列。
請您確保已在云監控控制臺,創建系統事件報警規則。
關于如何創建隊列,請參見創建系統事件報警規則。
請您確保已安裝Python依賴。
本文所有代碼均以Python 3.6為例,您也可以使用其他編程語言,例如:Java和PHP。
關于如何安裝Python SDK,請參見Python SDK安裝。
背景信息
ECS在已有的系統事件基礎上,通過云監控新發布了狀態變化類事件和搶占型實例的中斷通知事件。每當ECS主機的狀態發生變化時,都會觸發一條ECS狀態變化事件。這種變化包括您通過控制臺、OpenAPI或SDK操作導致的變化,也包括彈性伸縮或欠費等原因而自動觸發的變化,還包括因為系統異常而觸發的變化云監控提供四種事件報警處理方式,包括:消息服務隊列、函數計算、URL回調和日志服務。本文以消息服務隊列為例,為您介紹云監控自動化處理ECS主機狀態變更事件的三種最佳實踐。
操作步驟
云監控將ECS主機所有的狀態變化事件投遞到消息服務MNS,消息服務MNS獲取消息并進行消息處理。
實踐一:對所有ECS主機的創建和釋放事件進行記錄。
目前ECS控制臺無法查詢已經釋放的實例。如果您有查詢需求,可以通過ECS主機狀態變化事件將所有ECS主機的生命周期記錄在數據庫或日志服務中。每當您創建ECS主機時,會發送一個Pending事件,每當您釋放ECS主機時,會發送一個Deleted事件。
編輯一個Conf文件。
Conf文件中需要包含消息服務MNS的endpoint、阿里云的access_key和access_key_secret、region_id(例如:cn-beijing)和queue_name。
上述代碼只對MNS消息獲取的數據,調用Listener消費消息之后刪除消息。
注冊一個指定Listener消費事件。這個簡單的Listener判斷收到Pending和Deleted事件時,打印一行日志。
實際生產環境下,可能需要將事件存儲在數據庫或日志服務SLS中,方便后期的搜索和審計。
實踐二:ECS主機關機自動重啟。
在某些場景下,ECS主機會非預期的關機,您可能需要自動重啟已經關機的ECS主機。
為了實現ECS主機關機后自動重啟,您可以復用實踐一中的MNS Client,添加一個新的Listener。當您收到Stopped事件時,對該ECS主機執行Start命令。
在實際生產環境下,執行完Start命令后,可能還需要繼續接收后續的Starting、Running或Stopped等事件,再配合計時器和計數器,進行成功或失敗之后的處理。
實踐三:搶占型實例釋放前,自動從負載均衡SLB移除。
搶占型實例在釋放之前五分鐘左右,會發出釋放告警事件,您可以在這短暫的時間運行業務不中斷邏輯,例如:主動從負載均衡SLB的后端服務器中去掉這臺即將被釋放的搶占型實例,而非被動等待實例釋放后負載均衡SLB的自動處理。
您復用實踐一的MNS Client,添加一個新的Listener,當收到搶占型實例的釋放告警時,調用負載均衡SLB的SDK。
標題:阿里云國際實名賬號注冊,阿里云24h自助充值
地址:http://www.swled.com.cn/cjxw/59015.html