建立代管執行個體群組

代管執行個體群組 (MIG),包含以執行個體範本為依據的相同執行個體。這類群組會主動讓執行個體保持可用 (即處於 RUNNING 狀態),以維持應用程式的高可用性。

代管執行個體群組支援自動修復負載載平衡自動調度資源自動更新

您可以建立區域 (單一區域) MIG 和區域 (多區域) MIG ,區域 MIG 可提供更高可用性,且執行個體散布於同一地區的多個區域。

如要進一步瞭解執行個體群組,請參閱執行個體群組總覽

事前準備

限制

  • 每個代管執行個體群組最多可包含 1000 個虛擬機器 (VM) 執行個體。
  • 更新代管執行個體群組時,一個要求中不能指定超過 1000 個執行個體。

使用代管執行個體群組支援無狀態應用程式

代管執行個體群組支援執行不依賴基礎 VM 執行個體特定狀態的無狀態應用程式。 這可讓您使用自動調度資源與自動修復等功能,如此一來,代管執行個體群組就可以自動刪除及重新建立執行個體。此外,如果因為使用者在自動修復程序中的操作,或是由於執行個體未設為即時遷移以致發生基礎架構維護的狀況,而造成代管執行個體群組中的某個執行個體遭到刪除,執行個體群組會自動重新建立一個含有新的永久根磁碟的執行個體。

基於代管執行個體群組的無狀態性質,您應設計或更新您的應用程式,使其不依賴不會保存的特定執行個體屬性,例如 IP 位址或記憶體內資料。 同樣的,開機永久磁碟的預設行為是在對應 VM 執行個體遭刪除時予以刪除,因此,您不應將開機磁碟當做代管執行個體群組中的持續性資料。

如要保留資料,Google 建議您最好的方式就是定期將 OS 映像檔更新至最新版本、使用開機指令碼,以及將資料集中備份在 Cloud Storage 等其他位置。

在執行個體範本中,您可以指定容器映像檔自訂映像檔以及相關開機指令碼。如此一來,重新建立執行個體時,必要的軟體應用程式即已安裝妥當,重新建立的執行個體也會立即擁有所需資料的存取權。如需建立執行個體範本的更多建議,請參閱確定性執行個體範本

如要儲存與代管執行個體群組相關的磁碟,請停用 disks.autoDelete 選項以避免刪除永久磁碟。如果刪除了使用該磁碟的執行個體 (例如,如果自動配置器縮減了此群組或手動刪除了執行個體),則須視需要手動清除剩餘磁碟。

建立代管執行個體群組

建立代管執行個體群組之前,您必須建立執行個體範本,為群組中的每個執行個體指定作業系統映像檔或容器映像檔以及相關設定。

建立範本之後,請透過 Google Cloud Platform Consolegcloud compute 工具或 API 建立代管執行個體群組。

Console

  1. 前往 GCP 主控台的「執行個體群組」頁面。

    前往執行個體群組頁面

  2. 按一下 [Create an instance group] (建立執行個體群組)。
  3. 輸入代管執行個體群組的名稱,並選取群組所在的區域。
  4. 在「Group type」(群組類型) 底下,選取 [Managed instance group] (代管執行個體群組)。
  5. 在「Instance template」(執行個體範本) 底下,選取一個執行個體範本。若沒有可用的範本,請自行建立執行個體範本
  6. 指定要在群組中建立的執行個體數量。 您也可以啟用「Autoscaling」(自動調度資源),使群組可根據執行個體使用量自動新增或移除執行個體,或者啟用自動修復,針對執行個體群組中的執行個體執行以應用程式為基礎的健康狀態檢查。
  7. 按一下 [Create] (建立) 來建立新群組。

gcloud

使用 instance-groups managed create 子指令建立執行個體群組:

gcloud compute instance-groups managed create [NAME] \
    --base-instance-name [BASE_NAME] \
    --size [SIZE] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

其中:

  • [NAME] 替換為這個執行個體群組的名稱。
  • [BASE_NAME] 替換為在這個執行個體群組中建立之執行個體所使用的名稱。由於這些執行個體都一樣,因此,系統會為執行個體指派隨機字串並附加在執行個體名稱中,同時會將基礎名稱加在隨機字串前。例如,如果基礎名稱是 example,執行個體的名稱則為 example-yahs, example-qtyz 等。如果您需要指定名稱,請參閱在 MIG 中使用指定名稱建立執行個體一文
  • [SIZE] 替換為執行個體群組的大小。
  • [INSTANCE_TEMPLATE] 替換為這個群組所用執行個體範本的名稱。
  • [ZONE] 是 Compute Engine 可用的其中一個區域

    例如,下列命令會建立名為 example-group 的執行個體群組,其基礎執行個體名稱為 test。這個群組包含三個執行個體:

    gcloud compute instance-groups managed create example-group \
      --base-instance-name test \
      --size 3 \
      --template an-instance-template

API

在 API 中,建構對 instanceGroupManagers.insert 方法或 regionInstanceGroupManagers.insert方法的 POST要求。在要求主體中包含群組名稱、群組大小、群組中執行個體的基礎名稱,以及執行個體範本的網址。

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

{
  "baseInstanceName": "[BASE_NAME]",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]"
    }
  ],
  "name": "[NAME]",
  "targetSize": [SIZE]
}

其中:

  • [PROJECT_ID] 是要求中的專案 ID。
  • [ZONE] 替換為要求的區域。
  • [NAME] 替換為這個執行個體群組的名稱。
  • [BASE_NAME] 替換為在這個執行個體群組中建立之執行個體所使用的名稱。由於這些執行個體都一樣,因此,系統會為執行個體指派隨機字串並附加在執行個體名稱中,同時會將基礎名稱加在隨機字串前。例如,如果基礎名稱是 example,執行個體的名稱則為 example-yahs, example-qtyz 等。
  • [SIZE] 替換為執行個體群組的大小。
  • [INSTANCE_TEMPLATE] 替換為這個群組所用執行個體範本的名稱。

各項政策和動作都可能影響到群組中的執行個體,視您設定或處理 MIG 的方式而定。如要判斷哪些代管執行個體已設定和執行,請參閱檢查代管執行個體狀態一文。

變更代管執行個體群組的執行個體範本

您可以變更代管執行個體群組的執行個體範本,而不必將任何變更套用至現有執行個體。當您提出新增或重新建立執行個體的要求時,代管執行個體群組會使用新範本,但範本不會自動更新群組中的現有執行個體。這可讓您完全控制更新的執行個體,但會使您的執行個體群組包含不同的執行個體。

建立新執行個體範本之後,請變更現有執行個體群組的執行個體範本。

Console

  1. 前往 GCP 主控台的「執行個體群組」頁面。

    前往執行個體群組頁面

  2. 在清單的「Name」(名稱) 欄底下,找到要變更執行個體範本的執行個體群組並按一下其名稱。
  3. 按一下 [Edit Group] (編輯群組),修改這個代管執行個體群組。
  4. 在「執行個體範本」(Instance template) 底下,選取要在這個群組中使用的新執行個體範本。
  5. 按一下 [Save] (儲存),套用新範本。

gcloud

如要使用 set-instance-template 方法更新範本,請將新範本傳送至 instance-groups managed set-instance-template 子指令:

gcloud compute instance-groups managed set-instance-template [INSTANCE_GROUP] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

API

instanceGroupManagers 服務建構要求,要求中需加入目標代管執行個體群組的名稱。將新執行個體範本的網址包含在要求主體中。

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers[INSTANCE_GROUP]/setInstanceTemplate

{
 "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]
}

變更執行個體範本之後,請重新建立個別執行個體,或使用滾動式更新方式,更新群組中的所有執行個體。

自動調整代管執行個體群組的大小

您可以設定代管執行個體群組,根據執行個體的工作負載自動新增或移除執行個體。您的應用程式可緩解流量的增加,並且可在運算資源需求降低時節省成本。如要開始調度代管執行個體群組資源,請參閱自動調度執行個體群組資源一文。

手動調整代管執行個體群組的大小

若代管執行個體群組尚未設定為自動調度資源,您可手動調整群組大小,來變更群組中的執行個體數。如果您增加大小,代管執行個體群組會使用目前執行個體範本新增執行個體。如果您減少大小,代管執行個體群組會從群組中刪除執行個體。這個群組會先刪除 currentActionDELETINGCREATINGRECREATING 的執行個體,然後再刪除正在無排程動作的情況下執行的執行個體。

如果群組屬於後端服務的一部分,且該服務已啟用連線排除,在連線排除持續時間過後,最長可能需要等待 60 秒才能移除或刪除 VM 執行個體。

您可以使用 Google Cloud Platform Consolegcloud compute 工具API 調整代管執行個體群組的大小。

Console

  1. 前往 GCP 主控台的「執行個體群組」頁面。

    前往執行個體群組頁面

  2. 在清單的「Name」(名稱) 欄底下,找到要變更群組大小的執行個體群組並按一下其名稱。
  3. 按一下 [Edit Group] (編輯群組),修改這個代管執行個體群組。
  4. 在「Number of instances」(執行個體數) 底下,指定您希望這個代管執行個體群組包含的執行個體數。若已啟用「Autoscaling」(自動調度資源),群組會視需要自動新增或移除執行個體。但是,您可以變更「Minimum number of instances」(執行個體數量下限) 與「Maximum number of instances」(執行個體數量上限) 值,透過自動配置器間接調整群組大小。
  5. 按一下 [Save] (儲存),套用新範本。

gcloud

指令的使用如下:

gcloud compute instance-groups managed resize [INSTANCE_GROUP ] \
    --size [NEW_SIZE] \
    --zone [ZONE]

API

instanceGroupManagers 服務建構要求,要求中需加入目標代管執行個體群組的名稱。請將新執行個體大小指定為參數。

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resize?size=[NEW_SIZE]

提出調整代管執行個體群組大小的要求之後,執行個體會在系統可以佈建或刪除時立即開始運作或停止。此程序可能會花費大量時間,花費時間視群組中的執行個體數而定。 請在您的代管執行個體群組中驗證執行個體狀態

調整大小時停用建立重試模式

根據預設,如果初始建立虛擬機器執行個體失敗,代管執行個體群組會繼續重試建立每個執行個體,直到成功建立執行個體為止。但是,如果您不想使用自動建立重試,可在調整執行個體群組大小時提供 --nocreation-retries 旗標,停用建立重試模式。在這個模式下,代管執行個體群組只會進行一次嘗試,來建立所有執行個體。如果建立期間發生錯誤,代管執行個體群組將不會建立執行個體,而是會減小代管執行個體群組的目標大小。

只有在第一次嘗試建立執行個體期間,才會套用這個模式。如果在啟用這個模式時成功建立了執行個體,執行個體的行為會與使用一般調整大小要求建立的其他所有執行個體一樣。重要的是,如果執行中的執行個體日後意外停轉,且需要重新建立,這個模式不會影響在這種情況下重新建立的行為。

如果您的系統會自動建立不需要確切執行個體數量的執行個體群組,停用建立重試模式將特別有用。您可能會想要讓代管執行個體群組的大小快速穩定下來,但想讓群組中的執行個體數量具有彈性,而不是無限期地等到要求的所有執行個體都建立完成 (完成時間可能會因配額錯誤或其他無關問題而暫時或永久延遲)。

如要在建立重試模式停用時調整代管執行個體,請使用 gcloud compute 工具API

gcloud

使用 gcloud 指令列工具,執行 resize 指令並加上 --no-creation-retries 旗標:

gcloud beta compute instance-groups managed resize [INSTANCE_GROUP] --size [NEW_SIZE] \
    --nocreation-retries \
    --zone [ZONE]

API

instanceGroupManagers 服務建構要求,要求中需加入目標代管執行個體群組的名稱。在要求主體中指定新執行個體大小與 noCreationRetries 欄位。

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resizeAdvanced

{
 "targetSize": [SIZE]
 "noCreationRetries": true
}

您可以使用 listManagedInstances 方法查看正在建立的執行個體以及執行的模式。在建立重試模式停用時建立的執行個體會具有 CREATING_WITHOUT_RETRIEScurrentAction

從群組中刪除個別執行個體

您可以刪除代管執行個體群組中的個別執行個體。刪除執行個體會縮減執行個體群組的指定 targetSize,並且會將執行個體從所屬的任何目標集區移除。

從代管執行個體群組刪除執行個體不會變更任何指定的自動配置器設定。如果您從代管執行個體群組刪除執行個體,自動配置器可能會偵測到群組中其他執行個體的工作負載增加,並將群組大小重新增加到先前的等級。為避免發生此問題,請先停用刪除自動配置器,然後再嘗試刪除執行個體。

如果群組屬於後端服務的一部分,且該服務已啟用連線排除,在連線排除持續時間過後,最長可能需要等待 60 秒才能移除或刪除 VM 執行個體。

您可以使用 Google Cloud Platform Consolegcloud compute 工具API,從代管執行個體群組中刪除執行個體。

Console

  1. 前往 GCP 主控台的「執行個體群組」頁面。

    前往執行個體群組頁面

  2. 在清單的「Name」(名稱) 欄底下,按一下個別待刪除執行個體所屬執行個體群組的名稱。按一下名稱會開啟頁面,其中包含執行個體群組的屬性及群組內執行個體的清單。
  3. 在執行個體的清單上選取一或多個要刪除的執行個體。
  4. 按一下 [Delete] (刪除),即可刪除您所選取的執行個體。

gcloud

如要刪除具有 gcloud 的執行個體,請使用 instance-groups managed delete-instances 子指令:

gcloud compute instance-groups managed delete-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

instanceGroupManagers 服務建構要求,要求中需加入目標代管執行個體群組的名稱。在要求主體中,包含要刪除的一或多個執行個體的網址。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/deleteInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

提出刪除代管執行個體群組中執行個體的要求之後,執行個體會在系統可以刪除時立即停止。此程序可能會花費大量時間,花費時間視您從群組中刪除的執行個體數而定。 在您的代管執行個體群組中驗證執行個體狀態

從群組中捨棄執行個體

您可以將執行個體與代管執行個體群組區分開,以更輕鬆地找出個別執行個體的問題,而不會影響整個群組。 從群組捨棄執行個體也會將執行個體從指派給代管執行個體群組的負載平衡器移除。 手動指派給特定個別執行個體的目標集區不會移除。

捨棄執行個體會減小執行個體群組的指定 targetSize,但不會變更任何指定的自動配置器設定。具有自動配置器的代管執行個體群組會視需要繼續自動新增或移除執行個體。

如果群組屬於後端服務的一部分,且該服務已啟用連線排除,在連線排除持續時間過後,最長可能需要等待 60 秒才能移除或刪除 VM 執行個體。

您可以使用 Google Cloud Platform Consolegcloud compute 工具API,從代管執行個體群組中捨棄執行個體。

Console

  1. 前往 GCP 主控台的「執行個體群組」頁面。

    前往執行個體群組頁面

  2. 確認您要移除哪些執行個體,然後在清單的「Name」(名稱) 欄底下,按一下其所屬執行個體群組的名稱。按一下名稱會開啟頁面,其中包含執行個體群組的屬性及群組內執行個體的清單。
  3. 在執行個體清單中選取一或多個要從群組中移除的執行個體。
  4. 按一下 [Remove from group] (從群組中移除)。所選執行個體會退出群組,但仍會繼續在群組外執行。

gcloud

如要從執行個體群組中移除執行個體,「而不刪除執行個體」,請使用 abandon-instances 子指令。

gcloud compute instance-groups managed abandon-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

instanceGroupManagers 服務建構要求,要求中需加入目標代管執行個體群組的名稱。在要求主體中,包含要捨棄的一或多個執行個體網址。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/abandonInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

提出從代管執行個體群組中捨棄執行個體的要求之後,群組會盡快移除執行個體。 請在您的代管執行個體群組中驗證執行個體狀態

在群組中重新建立執行個體

重新建立執行個體會刪除指定執行個體,並會使用指派給代管執行個體群組的執行個體範本建立新執行個體。

請使用這個方法來更新所選執行個體,以使這些執行個體使用最新執行個體範本。如果您需要在代管執行個體群組中重新建立所有執行個體,請改為啟動輪動式更新

如果群組屬於後端服務的一部分,且該服務已啟用連線排除,在連線排除持續時間過後,最長可能需要等待 60 秒才能移除或刪除 VM 執行個體。

您可以使用 gcloud compute 工具或 API,從代管執行個體群組中重新建立所選的執行個體。

gcloud

使用 instance-groups managed recreate-instances 子指令。

gcloud compute instance-groups managed recreate-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

instanceGroupManagers 服務建構要求,要求中需加入目標代管執行個體群組的名稱。在要求主體中,包含要重新建立的一或多個執行個體的網址。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/recreateInstances

{
 "instances": [
  "zones/[ZONE]/instances/example-instance-i3n2",
  "zones/[ZONE]/instances/example-instance-l6n1"
 ]
}

提出在代管執行個體群組中重新建立執行個體的要求後,一旦系統可以佈建執行個體,新的執行個體即會開始運作。此程序可能會花費大量時間,花費時間視您重新建立的執行個體數而定。 請在您的代管執行個體群組中驗證執行個體狀態

刪除代管執行個體群組

當您刪除代管執行個體群組時,也會刪除群組中的所有執行個體。如果您必須保留這個代管執行個體群組中的任何執行個體,請先捨棄執行個體,以從群組中移除執行個體。然後,刪除代管執行個體群組。

當您使用 Google Cloud Platform Consolegcloud compute 工具刪除代管執行個體群組及其執行個體時,系統會自動刪除所有連結的自動配置器。不過,如果您使用 API,您必須先使用 autoscalers.deleteregionAutoscalers.delete 另外發出刪除任何附加自動配置器的要求。

Console

  1. 前往 GCP 主控台的「執行個體群組」頁面。

    前往執行個體群組頁面

  2. 從清單中選取一或多個要刪除的群組。
  3. 按一下 [Delete] (刪除),刪除群組以及代管執行個體群組中的所有執行個體。

gcloud

使用 instance-groups managed delete 子指令。

gcloud compute instance-groups managed delete [INSTANCE_GROUP] \
    --zone [ZONE]

API

instanceGroupManagers 服務建構 DELETE 要求,並指定要刪除之代管執行個體群組的名稱。

DELETE https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

建立先佔執行個體的群組

您可以使用代管執行個體群組快速建立多個先佔執行個體,如此可減少代管執行個體群組中執行個體的費用。例如,您可以建立先佔執行個體群組,使用這些執行個體執行批次處理工作,然後在工作完成時刪除這個群組。

如要建立先佔執行個體群組,請在執行個體範本中設定先佔選項,然後使用範本建立代管執行個體群組。

Console

  1. 前往 GCP 主控台的「Instance Templates」(執行個體範本) 頁面。

    前往執行個體範本頁面

  2. 按一下 [New instance template] (新增執行個體範本)
  3. 視需求填寫執行個體範本的屬性。
  4. 按一下 [Show advanced options] (顯示進階選項),展開「Availability policies」(適用政策) 部分。
  5. 將「Preemptibility」(先占功能) 設定為 [On] (開啟)。
  6. 按一下 [Create] (建立),建立範本。
  7. 使用這個範本建立代管執行個體群組

gcloud

gcloud compute 中,使用 instance-templates create 指令建立執行個體範本。加上 --preemptible 旗標。

gcloud compute instance-templates create [INSTANCE_TEMPLATE] \
    --preemptible

建立執行個體範本之後,請使用這個範本建立代管執行個體群組

API

使用 instanceTemplates().insert 方法建立新的執行個體範本。在 scheduling 底下包含 preemptible 屬性,並將其設為true

{
"name": "[INSTANCE_TEMPLATE]",
"properties": {
  "machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "scheduling":
  {
    "preemptible": true
  },
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

建立執行個體範本之後,請使用這個範本建立代管執行個體群組

刪除代管執行個體群組

當您刪除代管執行個體群組時,也會刪除群組中的所有執行個體。如果您必須保留這個代管執行個體群組中的任何執行個體,請先捨棄執行個體,以從群組中移除執行個體。然後,刪除代管執行個體群組。

當您使用 Google Cloud Platform Consolegcloud compute 工具刪除代管執行個體群組及其執行個體時,系統會自動刪除所有連結的自動配置器。不過,如果您使用 API,您必須先使用 autoscalers.deleteregionAutoscalers.delete 另外發出刪除任何附加自動配置器的要求。

Console

  1. 前往 GCP 主控台的「執行個體群組」頁面。

    前往執行個體群組頁面

  2. 從清單中選取一或多個要刪除的群組。
  3. 按一下 [Delete] (刪除),刪除群組以及代管執行個體群組中的所有執行個體。

gcloud

使用 instance-groups managed delete 子指令。

gcloud compute instance-groups managed delete [INSTANCE_GROUP] \
    --zone [ZONE]

API

instanceGroupManagers 服務建構 DELETE 要求,並指定要刪除之代管執行個體群組的名稱。

DELETE https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

瞭解 instanceTemplateversions 欄位

當您建立代管執行個體群組時,必須指定代管執行個體群組用來建立個別 VM 執行個體的執行個體範本。根據預設,Compute Engine 會描述在兩個不同 API 屬性中使用的執行個體範本:頂層 instanceTemplate 屬性與 versions 屬性。例如,在下列代管執行個體群組中,請注意 instanceTemplateversions 欄位已經填入:

{

 "name": "example-group",
 "zone": "zones/us-central1-a",
 "instanceTemplate": "global/instanceTemplates/example-it",
 "versions": [
  {
   "name": "v3",
   "instanceTemplate": "global/instanceTemplates/example-it",
   "targetSize": {
    "calculated": 3
   }
  }
 ]...
}

為了回溯相容,Compute Engine 會自動填入頂層 instanceTemplate 欄位與 versions 欄位。我們建議盡可能指定 versions 欄位並省略頂層 instanceTemplates 欄位。但是,如果您的應用程式程式碼目前設定了頂層 instanceTemplate 欄位,這仍是一個有效要求。

如要進一步瞭解 Managed Instance Group Updater,請參閱更新代管執行個體群組一文。

(進階) 使用代管執行個體群組對執行個體範本進行初期測試

您可以建立一個代管執行個體群組,其中包含使用不同執行個體範本的兩個群組。例如,您可能想要建立擁有 20 個 VM 執行個體的代管執行個體群組,10 個 VM 應在特定作業映像檔上執行,而其餘的應在不同作業系統映像檔上執行。這個功能可讓您先比較兩個不同的執行個體範本版本,然後再決定出一個版本。

在 API 中,對以下網址提出 POST 要求:

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers

您的要求主體應省略頂層 instanceTemplates 欄位,但包含已設定兩個執行個體範本的 versions 屬性。在每個 versions 物件中,您必須指定一個執行個體範本。如果只是兩者中的一個 versions 物件,您也必須指定targetSize。例如,在下列要求建立的執行個體群組中,50% 的 VM 執行個體會使用 example-template 執行個體範本,其餘 VM 執行個體則使用 small-machine-type 範本:

{
  "baseInstanceName": "example-instances",
  "name": "example-group",
  "targetSize": 5,
  "versions":
  [
    {
      "instanceTemplate": "global/instanceTemplates/example-template",
      "targetSize":
      {
        "percent": 50
      }
    },
   {
     "instanceTemplate": "global/instanceTemplates/small-machine-type"
   }
  ]
}

代管執行個體群組和身分與存取權管理

由 Compute Engine 在代管執行個體群組中執行的所有作業都會使用您專案的「Google API 服務帳戶」執行。 每項專案專屬的服務帳戶都有一個電子郵件地址,如下所示:

[PROJECT_ID]@cloudservices.gserviceaccount.com

其中

  • [PROJECT_ID] 是對應專案的數值 ID。

Google API 服務帳戶與預設 Compute Engine 服務帳戶不同。

您必須確保代管執行個體群組使用的服務帳戶擁有足夠的權限,可以根據執行個體範本建立虛擬機器執行個體。請特別注意,這意味著您需要為服務帳戶授予 compute.instanceAdmin.v1,以及 serviceAccountUser (選用) 角色,才能在執行個體群組中建立及管理執行個體。只有在代管執行個體群組建立能夠以服務帳戶身分執行的執行個體時,才需要 serviceAccountUser 角色。另外,也請記住,這個帳戶可用於其他處理程序,包括 Deployment Manager

當您建立代管執行個體群組或更新執行個體範本時,Compute Engine 會驗證 Google API 服務帳戶是否:

  • 在執行個體範本中具備 serviceAccountUser 角色權限 (若您打算建立能夠以服務帳戶身分執行的執行個體)。
  • 有權存取執行個體範本所參照的所有資源,例如映像檔、磁碟、VPC 網路與子網路。

如要進一步瞭解服務帳戶,請參閱服務帳戶總覽

在代管執行個體群組中更新所有執行個體

請參閱更新代管執行個體群組一文。

疑難排解

我的代管執行個體群組一直無法建立執行個體。這是怎麼回事?

有一些問題可能會使執行個體群組無法成功建立或重新建立執行個體。一些常見的問題包括:

  • 代管執行個體群組嘗試建立或重新建立執行個體與開機永久磁碟,但永久磁碟已存在。建立新的執行個體時,系統預設會建立新的開機永久磁碟。這些磁碟按執行個體命名。如果執行個體的名稱為 my-awesome-instance,磁碟名稱也會是 my-awesome-instance。如果已有永久磁碟使用這個名稱,要求就會失敗。 刪除現有永久磁碟即可解決問題。

  • 執行個體範本已將開機永久磁碟的 disks.autoDelete 選項設定為 false,所以,刪除執行個體 (刪除原因可能為自動修復) 時不會刪除永久磁碟。當代管執行個體群組嘗試以相同名稱重新建立執行個體時,就遇到了相同的問題,也就是已經有名稱相同的永久磁碟。刪除現有永久磁碟可立即解決問題,如果您想一併刪除開機永久磁碟和執行個體,請更新執行個體範本,將 disks.autoDelete 設定為 true

  • 您的執行個體範本可能無效。如果您最近更新了執行個體範本,可能會出現無效的屬性,導致代管執行個體群組無法建立執行個體。無效屬性的部分情況如下:

    • 您指定了不存在的資源,例如來源映像檔。
    • 資源名稱拼字有誤。
    • 您嘗試在讀寫模式下連結其他非開機永久磁碟。由於執行個體群組包含多個執行個體,如要連結其他任何磁碟,供群組中的所有執行個體共用,就必須使用唯讀模式。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件