依據時間表調度資源

您可以根據排程自動調度資源,在預期負載出現前預先排定容量,提高工作負載的可用性。如果您在代管執行個體群組 (MIG) 上執行工作負載,可以針對週期性負載模式和一次性事件,排定所需數量的虛擬機器 (VM) 執行個體。如果工作負載需要較長的初始化時間,且您希望在預期的負載高峰前水平擴展,請使用自動調度資源排程。

本文說明如何建立、列出、編輯、停用、重新啟用及刪除現有 MIG 的資源調度排程。如要進一步瞭解 MIG 和自動調度資源,請參閱「建立代管執行個體群組」和「自動調度執行個體群組資源」。

事前準備

  • 請參閱自動配置器的基本概念。
  • 如果尚未設定驗證,請先完成設定。驗證可確認您的身分,以便存取 Cloud de Confiance by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,您不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • Terraform

    如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。

    1. 安裝 Google Cloud CLI。

    2. 設定 gcloud CLI,使用您的聯合身分。

      詳情請參閱「 使用聯合身分登入 gcloud CLI」。

    3. 為使用者帳戶建立本機驗證憑證:

      gcloud auth application-default login

      如果系統傳回驗證錯誤,請確認您已 使用聯合身分登入 gcloud CLI。

    詳情請參閱「 設定本機開發環境的驗證機制」。

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」。

限制

調度時間表會受到所有自動調度程式的限制,以及下列限制:

  • 每個 MIG 最多可有 128 個調度資源排程。如要解決這項限制,請刪除狀態為「OBSOLETE」且您不打算再次執行的調度排程。
  • 縮放時間表的最短時間為 5 分鐘。

建立資源調度時間表

每個 MIG 最多可建立 128 個資源調度排程。詳情請參閱「調整縮放時間表設定」。

以下說明如何建立 MIG 的資源調度排程。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「群組大小和自動調度」展開該部分。

  5. 如果沒有自動調度資源設定,請按一下「設定自動調度資源功能」。

    根據預設,自動調度資源設定會根據 CPU 使用率新增信號。如果只想根據排程調度 MIG 資源,請在新增排程後刪除預設的 CPU 使用率指標。

  6. 在「自動調整規模時間表」部分,按一下「管理」。

  7. 在「Scaling schedules」(調度資源排程) 窗格中,針對要新增的每個調度資源排程執行下列操作:

    1. 按一下「建立排程」。
    2. 在「建立縮放排程」窗格中,輸入「名稱」。
    3. 選用:輸入說明。
    4. 輸入排程運作時提供的所需執行個體數量下限。
    5. 如要指定縮放排程的開始時間和週期,可以使用預設介面。您也可以使用 cron 運算式,設定開始時間和週期較複雜的排程。請按照下列步驟操作,視您要如何設定而定:

      • 預設介面

        1. 在「Start time」(開始時間) 欄位中,以 HH:MM AM/PM 格式輸入開始時間,例如 09:00 AM。

        2. 按一下「時區」欄位。選取國家/地區,然後選取時區。

          您可以使用「依國家/地區搜尋」欄位,尋找國家/地區或時區。舉例來說,輸入 Australia/australian central 即可尋找澳洲中部標準時區。

        3. 在「時間長度」和「時間單位」欄位中,輸入時間長度並選取對應的時間單位。

        4. 在「Recurrence」(週期) 欄位中,選取排程的重複頻率。

          你可以選擇「一次」或「每天」。如要指定排程僅在特定日期重複,請選擇「每週」或「每月」。選取其中一個選項後,請使用其他清單選取時間表開始的星期或月份。

      • Cron 運算式

        1. 如要啟用,請點選「使用 CRON 運算式」切換鈕。

        2. 在「CRON expression」(CRON 運算式) 欄位中,輸入指定開始時間和週期性的 cron 運算式。

        3. 按一下「時區」欄位。選取國家/地區,然後選取時區。

          您可以使用「依國家/地區搜尋」欄位,尋找國家/地區或時區。舉例來說,輸入 Australia/australian central 即可尋找澳洲中部標準時區。

        4. 在「時間長度」和「時間單位」欄位中,輸入時間長度並選取對應的時間單位。

    6. 按一下 [儲存]。「Scaling schedules」(資源調度排程) 窗格會列出您建立的排程。

  8. 建立完時間表後,按一下「完成」。

    排程會儲存並套用至 MIG。

  9. 按一下「儲存」即可離開編輯頁面。

gcloud

如要為沒有現有自動調度資源政策的 MIG 新增資源調度排程,請使用 gcloud compute instance-groups managed set-autoscaling 指令。

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
    [--min-num-replicas=MIN_NUM_REPLICAS] \
    --max-num-replicas=MAX_NUM_REPLICAS \
    --set-schedule=SCHEDULE_NAME \
    --schedule-cron="CRON_EXPRESSION" \
    --schedule-duration-sec=DURATION \
    [--schedule-time-zone="TIME_ZONE"] \
    --schedule-min-required-replicas=MIN_REQ_REPLICAS \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

如要為設有現有自動調度資源政策的 MIG 新增資源調度排程,請使用 gcloud compute instance-groups managed update-autoscaling 指令。

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    [--min-num-replicas=MIN_NUM_REPLICAS] \
    [--max-num-replicas=MAX_NUM_REPLICAS] \
    --set-schedule=SCHEDULE_NAME \
    --schedule-cron="CRON_EXPRESSION" \
    --schedule-duration-sec=DURATION \
    [--schedule-time-zone="TIME_ZONE"] \
    --schedule-min-required-replicas=MIN_REQ_REPLICAS \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

更改下列內容:

  • MIG_NAME:現有自動調度資源政策的 MIG 名稱。
  • MIN_NUM_REPLICAS:選用:這個 MIG 必須有的執行個體數量下限。Google 建議將這個值設為沒有任何擴充排程時,所需的執行個體數量下限。如要將 MIG 中的執行個體數量縮減為零,請將這個值設為 0,並確保符合必要條件。
  • MAX_NUM_REPLICAS:這個 MIG 最多可提供的執行個體數量。如果 MIG 設有現有的自動調度資源政策,則為選用。
  • SCHEDULE_NAME:新 調度排程的名稱。
  • CRON_EXPRESSION:這個排程的開始時間和重複頻率,格式為 Cron 運算式。
  • DURATION:這個時間表的持續時間,以秒為單位。
  • TIME_ZONE:選用:排程開始時間的 IANA 時區,例如 Europe/Paris。預設值為 UTC。
  • MIN_REQ_REPLICAS:此時間表處於啟用狀態時提供的最低必要執行個體數量。
  • DESCRIPTION:選用:新縮放時間表的說明。
  • ZONE 或 REGION:選用:MIG 所在的可用區或區域。

您可以建立只執行一次或定期重複執行的排程。

重複排程

這個範例指令會建立重複執行的時間表。 這項排程指定 MIG 在每週一、週二、週三、週四和週五的上午 8:30 到下午 5 點 (世界標準時間),至少要有 10 個 VM 執行個體。這個指令也會使用 --min-num-replicas 和 --max-num-replicas 旗標,將所選 MIG 所有自動調度資源信號的執行個體數量下限更新為 0,執行個體數量上限更新為 30。這個指令假設您已有名為 example-mig 的 MIG,且該 MIG 設有自動調度資源政策。

gcloud compute instance-groups managed update-autoscaling example-mig \
    --min-num-replicas=0 \
    --max-num-replicas=30 \
    --set-schedule=workday-capacity \
    --schedule-cron="30 8 * * Mon-Fri" \
    --schedule-duration-sec=30600 \
    --schedule-min-required-replicas=10 \
    --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"

一次性排程

這個範例指令會建立只執行一次的時間表。這項排程指定您希望 MIG 在 2030 年 1 月 30 日全天,至少包含 30 個 VM 執行個體 (America/New_York時區)。這項指令假設您已有名為 example-mig 的 MIG,該 MIG 位於 us-east1-b,且已有自動調度資源政策。

gcloud compute instance-groups managed update-autoscaling example-mig \
    --set-schedule=example-onetime-schedule \
    --schedule-cron="0 0 30 1 * 2030" \
    --schedule-duration-sec=86400 \
    --schedule-time-zone="America/New_York" \
    --schedule-min-required-replicas=30 \
    --schedule-description="Schedule a minimum of 30 VMs all day for January 30, 2030" \
    --zone=us-east1-b

Terraform

如要為 MIG 新增資源調度排程,請使用 google_compute_autoscaler 資源。

resource "google_compute_autoscaler" "default" {
  provider = google-beta
  name     = "my-autoscaler"
  zone     = "us-central1-f"
  target   = google_compute_instance_group_manager.default.id

  autoscaling_policy {
    max_replicas    = 5
    min_replicas    = 1
    cooldown_period = 60

    scaling_schedules {
      name                  = "every-weekday-morning"
      description           = "Increase to 2 every weekday at 7AM for 12 hours."
      min_required_replicas = 2
      schedule              = "0 7 * * MON-FRI"
      time_zone             = "America/New_York"
      duration_sec          = 43200
    }
  }
}

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

REST

如要為代管執行個體群組:MIG 建立設有資源調度排程的自動配置器,請使用可用區代管執行個體群組:MIG 的 autoscalers.insert 方法,或是區域代管執行個體群組:MIG 的 regionAutoscalers.insert 方法。

如要為沒有現有自動調度資源政策的可用區 MIG 建立排程,請發出下列呼叫:

POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/autoscalers/

{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "minNumReplicas": MIN_NUM_REPLICAS,
    "maxNumReplicas": MAX_NUM_REPLICAS,
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

如要為已有自動調度資源政策的 MIG 建立排程,請對可用區 MIG 使用 autoscalers.patch 方法,或對區域 MIG 使用 regionAutoscalers.patch 方法。

舉例來說,如要為現有自動調度資源政策的可用區 MIG 建立排程,請發出下列呼叫:

PATCH https://compute.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "minNumReplicas": MIN_NUM_REPLICAS,
    "maxNumReplicas": MAX_NUM_REPLICAS,
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

更改下列內容:

  • PROJECT:您的專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:現有自動配置器的名稱。這通常與 MIG 的名稱相同。
  • MIN_NUM_REPLICAS:選用:這個 MIG 必須有的執行個體數量下限。Google 建議將這個值設為沒有資源調度排程時所需的執行個體數量下限。如要將 MIG 中的執行個體數量縮減為零,請將這個值設為 0,並確保符合必要條件。
  • MAX_NUM_REPLICAS:這個 MIG 最多可提供的執行個體數量。如果 MIG 已有自動調度資源政策,則可視需要提供。
  • SCHEDULE_NAME:新縮放時間表的名稱。
  • MIN_REQ_REPLICAS:此時間表處於啟用狀態時提供的最低必要執行個體數量。
  • CRON_EXPRESSION:這項排程的開始時間和週期,格式為 cron 運算式。
  • TIME_ZONE:選用:排程開始時間的 IANA 時區,例如 Europe/Paris。預設值為 UTC。
  • DURATION:這項排程的有效時間長度 (以秒為單位)。
  • DESCRIPTION:選用:新縮放時間表的說明。

您可以建立一次性或週期性排程。

重複排程

以下範例 API 呼叫會建立重複執行的排程。這項排程指定在每週一、二、三、四和五,世界標準時間 (UTC) 上午 8:30 到下午 5:00 之間,區域 MIG 至少要包含 10 個 VM 執行個體。這項 API 呼叫也會使用 minNumReplicas 和 maxNumReplicas 欄位,將所選 MIG 的所有自動調度資源訊號,更新為執行個體數量下限為 0,執行個體數量上限為 30。這項 API 呼叫假設您有名為 example-project 的現有專案,其中包含位於 us-east1-b 的區域性代管執行個體群組:MIG,且具有名為 example-autoscaler 的自動配置器,以及現有的自動調度資源政策。

PATCH https://compute.s3nsapis.fr/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "minNumReplicas": 0,
    "maxNumReplicas": 30,
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      }
    }
  }
}

如要將這個範例用於區域性 MIG,請使用 regionAutoscalers.patch 方法提出類似要求,並指定區域而非可用區。

一次性排程

這個 API 呼叫範例會建立只執行一次的時間表。 這項排程指定您希望區域 MIG 在 2030 年 1 月 30 日全天,都包含至少 30 個 VM 執行個體 (以 America/New_York 時區為準)。這項 API 呼叫假設您已有專案 example-project,其中包含位於 us-east1-b 的可用區 MIG,且該 MIG 有名為 example-autoscaler 的自動配置器,並已套用自動調度資源政策。

PATCH https://compute.s3nsapis.fr/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "example-onetime-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    }
  }
}

如要將這個範例用於區域性 MIG,請使用 regionAutoscalers.patch 方法提出類似要求,並指定區域而非可用區。

多個時間表

這個 API 呼叫範例會使用 autoscalers.patch 方法,在單一呼叫中為兩個時間表 (workday-capacity 和 january-30-2030-schedule) 建立時間表。這項 API 呼叫假設您已有一個名為 example-project 的專案,其中包含位於 us-east1-b 的可用區 MIG,以及名為 example-autoscaler 的自動配置器,且該自動配置器具有現有的自動調度資源政策。

PATCH https://compute.s3nsapis.fr/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    }
  }
}

如要將這個範例用於區域性 MIG,請使用 regionAutoscalers.patch 方法提出類似要求,並指定區域而非可用區。

建立排程後,您可能需要等待幾分鐘,才能查看狀態資訊。

列出資源調度時間表

您可以查看 MIG 的排程清單。清單會顯示每個排程的設定和狀態資訊。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

    在「總覽」分頁中,「自動調度資源」設定方塊會顯示在 MIG 中設定的信號。

  3. 將指標懸停在信號資訊旁的 圖示上,然後按一下「管理」。

    「縮放時間表」窗格會顯示現有縮放時間表的清單。

gcloud

如要取得 MIG 的詳細資料,包括擴充排程的設定和狀態,請使用 gcloud compute instance-groups managed describe 指令。

gcloud compute instance-groups managed describe MIG_NAME \
    [--zone=ZONE | --region=REGION]

更改下列內容:

  • MIG_NAME:現有自動調度資源政策的 MIG 名稱。
  • ZONE 或 REGION:選用:MIG 所在的可用區或區域。

輸出內容會列出 MIG 的所有縮放時間表,如下列範例所示。

...
autoscalingPolicy:
  ...
  maxNumReplicas: 30
  minNumReplicas: 0
  ...
  scalingSchedules:
    example-onetime-schedule:
      description: Schedule a minimum of 30 VMs all day for January 30, 2030
      disabled: false
      durationSec: 86400
      minRequiredReplicas: 30
      schedule: 0 0 30 1 * 2030
      timeZone: America/New_York
    workday-capacity:
      description: Have at least 10 VMs every Monday through Friday from 8:30
        AM to 5 PM UTC
      disabled: false
      durationSec: 30600
      minRequiredReplicas: 10
      schedule: 30 8 * * Mon-Fri
      timeZone: UTC
...
scheduledScalingStatus:
    example-onetime-schedule:
        state: READY
        nextStartTime: '2030-01-30T00:00:00.000-05:00'
        lastStartTime: ''
    workday-capacity:
        state: READY
        nextStartTime: '2020-11-04T08:30:00.000-00:00'
        lastStartTime: '2020-11-03T08:30:00.000-00:00'
...

REST

如要取得自動調度資源器的詳細資料,包括調度時間表的設定和狀態,請使用區域 MIG 的 autoscalers.get 方法,或區域 MIG 的 regionAutoscalers.get 方法。

舉例來說,請發出下列呼叫,列出已有自動調度資源政策的可用區 MIG 排程:

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/autoscalers/AUTOSCALER_NAME

更改下列內容:

  • PROJECT:您的 專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:現有自動配置器的名稱。通常與 MIG 名稱相同。

輸出內容會列出 MIG 的所有縮放時間表,如下列範例所示。

{
  ...
  "autoscalingPolicy": {
    ...
    "minNumReplicas": 0,
    "maxNumReplicas": 30,
    ...
    "scalingSchedules": {
      "example-onetime-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030",
        "disabled": false
      },
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "timeZone": "",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC",
        "disabled": false
      },
      ...
    }
  },
  "scheduledScalingStatus": {
    "example-onetime-schedule": {
      "state": "READY",
      "nextStartTime": "2030-01-30T00:00:00.000-05:00",
      "lastStartTime": ''
    },
    "workday-capacity": {
      "state": "READY",
      "nextStartTime": "2020-11-04T08:30:00.000",
      "lastStartTime": "2020-11-03T08:30:00.000"
    },
    ...
  },
...
}

編輯資源調度排程

您可以編輯現有的縮放時間表,變更時間表的任何設定,但無法變更時間表名稱。您也可以停用或重新啟用縮放時間表。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「群組大小和自動調度」展開該部分。

  5. 在「自動調整規模時間表」部分,按一下「管理」。

    「Scaling Schedules」(調度資源排程) 窗格會顯示現有調度資源排程的清單。

  6. 找出要編輯的縮放時間表,勾選對應的核取方塊。

  7. 在「Scaling Schedules」(縮放時間表) 窗格頂端,按一下「Edit」(編輯)。

  8. 在「編輯縮放排程」窗格中,修改要變更的欄位。如要進一步瞭解每個欄位,請參閱「建立縮放時間表」。

  9. 完成後,請按一下「儲存」。

    變更可能需要幾分鐘才會生效。 按一下「Scaling Schedules」(調度資源排程) 窗格頂端的 「Refresh」(重新整理),即可監控排程狀態。

  10. 按一下「完成」,關閉「縮放時間表」窗格。

    系統會儲存排程變更,並套用至 MIG。

  11. 按一下「儲存」即可離開編輯頁面。

gcloud

如要更新現有的資源調度排程,請使用 gcloud compute instance-groups managed update-autoscaling 指令。使用 --update-schedule 旗標,指出要更新的時間表名稱。視變更需要加入其他旗標。

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --update-schedule=SCHEDULE_NAME \
    [--schedule-cron="CRON_EXPRESSION"] \
    [--schedule-duration-sec=DURATION] \
    [--schedule-time-zone="TIME_ZONE"] \
    [--schedule-min-required-replicas=MIN_REQ_REPLICAS] \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

更改下列內容:

  • MIG_NAME:具有現有擴充時間表的 MIG 名稱。
  • SCHEDULE_NAME:現有縮放時間表的名稱。
  • CRON_EXPRESSION:選用:這個排程的新開始時間和週期,格式為 cron 運算式。
  • DURATION:(選用) 這項時間表的新持續時間,以秒為單位。
  • TIME_ZONE:選用:排程開始時間的新 IANA 時區,例如 Europe/Paris。預設值為 UTC。
  • MIN_REQ_REPLICAS:(選用) 這個時間表在啟用時提供的最低必要執行個體數量。
  • DESCRIPTION:選用:縮放時間表的全新說明。
  • ZONE 或 REGION:選用:MIG 所在的可用區或區域。

REST

如要更新 MIG 的現有資源調度排程,請使用可用區 MIG 的 autoscalers.patch 方法,或區域 MIG 的 regionAutoscalers.patch 方法。

舉例來說,如要編輯可用區 MIG 的排程,且該 MIG 已有自動調度資源政策,請發出下列呼叫:

PATCH https://compute.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

更改下列內容:

  • PROJECT:您的 專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:現有自動配置器的名稱。這通常與 MIG 的名稱相同。
  • SCHEDULE_NAME:現有縮放時間表的名稱。
  • MIN_REQ_REPLICAS:選用:這項排程啟用時,提供的最低必要執行個體數量。
  • CRON_EXPRESSION:選用:這個排程的新開始時間和重複頻率,格式為 cron 運算式。
  • TIME_ZONE:選用:排程開始時間的新 IANA 時區,例如 Europe/Paris。預設值為 UTC。
  • DURATION:(選用) 這項時間表的新持續時間,以秒為單位。
  • DESCRIPTION:選用:縮放時間表的全新說明。

停用及重新啟用資源調度排程

擴充排程預設為啟用。如要避免時間表處於啟用狀態,但想儲存設定,請停用時間表。如要再次使用已停用的時間表,請重新啟用。

如果不需要儲存排程,或已達到這個 MIG 的 128 個排程上限,請刪除排程。如要停用 MIG 的自動調度資源功能,請關閉自動調度資源功能。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「群組大小和自動調度」展開該部分。

  5. 在「自動調整規模時間表」部分,按一下「管理」。

    「Scaling Schedules」(資源調度排程) 窗格會顯示現有的資源調度排程清單。

    1. 找出要停用或啟用的資源調度時間表,然後勾選對應的核取方塊。

      • 如要停用所選排程,請按照下列步驟操作:

        1. 按一下「Scaling Schedules」(調度資源排程) 窗格頂端的 「Disable」(停用)。
        2. 在「停用時間表」對話方塊中,按一下「停用」。
      • 如要啟用所選排程,請按照下列步驟操作:

        1. 在「縮放時間表」窗格頂端,按一下 「啟用」。
        2. 在「啟用排程」對話方塊中,按一下「啟用」。

      變更可能需要幾分鐘才會生效。 如要監控排程狀態,請按一下「Scaling Schedules」(調度資源排程) 窗格頂端的 「Refresh」(重新整理)。

    2. 按一下「完成」,關閉「縮放時間表」窗格。

      系統會儲存排程變更,並套用至 MIG。

  6. 按一下「儲存」即可離開編輯頁面。

gcloud

如要停用或重新啟用縮放時間表,請使用 gcloud compute instance-groups managed update-autoscaling 指令。

停用資源調度排程

如要停用縮放時間表,請使用 --disable-schedule 旗標。

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --disable-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

更改下列內容:

  • MIG_NAME:現有擴充排程的 MIG 名稱。
  • SCHEDULE_NAME:要停用的調度資源排程名稱。
  • ZONE 或 REGION:選用:MIG 所在的可用區或區域。

重新啟用資源調度時間表

如要重新啟用縮放排程,請使用 --enable-schedule 旗標。

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --enable-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

更改下列內容:

  • MIG_NAME:現有擴充排程的 MIG 名稱。
  • SCHEDULE_NAME:要重新啟用的縮放時間表名稱。
  • ZONE 或 REGION:選用:MIG 所在的可用區或區域。

REST

如要停用或重新啟用 MIG 的資源調度排程,請對可用區 MIG 使用 autoscalers.patch 方法,或對區域 MIG 使用 regionAutoscalers.patch 方法。

停用資源調度排程

針對要停用的每個資源調度排程,將 disabled 欄位設為 true。舉例來說,如要停用具有現有自動調度資源政策的區域 MIG 排程,請發出下列呼叫:

PATCH https://compute.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "disabled": true
      },
      ...
    }
  }
}

更改下列內容:

  • PROJECT:您的 專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:現有自動配置器的名稱。這通常與 MIG 的名稱相同。
  • SCHEDULE_NAME:要停用的自動調度時間表名稱。

重新啟用資源調度時間表

針對要重新啟用的每個調度資源排程,將 disabled 欄位設為 false。舉例來說,如要為已有自動調度資源政策的可用區 MIG 重新啟用排程,請發出下列呼叫:

PATCH https://compute.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "disabled": false
      },
      ...
    }
  }
}

更改下列內容:

  • PROJECT:您的 專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:現有自動配置器的名稱。這通常與 MIG 的名稱相同。
  • SCHEDULE_NAME:要重新啟用的縮放時間表名稱。

刪除資源調度排程

如要從 MIG 移除資源調度排程,請刪除排程。 刪除不再需要的排程,例如OBSOLETE 狀態的排程。

自動調整資源配置政策一律至少要有一個信號。如果沒有其他自動調度資源信號,您就無法刪除所有調度資源時間表,必須刪除整個自動調度資源政策。如要刪除所有資源調度時間表,但保留自動調度資源政策,請務必先新增至少一個資源調度信號,再刪除所有時間表。

如要避免時間表生效,並儲存時間表供日後使用,請停用時間表。如要刪除 MIG 的自動調整資源配置設定,請刪除自動配置器。

控制台

  1. 前往 Cloud de Confiance 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 在清單中按一下 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「群組大小和自動調度」展開該部分。

  5. 在「自動調整規模時間表」部分,按一下「管理」。

    「擴充時間表」窗格會顯示現有的擴充時間表清單。

    1. 找出要刪除的資源調度時間表,然後勾選對應的核取方塊。
    2. 在「Scaling Schedules」(縮放時間表) 窗格頂端,按一下「Delete」(刪除) 。
    3. 在「Delete schedules」(刪除時間表) 對話方塊中輸入 delete,然後按一下「Delete」(刪除)。

      變更可能需要幾分鐘才會生效。 按一下「縮放時間表」窗格頂端的「重新整理」,即可監控時間表狀態。

    4. 按一下「完成」,關閉「縮放時間表」窗格。

      系統會儲存排程變更,並套用至 MIG。

  6. 按一下「儲存」即可離開編輯頁面。

gcloud

如要刪除縮放排程,請使用 gcloud compute instance-groups managed update-autoscaling 指令並加上 --remove-schedule 旗標。

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --remove-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

更改下列內容:

  • MIG_NAME:具有現有擴充時間表的 MIG 名稱。
  • SCHEDULE_NAME:要刪除的自動調整時間表名稱。
  • ZONE 或 REGION:選用:MIG 所在的可用區或區域。

REST

如要刪除 MIG 的資源調度排程,請使用可用區 MIG 的 autoscalers.patch 方法,或是區域 MIG 的 regionAutoscalers.patch 方法。針對要刪除的每個資源調度時間表, 將時間表設定設為 null

舉例來說,如要刪除具有現有自動調度資源政策的區域 MIG 排程,請進行下列呼叫:

PATCH https://compute.s3nsapis.fr/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": null
      ...
    }
  }
}

更改下列內容:

  • PROJECT:您的專案 ID。
  • ZONE:MIG 所在的可用區。
  • AUTOSCALER_NAME:現有自動配置器的名稱。這通常與 MIG 的名稱相同。
  • SCHEDULE_NAME:要刪除的自動調整時間表名稱。

概念

本節說明建立及使用縮放排程的相關概念,包括排程設定和運作方式的詳細資料。

資源調度時間表設定

建立及修改 MIG 的資源調度排程時,每個資源調度排程都包含下列設定:

  • 所需執行個體數量下限:這個自動調整規模排程運作時,MIG 中所需的 VM 數量。

    這個排程運作時,MIG 至少會有這個數量的 VM,但可能會根據其他自動調度資源設定而增加。此外,MIG 大小一律會受到 MIG 自動調度資源設定中設定的執行個體數量下限和上限限制。

  • 時區:根據位置資訊的 IANA 時區,用於解讀排程的開始時間。

    可用值清單由 IANA 時區資料庫定義,例如 Europe/Paris。如未提供時區,系統預設會使用 UTC。部分 IANA 時區會採用日光節約時間。如要瞭解日光節約時間對縮放時間表的影響,請參閱「日光節約時間」。

  • 時間長度:您希望自動調度排程運作的時間長度。

    縮放時間表會在設定的時長內,從開始時間起生效。最短時間長度為 5 分鐘。在這段期間,自動配置器會調度 MIG,確保 VM 數量至少達到排程中定義的必要執行個體數量。經過指定時間後,如果不再需要目前的容量,自動配置器會在穩定期過後開始移除 VM 執行個體,並遵循任何已設定的縮減控制項。

    資源調度時間表是雙向的,除非您指定其他自動調度資源信號,否則 VM 會在您指定的停止時間移除,且群組大小會縮減至您設定的群組大小下限。

使用 Google Cloud CLI 或 REST 時,必須使用 Cron 運算式設定縮放排程的開始時間和重複週期。不過,使用 Cloud de Confiance 控制台時,您可以使用 Cron 運算式或下列設定,設定排程的開始時間和週期:

  • 開始時間:您希望自動調幅排程啟用的時間。

    在開始時間,只要 MIG 大小低於排程的必要執行個體數,系統就會開始建立 VM。請設定開始時間,讓新的 VM 有足夠時間啟動及初始化。舉例來說,如果工作負載從建立 VM 到開始提供服務需要 10 分鐘,請將開始時間設為比 VM 準備就緒時間早 10 分鐘。

  • 週期:縮放排程的重複頻率 (如有),可透過下列選項定義:

    • 一次:只在所選日期開始的一次性排程。
    • 每天:每天啟動的重複性排程。
    • 每週:每週在所選日期開始的重複性排程,例如每週一到週五。
    • 每月:每月在選定日期啟動的重複排程,例如每月第一天。如果選擇 29、30 或 31 日,排程只會在有這些日期的月份觸發。

Cron 運算式

您可以使用 Cron 運算式設定縮放排程的開始時間和重複週期。Cron 是以時間為基礎的工作排程器,最初用於 Unix 類電腦作業系統。

語法

Cron 運算式是由五或六個欄位組成的字串,欄位之間以空白字元分隔。下表定義了 cron 運算式的欄位,以及每個欄位的可能值。

分鐘 小時 日 月 星期幾 年 (選填)
0-59 0-23 1-31 1-12 (1 月至 12 月)

其中 1=Jan, 2=Feb, ... 12=Dec
0-6 (週日到週六) 或 1-7 (週一到週日)

其中 0=Sun, 1=Mon, ... 6=Sat, 7=Sun
2000 年至 2036 年

或每年 (*),如果未提供

除了使用這些值,Cron 運算式中的每個欄位也可以使用特殊字元:

特殊字元 意義 範例
* 任何 如果日期、星期幾和年份 (如有) 欄位都設為 *,時間表就會每天啟動。
- range 如果星期幾欄位設為 1-5 或 Mon-Fri,則排程會在每週一至週五啟動。
, list 如果月份欄位設為 5,7,9 或 May,Jul,Sep,則排程會在每年 5 月、7 月和 9 月開始。
/ 步驟 如果將「月份」欄位設為 */3,排程會在第一個月份開始,之後每 3 個月執行一次:1 月、4 月、7 月和 10 月。

撰寫 cron 運算式時,請注意下列事項:

  • Cron 運算式的欄位是以空格分隔。請注意,如果欄位使用特殊字元,請勿加入多餘的空白字元。
  • 如果您同時指定星期幾和日期 (兩個欄位都未設為 *),排程會使用這些值的聯集,而非交集。舉例來說,排程 0 8 1 * Mon 會在每週一和每月第一天上午 8 點啟動。該排程不會只在每月第一週的星期一上午 8 點啟動。
  • 您可以在 Cron 運算式的每個欄位中使用零個或多個特殊字元。舉例來說,如果您希望排程在每個月 (5 月除外) 開始,可以將月份欄位設為 1-4,6-12 (兩個範圍的清單,不含空格)。
  • 使用範圍 (-) 時,您無法在星期幾欄位中使用 0-7 或 Sun-Sun。如要指定星期幾,請改用 *、0-6、1-7、Sun-Sat 或 Mon-Sun。
  • 使用步驟 (/) 時,請注意 cron 運算式不具狀態,因此步驟有時可能不平均。舉例來說,如要每 6 小時執行一次排程,您可以將「小時」欄位設為 */6,這與列出 6 的每個有效倍數 (0,6,12,18) 的行為相同。由於 24 小時可分成 6 小時的間隔,因此步驟會很平均。不過,如果將「時數」欄位設為 */7,時間表就不會一律以 7 小時為間隔啟動。相反地,*/7 的行為與列出每個有效的 7 倍數 (0,7,14,21) 相同,這表示排程可以在凌晨 12 點、上午 7 點、下午 2 點和晚上 9 點開始。

週期性排程與一次性排程

視您編寫 cron 運算式的方式而定,排程可能會執行一次或定期重複。如要建立只執行一次的排程,請務必指定年份欄位。舉例來說,cron 運算式 0 0 30 1 * 2030 會設定排程,只在 2030 年 1 月 30 日午夜啟動一次。如要建立重複執行的排程,請使用特殊字元描述排程重複執行的時間。舉例來說,Cron 運算式 30 8 * * Mon-Fri 會設定排程,在每週一、二、三、四、五的上午 8:30 啟動。

排程狀態資訊

列出縮放時間表,即可查看狀態。縮放時間表包含下列狀態資訊:

  • 狀態 (state):代表縮放排程的目前狀態,可能為下列其中一種狀態:
    • 就緒 (READY):這項時間表已準備就緒,但尚未啟用。 自動配置器正在等待下次排程。
    • 有效 (ACTIVE):這項排程有效。自動配置器會嘗試為這個 MIG 提供至少達到這項排程指定數量的執行個體。
    • 已過時 (OBSOLETE):這項排程已過期,不會再次啟用。由於沒有未來的發生次數,自動調整工具會忽略這項時間表。
    • 已停用 (DISABLED):這個排程已手動停用,因此無法啟用。自動調整程式會忽略這個排程,直到重新啟用為止。
  • 上次發生時間 (lastStartTime):這個縮放排程上次啟用的時間戳記。這是上次啟用的實際日期和時間。舉例來說,假設您有一個已停用的擴充排程,每天上午 10 點開始,持續 2 小時,而您在今天上午 11 點重新啟用該排程,則 lastStartTime 為今天上午 11 點。
  • 下次發生時間 (nextStartTime):此排程下次啟用的時間戳記。

時間表重疊

視開始時間、週期、持續時間和時區而定,兩個以上的縮放排程可能會重疊。如果有多個排程處於啟用狀態,自動調整規模工具會使用所有啟用中調整規模排程中,所需 VM 執行個體數量最多者。這有助於確保有足夠的容量,可滿足任何有效排程的需求。舉例來說,假設您有每天上午 8 點到 10 點的排程,至少需要 10 部 VM,但也有一次性全天排程,至少需要 20 部 VM,則自動配置器會在當天將 MIG 調度至至少 20 部 VM。如果您有規律的容量需求,但有時需要更多容量來處理一次性活動,這項功能就非常實用。這樣一來,您就能排定容量,不必擔心 VM 需求較小的其他排程會覆寫容量。

此外,自動配置器一律會提供任何有效自動調度資源信號所需的最大 VM 執行個體數量。詳情請參閱「使用具有多個信號的自動調度資源政策」。

日光節約時間

日光節約時間 (DST) 的詳細資訊會因縮放時間表的位置型 IANA 時區而異。如果排程的時區會實施日光節約時間,排程的開始時間會自動調整,與所選位置的時間保持同步。舉例來說,如果您建立的縮放時間表是每天早上 7 點 (時區 America/New_York) 開始,那麼這個時間表會在紐約時間早上 7 點開始,並視情況使用東部夏令時間或東部標準時間。

縮放時間表一律會在您設定的整個期間執行,但夏令時間切換當天,開始和結束時間可能會略有不同。這是因為日光節約時間切換有轉換期,也就是日光節約時間第一天會跳過的時間範圍,以及日光節約時間最後一天會出現兩次的時間範圍。舉例來說,如果時區的夏令時間從凌晨 2 點開始,且轉換時間為 1 小時,則時鐘會從凌晨 1:59:59 變更為凌晨 3 點,因此會略過凌晨 2 點到凌晨 2:59:59 的時間範圍。如果該時區的日光節約時間在凌晨 2 點結束,時鐘會從凌晨 2:59:59 變更為凌晨 2 點,因此凌晨 2 點到凌晨 2:59:59 的時間範圍會重複。下列陳述假設排程的時區使用 1 小時的日光節約時間轉換。

在日光節約時間的第一天 (跳過 1 小時),縮放排程會有以下變更:

  • 在跳過的那一小時內,排程仍會持續運作,但為了補償跳過的那一小時,這些排程會在沒有日光節約時間轉換的日子,比結束時間晚 1 小時結束。一般來說,時間表的結束時間是時間表的開始時間和持續時間的總和。但如果時區在排定時間內跳過 1 小時,且時間長度和開始時間維持不變,則排定時間的結束時間會比排定時間的開始時間和時間長度總和多 1 小時。
  • 如果排程設定在略過的時段開始,在沒有日光節約時間轉換的日期,排程也會比開始時間晚 1 小時啟動。

在日光節約時間的最後一天 (重複 1 小時),縮放時間表會有以下變更:

  • 在重複時段內啟用的排程仍會持續執行完整時長,但為了補償重複時段,這些排程會在沒有日光節約時間轉換的日期,比結束時間提早 1 小時結束。一般來說,排程的結束時間是排程的開始時間和時長的總和。不過,如果時間表在執行期間重複撥回 1 小時,且時間表長度和開始時間維持不變,則時間表的結束時間會比時間表開始時間和長度的總和少 1 小時。
  • 如果排定在轉換期間開始的排程,會在設定的開始時間啟動,但不會在第二次重複的開始時間重新啟動。

大多數採用日光節約時間的時區,都會使用 1 小時的轉換期。不過,如果排程時區使用不同的轉換期 (例如 Australia/Lord_Howe 時區,轉換期為 30 分鐘),則會出現相同行為。只要將「1 hour」替換成相關的日光節約時間轉換時間即可。

後續步驟