本文說明如何建立並套用分散式配置政策,提高虛擬機器 (VM) 執行個體的可靠性。如要進一步瞭解配置方式政策,包括相關限制和價格,請參閱配置方式政策總覽。
分散式配置政策會指定 VM 應分散在不同可用性網域。這種分配方式有助於減輕特定位置的干擾 (例如硬體錯誤),並在執行大規模、分散式和複製的工作負載 (例如 Hadoop 分散式檔案系統 (HDFS)、Cassandra 或 Kafka) 時相當實用。
事前準備
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Trusted Cloud by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
gcloud
-
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:
gcloud init
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,執行下列指令初始化 Google Cloud CLI:
gcloud init
詳情請參閱 Trusted Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得建立及將分散式放置群組政策套用至 VM 所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備建立及將分散式配置政策套用至 VM 的必要權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要建立及套用分散式配置政策至 VM,必須具備下列權限:
-
如要建立刊登位置政策,請對專案具備
compute.resourcePolicies.create
權限。 -
如要將放置政策套用至現有 VM:
compute.instances.addResourcePolicies
專案 -
如要建立 VM,請按照下列步驟操作:
- 專案的
compute.instances.create
權限 - 如要使用自訂映像檔建立 VM,請按一下映像檔上的
compute.images.useReadOnly
: - 如要使用快照建立 VM,請按一下快照上的
compute.snapshots.useReadOnly
- 如要使用執行個體範本建立 VM,請按一下執行個體範本上的
compute.instanceTemplates.useReadOnly
- 如要將舊版網路指派給 VM:專案的
compute.networks.use
- 如要為 VM 指定靜態 IP 位址,請在專案中擁有
compute.addresses.use
權限 - 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定
compute.networks.useExternalIp
- 為 VM 指定子網路:專案或所選子網路的
compute.subnetworks.use
- 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM,請在專案或所選子網路上擁有
compute.subnetworks.useExternalIp
權限 - 如要為專案中的 VM 設定 VM 執行個體中繼資料,請執行下列指令:
compute.instances.setMetadata
- 如要為 VM 設定標記,請在 VM 上按一下
compute.instances.setTags
- 如要為 VM 設定標籤,請在 VM 上執行下列步驟:
compute.instances.setLabels
- 如要設定 VM 使用的服務帳戶,請在 VM 上執行
compute.instances.setServiceAccount
- 如要為 VM 建立新磁碟,請取得專案的
compute.disks.create
權限 - 如要以唯讀或讀寫模式連接現有磁碟,請對磁碟擁有
compute.disks.use
權限 - 如要以唯讀模式連接現有磁碟,請對磁碟擁有
compute.disks.useReadOnly
權限
- 專案的
-
如要建立執行個體範本:
按一下專案的
compute.instanceTemplates.create
-
如要建立代管執行個體群組 (MIG):
按一下專案的
compute.instanceGroupManagers.create
建立分散配置政策
除非您想測試擴散式放置政策是否適用於 VM,否則建議建立含有兩個以上可用性網域的擴散式放置政策。 Trusted Cloud by S3NS 這樣可降低單一硬體錯誤影響所有 VM 的風險。詳情請參閱「關於散布刊登位置政策」。
如要建立分散式配置政策,請選取下列任一選項:
gcloud
如要建立擴展刊登位置政策,請使用
gcloud compute resource-policies create group-placement
指令搭配--availability-domain-count
旗標。gcloud compute resource-policies create group-placement POLICY_NAME \ --availability-domain-count=DOMAIN_COUNT \ --region=REGION
更改下列內容:
POLICY_NAME
:分散式刊登位置政策的名稱。DOMAIN_COUNT
:可放置 VM 的不同可用性網域數量。此值的長度須介於1
至8
個半形字元。REGION
:要建立放置位置政策的區域。
REST
如要建立分散式配置政策,請對
resourcePolicies.insert
方法發出POST
要求。在要求主體中,請納入availabilityDomainCount
欄位。POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "POLICY_NAME", "groupPlacementPolicy": { "availabilityDomainCount": DOMAIN_COUNT } }
更改下列內容:
PROJECT_ID
:要在哪個專案中建立刊登位置政策的 ID。REGION
:要建立放置位置政策的區域。POLICY_NAME
:分散式刊登位置政策的名稱。DOMAIN_COUNT
:可放置 VM 的不同可用性網域數量。此值的長度須介於1
至8
個半形字元。
套用分散配置政策
您可以將分散式放置政策套用至現有的 VM 或 MIG,也可以在建立 VM、執行個體範本或 MIG 時套用。
如要將分散式配置政策套用至 Compute Engine 資源,請選取下列其中一種方法:
將分散式放置群組政策套用至 VM 後,您可以查看 VM 詳細資料,並檢查
availabilityDomain
欄位的值,確認 VM 所在的可用性網域。將政策套用至現有 VM
將分散式放置群組政策套用至現有 VM 前,請先考量下列事項:
如果分散式配置政策指定多個可用性網域,您可以將政策套用至 VM,不必停止 VM。不過,虛擬機器可能需要遷移至其他可用性網域。在此程序中,Compute Engine 會根據 VM 的主機維護政策停止或即時遷移 VM。
VM 和分散式配置政策必須位於相同區域。 舉例來說,如果配置方式政策位於
us-central1
地區,VM 就必須位於us-central1
地區的可用區。如要將 VM 遷移至其他地區,請參閱「在區域或地區之間移動 VM」。
如要指定放置 VM 的可用性網域,請更新 VM 的屬性,將放置政策套用至 VM。更新 VM 的屬性時,請務必加入
resourcePolicies
和scheduling.availabilityDomain
欄位。如要將分散式放置政策套用至現有 VM,請選取下列任一選項:
gcloud
如要將分散式放置政策套用至現有 VM,請使用
gcloud compute instances add-resource-policies
指令。gcloud compute instances add-resource-policies VM_NAME \ --resource-policies=POLICY_NAME \ --zone=ZONE
更改下列內容:
VM_NAME
:現有 VM 的名稱。POLICY_NAME
:現有擴展刊登位置政策的名稱。ZONE
:VM 所在的區域。
REST
如要將分散式放置群組政策套用至現有 VM,請對
instances.addResourcePolicies
方法發出POST
要求。POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies { "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
更改下列內容:
PROJECT_ID
:擴散放置群組政策和 VM 所在的專案 ID。ZONE
:VM 所在的區域。VM_NAME
:現有 VM 的名稱。REGION
:分散配置政策所在的區域。POLICY_NAME
:現有擴展刊登位置政策的名稱。
在建立 VM 時套用政策
您只能在與散布刊登位置政策相同的區域中,建立指定散布刊登位置政策的 VM。
如要建立指定分散式配置政策的 VM,請選取下列任一選項:
gcloud
如要建立指定分散式放置政策的 VM,請使用
gcloud compute instances create
指令搭配--resource-policies
旗標。gcloud compute instances create VM_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME \ --zone=ZONE
更改下列內容:
VM_NAME
:要建立的 VM 名稱。MACHINE_TYPE
:VM 的機器類型。POLICY_NAME
:現有擴展刊登位置政策的名稱。ZONE
:建立 VM 的可用區。
如要指定建立 VM 的可用性網域,請加入
--availability-domain
旗標。gcloud compute instances create VM_NAME \ --availability-domain=DOMAIN_NUMBER \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME \ --zone=ZONE
將
DOMAIN_NUMBER
替換為要放置 VM 的可用性網域編號。這個值必須介於1
和在擴展刊登位置政策中指定的網域數量之間。如要驗證放送位置政策中的網域數量,請查看放送位置政策的詳細資料。REST
如要建立指定分散式放置政策的 VM,請對
instances.insert
方法發出POST
要求。在要求主體中,請納入resourcePolicies
欄位。POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ] }
更改下列內容:
PROJECT_ID
:放置位置政策所在的專案 ID。ZONE
:要在哪個可用區建立 VM,以及機器類型所在的可用區。您只能在分散式刊登位置政策的區域內指定區域。VM_NAME
:要建立的 VM 名稱。MACHINE_TYPE
:VM 的機器類型。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:REGION
:分散配置政策所在的區域。POLICY_NAME
:現有擴展刊登位置政策的名稱。
如要指定建立 VM 的可用性網域,請在要求主體中加入
availabilityDomain
欄位。POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ], "scheduling": { "availabilityDomain": DOMAIN_NUMBER } }
將
DOMAIN_NUMBER
替換為要放置 VM 的可用性網域編號。這個值必須介於1
和在擴展刊登位置政策中指定的網域數量之間。如要驗證放送位置政策中的網域數量,請查看放送位置政策的詳細資料。如要進一步瞭解如何設定 VM 建立選項,請參閱「建立及啟動 VM 執行個體」一文。
在建立執行個體範本時套用政策
建立指定分散式放置策略的執行個體範本前,請確認下列事項:
如要建立區域執行個體範本,請在與分散式配置政策相同的區域中建立範本。否則建立執行個體範本就會失敗。
建立執行個體範本時,您可以選擇指定要建立 VM 的可用性網域。避免在單一網域中建立所有 VM。否則,單一硬體錯誤影響所有 VM 的風險不會降低。
建立指定分散式放置政策的執行個體範本後,您可以使用該範本執行下列操作:
如要建立指定分散式放置政策的執行個體範本,請選取下列其中一個選項:
gcloud
如要建立指定分散式配置政策的執行個體範本,請使用
gcloud compute instance-templates create
指令搭配--resource-policies
旗標。舉例來說,如要建立指定分散式放置群組政策的全域執行個體範本,請執行下列指令:
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME
更改下列內容:
INSTANCE_TEMPLATE_NAME
:執行個體範本的名稱。MACHINE_TYPE
:使用執行個體範本建立的 VM 機器類型。POLICY_NAME
:現有擴展刊登位置政策的名稱。
如要指定建立 VM 的可用性網域,請加入
--availability-domain
旗標。gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --availability-domain=DOMAIN_NUMBER \ --machine-type=MACHINE_TYPE \ --resource-policies=POLICY_NAME
將
DOMAIN_NUMBER
替換為要建立 VM 的可用性網域編號。這個值必須介於1
和刊登位置政策中指定的網域數量之間。如要驗證放送位置政策中的網域數量,請查看放送位置政策的詳細資料。REST
如要建立指定分散式配置政策的執行個體範本,請透過下列其中一種方法發出
POST
要求:如要建立全域執行個體範本,請使用
instanceTemplates.insert
方法。如要建立區域執行個體範本,請使用
regionInstanceTemplates.insert
方法。
在要求主體中,指定
resourcePolicies
欄位。舉例來說,如要建立指定分散式放置群組政策的全域執行個體範本,請發出下列
POST
要求:POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "POLICY_NAME" ] } }
更改下列內容:
PROJECT_ID
:放置位置政策所在的專案 ID。INSTANCE_TEMPLATE_NAME
:執行個體範本的名稱。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:MACHINE_TYPE
:使用執行個體範本建立的 VM 機器類型。POLICY_NAME
:現有擴展刊登位置政策的名稱。
如要指定建立 VM 的可用性網域,請在要求主體中加入
availabilityDomain
欄位。POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "resourcePolicies": [ "POLICY_NAME" ], "scheduling": { "availabilityDomain": DOMAIN_NUMBER } } }
將
DOMAIN_NUMBER
替換為要建立 VM 的可用性網域編號。這個值必須介於1
和刊登位置政策中指定的網域數量之間。如要驗證放送位置政策中的網域數量,請查看放送位置政策的詳細資料。如要進一步瞭解如何設定選項來建立執行個體範本,請參閱「建立執行個體範本」。
對 MIG 中的 VM 套用政策
建立執行個體範本並指定分散式放置政策後,即可使用該範本執行下列操作:
在建立 MIG 時套用政策
只有當 VM 與配置方式政策位於相同區域時,您才能建立指定分散式配置方式政策的 VM。
如要使用指定分散式放置政策的執行個體範本建立 MIG,請選取下列任一選項:
gcloud
如要使用指定分散式放置政策的執行個體範本建立 MIG,請使用
gcloud compute instance-groups managed create
指令。舉例來說,如要使用指定分散式放置策略的全域執行個體範本建立區域 MIG,請執行下列指令:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_NAME \ --zone=ZONE
更改下列內容:
INSTANCE_GROUP_NAME
:要建立的 MIG 名稱。SIZE
:MIG 的大小。INSTANCE_TEMPLATE_NAME
:現有全域執行個體範本的名稱,該範本指定了分散式配置政策。ZONE
:要建立 MIG 的可用區,必須位於分散式放置群組政策所在的區域。
REST
如要使用指定分散式放置策略的執行個體範本建立 MIG,請向下列其中一種方法發出
POST
要求:如要建立可用區 MIG,請使用
instanceGroupManagers.insert
方法。如要建立區域 MIG,請使用
regionInstanceGroupManagers.insert
方法。
舉例來說,如要使用指定分散式放置群組政策的全域執行個體範本建立區域 MIG,請發出
POST
要求,如下所示:POST https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "versions": [ { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME" } ] }
更改下列內容:
PROJECT_ID
:專案的 ID,其中包含擴散刊登位置政策,以及指定刊登位置政策的執行個體範本。ZONE
:要建立 MIG 的可用區,必須位於分散式放置群組政策所在的區域。INSTANCE_GROUP_NAME
:要建立的 MIG 名稱。SIZE
:MIG 的大小。INSTANCE_TEMPLATE_NAME
:現有全域執行個體範本的名稱,該範本指定了分散式配置政策。
如要進一步瞭解建立 MIG 的設定選項,請參閱「建立 MIG 的基本情境」。
將政策套用至現有 MIG
只有當現有 MIG 與放置政策位於同一區域,或當區域 MIG 與放置政策位於同一區域的可用區時,您才能將分散式放置政策套用至現有 MIG。
如要更新 MIG,以使用指定分散式放置政策的執行個體範本,請選取下列其中一個選項:
gcloud
如要更新 MIG,以使用指定分散式放置政策的執行個體範本,請使用
gcloud compute instance-groups managed rolling-action start-update
指令。舉例來說,如要更新區域 MIG,使其使用指定分散式放置政策的執行個體範本,並將 MIG 中的現有 VM 替換為指定範本屬性的新 VM,請執行下列指令:
gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \ --version=template=INSTANCE_TEMPLATE_NAME \ --zone=ZONE
更改下列內容:
INSTANCE_GROUP_NAME
:現有 MIG 的名稱。INSTANCE_TEMPLATE_NAME
:現有全域執行個體範本的名稱,該範本指定了分散式配置政策。ZONE
:MIG 所在的可用區。您只能將分散配置政策套用至與配置政策位於同一地區的 MIG。
REST
如要更新 MIG,使其使用指定分散式放置政策的執行個體範本,並自動將範本和放置政策的屬性套用至 MIG 中的現有 VM,請對下列其中一種方法提出
PATCH
要求:如要更新區域 MIG,請使用
instanceGroupManagers.insert
方法。如要更新區域 MIG,請使用
regionInstanceGroupManagers.insert
方法。
舉例來說,如要更新區域 MIG,使其使用指定分散式放置政策的全球執行個體範本,並將 MIG 中的現有 VM 替換為指定範本屬性的新 VM,請發出下列
PATCH
要求:PATCH https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME" }
更改下列內容:
PROJECT_ID
:您用來建立現有 MIG 的專案 ID、分散式配置政策,以及指定分散式配置政策的執行個體範本。ZONE
:MIG 所在的可用區。您只能將分散配置政策套用至與配置政策位於同一地區的 MIG。INSTANCE_GROUP_NAME
:現有 MIG 的名稱。INSTANCE_TEMPLATE_NAME
:現有全域執行個體範本的名稱,該範本指定了分散式配置政策。
如要進一步瞭解更新 MIG 中 VM 的設定選項,請參閱「更新 MIG 中 VM 的設定並套用新設定」。
後續步驟
瞭解如何查看刊登位置政策。
瞭解如何取代、移除或刪除刊登位置政策。
瞭解如何使用指定配置方式政策的 VM 執行下列操作:
進一步瞭解維護事件期間的即時遷移程序。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-08 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-08-08 (世界標準時間)。"],[[["Spread placement policies distribute virtual machines (VMs) across different availability domains to enhance reliability and mitigate location-specific disruptions like hardware errors."],["To implement a spread placement policy, you must first create the policy specifying the number of availability domains, and then apply it to existing or new VMs, instance templates, or managed instance groups (MIGs)."],["You can apply spread placement policies to an existing VM without stopping it, although relocation to a different availability domain may occur, depending on the number of domains specified."],["When creating or applying policies to VMs, they must be in the same region as the spread placement policy."],["To create and apply spread placement policies, you will need to have specific IAM roles like `roles/compute.instanceAdmin.v1` on your project, or have the permissions needed to create and apply them."]]],[]] -