【GCP手把手教學】VM 日常維運篇 Schedule VM to start and stop

繼先前的 GCE 日常維運篇 - patch update,這篇要來介紹如何讓 GCE VM 定時自動開關機(Schedule VM to start and stop)。自動開關機的好處之一就是可以節省機器費用,尤其是 Windows Server 的機器費用又更高,因此若能針對可以暫停服務的 VM 設定定時自動開關機,將能省去不少維運時間以及花費!

以下將介紹 GCE 內建的「執行個體排程」來達到定時自動開關機的方法,目前 Google Compute Engine 有「執行個體排程」的功能,透過 Cloud Console、gcloud 命令或 API 來啟動和停止 VM。在此之前的解決方案是透過 Cloud Scheduler 搭配 Pub/Sub 及 Cloud Functions 的解決方案來達成,若需要此方案歡迎參考文章結尾第二個連結。

確認「必要權限」

  • 在進行 VM 開關機設定前,需要先注意兩部分權限設定:

一個是要建立執行個體排程,使用者必須要有 compute.resourcePolicies.create 權限;第二個是 Compute Engine Service Agent 是否有 compute.instances.start 及 compute.instances.stop 兩個權限對執行個體進行開關機,若尚未有以上兩個權限,可以授予 IAM 角色: Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)

  • 以下是當 Compute Engine Service Agent 權限不夠時,會出現錯誤的範例:
icon/enlarge

由於 Compute Engine Service Agent 實際上為 Google 擁有,除非您選擇 Google 提供的角色授權(請參考下圖右上方),否則此帳戶在控制台的 IAM 頁面中是隱藏的。解開封印後即可針對 Compute Engine Service Agent 添加角色權限。

icon/enlarge

另外要提醒使用者,如果在新增執行個體排程後取消這些權限,您的執行個體排程可能會停止工作,並且不會額外通知;另外,要確認您的執行個體排程是否成功執行,您應該定期檢查稽核日誌。

建立執行個體排程

1. 在 Cloud Console 中導覽到 Compute Engine 頁面,點選「建立排程」

icon/enlarge

2. 開啟「建立新排程」的視窗,依序填入排程名稱、區域、開始與結束的時間點、時區、排程的起始與結束日期、頻率則包括每天、每周或每月執行等。這裡要注意的是,您只能將執行個體排程附加到位於同一區域的 VM 執行個體。

執行個體排程的 VM 執行個體可能會需要超過排程時間 15 分鐘才會開始啟動或停止操作。如果您需要 VM 執行個體在特定時間啟動或停止,請提前 15 分鐘安排,並確保每次啟動和停止操作至少相隔 15 分鐘。另外,如果省略填寫起始日期或結束日期中,排程就會立即生效。

icon/enlarge

3. 您也可以切換到 Cron 運算式,來進行較為複雜的排程,其他選填項目則同上。

icon/enlarge

4. 排程建立完成後,您將無法修改排程內容,如需調整內容,請移除並刪除現有排程,再建立並附加新的排程到 VM 執行個體。建立排程後的下一步,便是點選該排程將執行個體新增至排程,選擇您要套用排程的 VM 執行個體(記得每個 VM 執行個體只能套用一個排程!)

icon/enlarge

稽核日誌

執行個體排程建立完成後,有兩個位置可以確認排程的執行狀態。首先,您可以在 Cloud Console 查看 Cloud Logging,在查詢條件中透過輸入過濾語法:resource.type="gce_instance" 查看 VM 是否有確實在指定的時間點內進行開關機的紀錄。

icon/enlarge

第二種方法則是在 Compute Engine 內部設定的「作業」頁面,可以透過篩選針對目標、使用者、狀態等來查找紀錄。

icon/enlarge
訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。