將永久磁碟設定為有狀態,即可在保留磁碟狀態的同時,享有 VM 執行個體自動修復和自動更新的優勢。
您可以將執行個體範本中定義的任何磁碟,設定為代管執行個體群組 (MIG) 中所有執行個體的狀態保留磁碟,方法是將該磁碟的裝置名稱新增至 MIG 的狀態保留政策。
您也可以設定個別執行個體設定,為 MIG 中的執行個體個別設定有狀態永久磁碟;這些磁碟不必在執行個體範本中定義。
事前準備
- 請參閱使用有狀態的 MIG 的時機和有狀態的 MIG 如何運作。
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Terraform
To use the Terraform samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
限制
具備有狀態磁碟的 MIG 有下列限制:
有狀態設定的 MIG (有狀態的 MIG) 有下列限制:
- 如果 MIG 有有狀態設定,就無法使用自動調度資源功能。
- 如果您想使用自動滾動更新,請務必將替換方法設為
RECREATE
。 - 針對有狀態的地區 MIG,您必須停用主動式重新分配功能 (將重新分配類型設為
NONE
),才能防止自動跨區重新分配功能刪除有狀態的執行個體。 如果您使用所有執行個體設定覆寫執行個體範本屬性,就無法在任何個別執行個體設定中指定這些屬性,同時在群組的所有執行個體設定中指定這些屬性。
有狀態的區域性 MIG 不會自動協調跨區故障轉移。使用區域性 MIG 時,您可以將備援副本部署至多個可用區,並依賴應用程式的資料複寫功能,讓具狀態的應用程式能夠因應可用區故障。
使用有狀態永久磁碟的時機
使用有狀態的永久磁碟,即可利用 VM 的自動修復和自動更新功能,同時保留磁碟上的資料。詳情請參閱有狀態 MIG 的用途。
設定有狀態磁碟後,系統會在 VM 執行個體的自動修復、更新和重新建立事件中保留這些磁碟。但這也表示無法從原始映像檔重新建立有狀態磁碟,或將其更新為新映像檔。
建議您不要為開機磁碟設定狀態。
讓啟動磁碟處於無狀態模式有下列優點:
- 您可以從原始映像檔重新建立損毀的開機磁碟,以便進行修復。自動修復功能會自動執行這類修復作業。
- 您可以將開機磁碟更新至含有新版本和安全性修補程式的最新映像檔。
為 MIG 中的所有 VM 設定有狀態永久磁碟
將磁碟的裝置名稱新增至 MIG 的有狀態政策,即可將執行個體範本中定義的任何磁碟設為有狀態。MIG 會將具有該裝置名稱的磁碟視為所有現有和未來 VM 執行個體的狀態磁碟。
在建立 MIG 時設定有狀態磁碟
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
選取您的專案並點選 [繼續]。
點選「建立執行個體群組」。
選取「New managed instance group (stateful)」(新增代管執行個體群組 (有狀態))。
指定執行個體群組的 [名稱]。
選取執行個體範本。如果沒有可用的範本,請建立執行個體範本。
在「Number of instances」(執行個體數) 底下,指定執行個體群組的執行個體數。
「有狀態設定」部分會顯示執行個體範本中指定的磁碟。按一下磁碟即可編輯其有狀態設定。
- 在「有狀態」下方,選取「是」。
從「On permanent instance deletion」下拉式選單中,選取刪除 VM 執行個體時要對有狀態磁碟執行的動作。可用的選項如下:
- 卸離磁碟:(預設)請勿刪除磁碟,而是在刪除 VM 時卸離磁碟。
- 刪除磁碟:當 VM 從執行個體群組中永久刪除時,刪除具有狀態的磁碟,例如手動刪除代管執行個體,或是縮減群組大小時。
完成有狀態設定後,請按一下「完成」。
按一下 [建立]。
gcloud
如要指定在建立 MIG 時,哪些執行個體範本磁碟應為有狀態,請使用 --stateful-disk
標記搭配 gcloud compute instance-groups managed create
指令:
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template INSTANCE_TEMPLATE \ --size SIZE \ --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]
更改下列內容:
INSTANCE_GROUP_NAME
:要建立的受管理執行個體群組名稱。INSTANCE_TEMPLATE
:建立執行個體時要使用的執行個體範本名稱。SIZE
:這個群組所需的 VM 初始數量。DEVICE_NAME
:在執行個體範本中指定的磁碟裝置名稱。DELETE_RULE
:這個值會規定在刪除 VM 時,有狀態磁碟應發生的情況。可用的選項如下:never
:(預設值)。請勿刪除磁碟,而是在刪除 VM 時卸離磁碟。on-permanent-instance-deletion
:當 VM 執行個體從執行個體群組中永久刪除時,系統會刪除磁碟,例如手動刪除代管執行個體,或是群組大小減少時。
無論刪除規則的值為何,VM 自動修復、更新和重新建立作業一律會保留有狀態磁碟。
示例
您想要部署含有 12 個區塊的資料庫,每個區塊都含有含有作業系統和資料庫二進位檔的無狀態開機磁碟,以及含有狀態資料磁碟的磁碟。請按照下列步驟操作:
建立執行個體範本,其中包含以映像檔
img-example-db-v01
為基礎的無狀態開機磁碟 (已預先安裝 OS 和資料庫),以及含有狀態資料磁碟:gcloud compute instance-templates create example-database-template-v01 \ --image img-example-db-v01 \ --create-disk device-name=data-disk,mode=rw,image=empty10GBext4
--create-disk
旗標會指示 MIG 執行下列操作:- 從事先準備的空白 ext4 映像檔,為每個 VM 執行個體建立新的 10 GB 磁碟。
- 使用裝置名稱
data-disk
,以讀/寫模式將磁碟附加至 VM。
從執行個體範本建立 MIG,並將資料磁碟定義為有狀態磁碟:
gcloud compute instance-groups managed create example-database-group \ --template example-database-template-v01 \ --base-instance-name shard \ --size 12 \ --stateful-disk device-name=data-disk,auto-delete=on-permanent-instance-deletion
裝置名稱
data-disk
取自執行個體範本。系統會將資料磁碟設為在 VM 永久刪除 (可能是因為手動刪除執行個體,或是手動減少群組大小) 時一併刪除。系統會在自動修復、更新及重新建立 VM 時保留資料磁碟。確認資料磁碟已在有狀態政策中設定:
gcloud compute instance-groups managed describe example-database-group baseInstanceName: shard ... name: example-database-group ... statefulPolicy: preservedState: disks: data-disk: autoDelete: ON_PERMANENT_INSTANCE_DELETION ...
您可以看到,狀態式政策會將裝置名稱
data-disk
的磁碟宣告為狀態式,並提供規則,在永久刪除 VM 時刪除這類磁碟。
Terraform
如果您尚未建立執行個體範本 (用於指定 MIG 中每個 VM 的機器類型、開機磁碟映像檔、網路和其他 VM 屬性),請建立執行個體範本。
以下範例會建立具備有狀態磁碟的可用區 MIG。如要指定在建立 MIG 時,哪些執行個體範本磁碟應具有狀態,請加入 stateful_disk
區塊。如要進一步瞭解範例中使用的資源,請參閱 google_compute_instance_group_manager
資源。如要建立區域性 MIG,請使用 google_compute_region_instance_group_manager
資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要指定執行個體範本中的哪些磁碟應在 MIG 建立時具有狀態,請在 instanceGroupManagers.insert
method 的請求主體中,將這些磁碟加入 statefulPolicy
欄位:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers { "name": "NAME", "versions": [ { "instanceTemplate": "global/instanceTemplates/TEMPLATE" } ], "targetSize": SIZE, "statefulPolicy": { "preservedState": { "disks": { "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }, "DEVICE_NAME": {"autoDelete": "DELETE_RULE" } } } } }
更改下列內容:
PROJECT
:要求的專案 ID。ZONE
:MIG 所在的區域 (適用於可用區 MIG)。- 如果是區域 MIG,請將
zones/ZONE
替換為regions/REGION
,並指定 MIG 的區域。
- 如果是區域 MIG,請將
NAME
:要建立的 MIG 名稱。TEMPLATE
:建立執行個體時要使用的執行個體範本名稱。SIZE
:這個群組中所需的初始執行個體數量。DEVICE_NAME
:在執行個體範本中指定的磁碟裝置名稱。DELETE_RULE
:這個值會規定在刪除 VM 執行個體時,應如何處理具有狀態的磁碟。可用的選項如下:never
:(預設值)。請勿刪除磁碟,而是在刪除 VM 時卸離磁碟。on_permanent_instance_deletion
:當其 VM 從執行個體群組中永久刪除時,刪除具有狀態的磁碟,例如手動刪除代管執行個體或縮減群組大小時。
示例
您想要部署資料庫,其中包含 12 個區塊,每個區塊都有一個無狀態的開機磁碟,其中包含作業系統和資料庫二進位檔,以及每個區塊都有一個有狀態資料磁碟。請按照下列步驟操作。
使用
instanceTemplates.insert
方法,建立含有狀態式開機磁碟的映像檔img-example-db-v01
為基礎的執行個體範本,其中包含預先安裝的 OS 和資料庫,以及狀態式資料磁碟:POST https://compute.googleapis.com/compute/v1/projects/example-project/global/instanceTemplates { "name": "example-database-template-v01", "properties": { "machineType":"e2-standard-2", "disks": [ { "boot": true, "deviceName": "boot-disk", "initializeParams": { "sourceImage": "projects/example-project/global/images/mg-example-db-v01" } }, { "deviceName": "data-disk", "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/example-project/global/images/empty10GBext4" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ] } }
執行個體範本中的資料磁碟具有裝置名稱
data-disk
,並且已設定為使用事先準備好的空白 ext4 映像檔建立,並以讀/寫模式連接。使用執行個體範本建立 MIG,並使用
instanceGroupManagers.insert
方法將資料磁碟定義為有狀態:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers { "name": "example-database-group", "baseInstanceName": "shard", "versions": [ { "instanceTemplate": "global/instanceTemplates/example-database-template-v01" } ], "targetSize": 12, "statefulPolicy": { "preservedState": { "disks": { "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" } } } } }
MIG 會建立 12 個執行個體,每個執行個體都具有下列屬性的磁碟:
- 從執行個體範本取得的裝置名稱
data-disk
。 - 刪除規則,用於在刪除 VM (可能是因為手動刪除執行個體,或是手動減少群組大小) 時刪除資料磁碟。
- 每個受管理執行個體的政策 (
preservedStateFromPolicy
) 中保留狀態的項目,以便在自動修復、更新和重新建立執行個體時保留資料磁碟。
- 從執行個體範本取得的裝置名稱
使用
instanceGroupManagers.get
方法,確認資料磁碟已在新的instanceGroupManagers
資源的有狀態政策中設定:GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group
{ "name": "example-database-group", "baseInstanceName": "shard", ... "statefulPolicy": { "preservedState": { "disks": { "data-disk": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" } } } } ... }
您可以看到,有狀態政策會宣告裝置名稱為
data-disk
的磁碟為有狀態,並設有刪除永久執行個體時刪除此類磁碟的規則。
設定及更新現有 MIG 中磁碟的有狀態設定
如果您要在無狀態的 MIG (沒有任何有狀態設定的 MIG) 上執行有狀態應用程式,可以將執行個體範本中定義的現有磁碟設定為有狀態,以便適用於這個 MIG 中的所有執行個體。這樣一來,您就能在重新建立、自動修復及更新執行個體的作業中保留磁碟,也可以選擇在刪除作業中保留磁碟。
您可以執行下列操作:
- 將在執行個體範本中定義的磁碟新增至現有 MIG 的有狀態政策,宣告這些磁碟為有狀態。這會針對 MIG 中的所有現有和未來執行個體,將磁碟標示為具有狀態的磁碟。
- 更新有狀態政策,變更磁碟的有狀態設定。
MIG 會自動且非同步地將有狀態政策中的更新設定套用至所有執行個體。有狀態政策中的磁碟設定更新不會中斷執行中的 VM。詳情請參閱套用有狀態政策更新。
針對區域 MIG,您必須先停用主動式跨區域執行個體重新分配功能,才能設定有狀態磁碟。詳情請參閱區域群組如何處理已保留的狀態。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
按一下要為磁碟指定有狀態設定的執行個體群組名稱。
按一下「編輯」,修改代管執行個體群組。
在「Stateful configuration」(有狀態設定) 下方,展開要設為有狀態的磁碟。
- 在「有狀態」下方,選取「是」。
在「On permanent instance deletion」(永久刪除執行個體時) 下拉式選單中,選取刪除 VM 執行個體時要對有狀態磁碟執行的動作。
- 卸離磁碟:(預設)請勿刪除磁碟,而是在刪除 VM 時卸離磁碟。
刪除磁碟:當 VM 從執行個體群組中永久刪除時,刪除具有狀態的磁碟,例如手動刪除代管執行個體,或是縮減群組大小時。
更新具狀態設定後,請按一下「完成」。
按一下「儲存」,完成更新。
gcloud
如要指定執行個體範本中的哪些磁碟應為有狀態,或更新現有 MIG 的有狀態磁碟設定,請使用 gcloud compute instance-groups managed update
指令搭配一或多個 --stateful-disk
標記:
gcloud compute instance-groups managed update NAME \ --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]
更改下列內容:
NAME
:要更新的受管理執行個體群組名稱。DEVICE_NAME
:在執行個體範本中指定的磁碟裝置名稱。DELETE_RULE
:這個值會規定在刪除 VM 執行個體時,應如何處理具有狀態的磁碟。可用的選項如下:never
:(預設值)。請勿刪除磁碟,請在刪除執行個體時卸離磁碟。on-permanent-instance-deletion
:當有狀態磁碟的執行個體從執行個體群組中永久刪除時,系統會刪除該磁碟,例如當代管執行個體遭到手動刪除,或是群組大小減少時。
如果已在有狀態政策中設定指定的裝置名稱,則指令會更新設定。
示例
您在名為 example-database-
group
的 MIG 上執行具有多個區塊的資料庫。MIG 中的每個 VM 都會在額外磁碟上儲存分片,該磁碟的裝置名稱為 data-disk
,由執行個體範本定義。MIG 沒有有狀態設定,您想在重新建立、自動修復及更新執行個體時保留資料磁碟。您也想在刪除 VM 時保護資料磁碟,避免遭到刪除。
使用下列指令更新 MIG,將資料磁碟定義為有狀態的磁碟:
gcloud compute instance-groups managed update example-database-group \ --stateful-disk device-name=data-disk,auto-delete=never
因此,MIG 會自動且非同步地將有狀態政策設定更新套用至所有執行個體的資料磁碟。系統現在會在自動修復、更新及重新建立執行個體時保留資料磁碟,並在刪除執行個體時卸載資料磁碟,因為
auto-delete
規則已設為never
。請執行
gcloud compute instance-groups managed describe example-database-group
指令,確認資料磁碟已在有狀態政策中設定。
REST
如要指定哪些執行個體範本磁碟應為有狀態,或更新現有 MIG 的有狀態磁碟設定,請使用 instanceGroupManagers.patch
方法,在 MIG 的有狀態政策中設定磁碟:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME { "statefulPolicy": { "preservedState": { "disks": { "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }, "DEVICE_NAME": {"autoDelete": "DELETE_RULE" } } } } }
更改下列內容:
PROJECT
:要求的專案 ID。ZONE
:MIG 所在的區域 (適用於可用區 MIG)。- 如果是區域 MIG,請將
zones/ZONE
替換為regions/REGION
,並指定 MIG 的區域。
- 如果是區域 MIG,請將
NAME
:要更新的 MIG 名稱。DEVICE_NAME
:您想要更新狀態式設定的磁碟裝置名稱,該名稱已在執行個體範本中指定。DELETE_RULE
:這個值會規定在刪除 VM 執行個體時,應如何處理具有狀態的磁碟。可用的選項如下:never
:(預設值)。請勿刪除磁碟,請在刪除執行個體時卸離磁碟。on-permanent-instance-deletion
:當有狀態磁碟的執行個體從執行個體群組中永久刪除時,例如手動刪除執行個體或縮減群組大小時,請刪除該磁碟。
如果已在有狀態政策中設定指定的裝置名稱,patch
方法會更新其設定。
示例
您在名為 example-database-
group
的 MIG 上執行具有多個區塊的資料庫。MIG 中的每個 VM 都會在額外磁碟上儲存分片,該磁碟的裝置名稱為 data-disk
,由執行個體範本定義。MIG 沒有有狀態設定,您想在重新建立、自動修復及更新執行個體時保留資料磁碟。您也想在刪除 VM 時保護資料磁碟,避免遭到刪除。
修補 MIG 以將資料磁碟定義為有狀態:
PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-group { "statefulPolicy": { "preservedState": { "disks": { "data-disk": {"autoDelete": "NEVER" } } } } }
MIG 會自動且非同步地將此有狀態設定套用至所有執行個體的資料磁碟。系統會在自動修復、更新及重新建立執行個體時保留資料磁碟。由於
autoDelete
規則已設為NEVER
,因此在刪除執行個體時,系統會卸載資料磁碟。查看
instanceGroupManagers.get
方法傳回的instanceGroupManagers
資源,確認資料磁碟是否已在有狀態政策中設定。
將先前有狀態的永久磁碟宣告為無狀態
您可能需要將有狀態磁碟設為無狀態。例如:
- 如果您重新架構應用程式,將狀態從磁碟移出。
- 如果您誤將磁碟設定為有狀態,並且想要還原設定。
如要將所有具有特定裝置名稱的磁碟宣告為無狀態,請從有狀態政策中移除磁碟的設定。
MIG 會自動且非同步地將變更套用至所有執行個體的有狀態政策。有狀態政策中的磁碟設定更新不會中斷執行中的 VM 例項。
詳情請參閱「套用有狀態政策更新」。
主控台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
按一下要移除磁碟狀態設定的執行個體群組名稱。
按一下「編輯」,修改代管執行個體群組。
在「有狀態設定」下方,展開要設為無狀態的磁碟。
- 將「有狀態」選項變更為「否」。
- 按一下 [完成]。
完成變更後,按一下「儲存」。
gcloud
如要指定要將 MIG 有狀態政策中的哪些磁碟設為無狀態,請搭配 gcloud compute instance-groups managed update
指令使用 --remove-stateful-disks
標記:
gcloud compute instance-groups managed update NAME \ --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...]
更改下列內容:
NAME
:要更新的 MIG 名稱。DEVICE_NAME
:要從有狀態政策中移除的磁碟裝置名稱,並視為無狀態。您可以在清單中提供一個或多個裝置名稱。
示例
您在名為 example-legacy-group
的 MIG 上執行含有多個節點的舊版應用程式。MIG 中的每個 VM 都會將應用程式資料儲存在裝置名稱為 boot-disk
的開機磁碟上,您已在 MIG 的有狀態政策中將其設為有狀態。您已將應用程式資料移至其他磁碟,現在想要讓開機磁碟保持無狀態,以便輕鬆更新至新映像檔。
如要移除開機磁碟的具狀態設定,請更新受管理的執行個體群組:
gcloud compute instance-groups managed update example-legacy-group \ --remove-stateful-disks boot-disk
MIG 會自動且非同步地移除群組中所有執行個體的啟動磁碟的裝置名稱 boot-disk
狀態設定。開機磁碟仍會連結至執行個體,但不再具有狀態。重新建立或更新執行個體,或執行個體自動修復時,MIG 會根據執行個體範本中指定的映像檔,重新建立開機磁碟。
REST
如要指定要將 MIG 有狀態政策中的哪些磁碟設為無狀態,請使用 instanceGroupManagers.patch
方法從 MIG 有狀態政策中移除每個磁碟的設定:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/NAME { "statefulPolicy": { "preservedState": { "disks": { "DEVICE_NAME": null, ... } } } }
更改下列內容:
PROJECT
:要求的專案 ID。ZONE
:MIG 所在的區域 (適用於可用區 MIG)。- 如果是區域 MIG,請將
zones/ZONE
替換為regions/REGION
,並指定 MIG 的區域。
- 如果是區域 MIG,請將
NAME
:要更新的 MIG 名稱。DEVICE_NAME
:您要從有狀態政策中移除的磁碟裝置名稱。提供null
值會導致系統移除該磁碟的具狀態設定。您可以提供一或多個要移除的裝置名稱。
示例
您在名為 example-legacy-group
的 MIG 上執行含有多個節點的舊版應用程式。MIG 中的每個 VM 會在裝置名稱為 boot-disk
的開機磁碟上儲存應用程式資料,您已在 MIG 的有狀態政策中將其設為有狀態。您已將應用程式資料移至其他磁碟,現在想要讓開機磁碟無狀態,以便輕鬆更新至新映像檔。
如要移除啟動磁碟的具狀態設定,請為受管理的執行個體群組套用修正程式:
PATCH https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group { "statefulPolicy": { "preservedState": { "disks": { "boot-disk": null } } } }
MIG 會自動且非同步地移除群組中所有執行個體的啟動磁碟的裝置名稱 boot-disk
狀態設定。開機磁碟仍會連結至執行個體,但不再具有狀態。重新建立或更新執行個體,或執行個體自動修復時,MIG 會根據執行個體範本中指定的映像檔,重新建立開機磁碟。
從 MIG 中移除有狀態的永久磁碟
您可能需要從 MIG 中的執行個體中完全移除具有狀態的磁碟,例如重新架構應用程式並將狀態移出該磁碟。
MIG 不允許移除有狀態磁碟,因此您必須執行下列步驟:
- 從有狀態政策中移除磁碟的有狀態設定。這會使具有指定裝置名稱的磁碟變成無狀態。
- 如果仍想保留磁碟,請從 VM 中卸離磁碟。
- 推出新的執行個體範本,不再使用指定的裝置名稱定義磁碟。
為 MIG 中的 VM 個別設定有狀態永久磁碟
將磁碟的裝置名稱新增至 VM 的個別執行個體設定,為 MIG 中的特定 VM 設定有狀態的永久磁碟。更新 VM 以套用個別執行個體設定並使其生效。
如果您需要:
- 將現有工作負載 (帶有現有磁碟) 從獨立 VM 遷移至有狀態的 MIG,以便享有自動修復和簡易更新的優勢。
- 還原磁碟備份,這些磁碟是為個別 VM 設定的。
- 將額外的有狀態磁碟暫時連接至特定 VM,以便測試、偵錯或複製資料。
將現有的有狀態磁碟新增至 MIG 中的新 VM
您可以將現有的有狀態磁碟新增至在 MIG 中手動建立的新執行個體。這項功能可用於將有狀態應用程式從現有的獨立虛擬機器遷移至有狀態的 MIG,例如:
- 建立執行個體範本,為所有 VM 執行個體設定通用設定。
- 卸離資料磁碟與獨立執行個體的連結,然後刪除這些執行個體。如果開機磁碟含有應保留的狀態,您也可以卸除開機磁碟。
- 使用先前建立的執行個體範本建立空白 MIG。
在 MIG 中建立執行個體,並使用適當的名稱和上一個步驟中建立的相關聯磁碟。MIG 會透過以下動作回應您的要求:
- 使用提供的執行個體名稱,從執行個體範本建立 VM。
- 地區 MIG 會在磁碟所在的區域中建立 VM。如果磁碟是區域性磁碟,區域性 MIG 會在磁碟的任一備援區域中建立 VM。
- 使用磁碟的提供狀態設定,建立個別執行個體設定。
- 將磁碟連結至新的執行個體。
- 使用提供的執行個體名稱,從執行個體範本建立 VM。
使用 gcloud CLI 或 REST 在 MIG 中手動建立特定執行個體時,請新增現有的有狀態磁碟。MIG 會在建立 VM 時立即套用設定。
gcloud
如要建立自訂名稱的 VM,並將一或多個現有的有狀態磁碟連接至該 VM,請使用 gcloud compute instance-groups managed create-instance
指令搭配一或多個 --stateful-disk
標記。
gcloud compute instance-groups managed create-instance NAME \ --instance VM_NAME \ [--zone ZONE | --region REGION] \ --stateful-disk device-name=DEVICE_NAME,source=DISK[,mode=MODE][,auto-delete=DELETE_RULE]
更改下列內容:
NAME
:您需要建立執行個體的 MIG 名稱。VM_NAME
:要建立的新執行個體名稱。ZONE
:MIG 所在的可用區 (適用於可用區 MIG)。REGION
:MIG 所在的區域 (適用於區域性 MIG)。DEVICE_NAME
:連結磁碟時要使用的裝置名稱。DISK
:在指定DEVICE_NAME
下連結現有永久磁碟的 URI,其格式為projects/project-id/zones/zone/disks/disk-name
(區域磁碟) 和projects/project-id/regions/region/disks/disk-name
(地區磁碟)。MODE
:指定磁碟模式。支援的選項如下:ro
:唯讀。rw
:(預設)。讀取/寫入。
DELETE_RULE
:這個值會規定在刪除 VM 執行個體時,應如何處理具有狀態的磁碟。可用的選項如下:never
:(預設值)。切勿刪除磁碟,而是在刪除執行個體時卸離磁碟。on-permanent-instance-deletion
:當有狀態磁碟的執行個體從執行個體群組中永久刪除時,例如手動刪除執行個體或縮減群組大小時,請刪除該磁碟。
無論刪除規則的值為何,在執行個體自動修復、更新和重新建立作業時,系統一律會保留有狀態磁碟。
示例
您想為目前在名為 db-instance
的獨立 VM 上執行,且目前在名為 db-data-disk-1
的磁碟上儲存資料的資料庫伺服器啟用自動修復功能。
建立具備自動修復功能的有狀態 MIG,在 MIG 中建立類似的 VM,然後將現有資料磁碟 db-data-disk-1
連接至新執行個體,做為有狀態磁碟:
- 在維護期間停止 VM
db-instance
。 - 使用
db-instance
設定建立名為db-template
的執行個體範本。 - 將
db-data-disk-1
從db-instance
中分離,然後刪除db-instance
。 - 從
db-template
建立空白的 MIGexample-database-mig
,並設定自動修復功能。 使用原始
db-instance
名稱建立受管理的執行個體,並將db-data-disk-1
連接為有狀態磁碟:gcloud compute instance-groups managed create-instance example-database-mig \ --instance db-instance \ --zone us-east1-c \ --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/db-data-disk-1,auto-delete=never
這項指令會在 MIG 中建立執行個體
db-instance
,並使用db-data-disk-1
有狀態磁碟建立相應的個別執行個體設定,然後將磁碟連結至新的 VM,並使用data-disk
做為裝置名稱。
REST
如要在 MIG 中建立一或多個執行個體、設定自訂 VM 名稱,以及將一或多個現有的有狀態磁碟附加至這些執行個體,請使用 instanceGroupManagers.createInstances
方法。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances { "instances": [ { "name": "VM_NAME", "preservedState" : { "disks": { "DEVICE_NAME" : { "source": "DISK", "mode": "MODE", "autoDelete": "DELETE_RULE" }, ... } } }, ... ] }
更改下列內容:
PROJECT_ID
:要求的專案 ID。ZONE
:MIG 所在的區域 (適用於可用區 MIG)。- 如果是區域 MIG,請將
zones/ZONE
替換為regions/REGION
,並指定 MIG 的區域。
- 如果是區域 MIG,請將
NAME
:要建立執行個體的 MIG 名稱。VM_NAME
:要建立的執行個體名稱。DEVICE_NAME
:連結磁碟時要使用的裝置名稱。DISK
:要附加至指定DEVICE_NAME
的現有永久磁碟 URI,格式為區域磁碟的projects/project-id/zones/zone/disks/disk-name
或地區磁碟的projects/project-id/regions/region/disks/disk-name
。MODE
:指定磁碟模式。支援的選項如下:READ_ONLY
:唯讀。READ_WRITE
:(預設)。讀取/寫入。
DELETE_RULE
:這個值會規定在刪除 VM 時,有狀態磁碟應發生的情況。可用的選項如下:never
:(預設)。請勿刪除磁碟,而是在刪除 VM 時卸離磁碟。on-permanent-instance-deletion
:當有狀態磁碟的執行個體從執行個體群組中永久刪除時,例如執行個體遭到手動刪除或群組大小減少時,請刪除該磁碟。
無論刪除規則的值為何,在執行個體自動修復、更新和重新建立作業時,系統一律會保留有狀態磁碟。
示例
您想為目前在名為 db-instance
的獨立 VM 上執行,且目前在名為 db-data-disk-1
的磁碟上儲存資料的資料庫伺服器啟用自動修復功能。
建立具備自動修復功能的有狀態 MIG,在 MIG 中建立類似的執行個體,然後將現有的資料磁碟 db-data-disk-1
連接至新 VM 做為有狀態磁碟:
- 在維護期間停止 VM
db-instance
。 - 使用
db-instance
設定建立名為db-template
的執行個體範本。 - 將
db-data-disk-1
從db-instance
中分離,然後刪除db-instance
。 - 從
db-template
建立空白的 MIGexample-database-mig
,並設定自動修復功能。 請使用原始
db-instance
名稱建立執行個體,並將db-data-disk-1
附加為有狀態磁碟:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/createInstances { "instances": [ { "name": "db-instance", "preservedState" : { "disks": { "data-disk" : { "source": "projects/example-project/zones/us-east1-c/disks/db-data-disk-1", "mode": "READ_WRITE", "autoDelete": "never" } } } } ] }
這個方法會在 MIG 中建立
db-instance
執行個體,並使用db-data-disk-1
有狀態磁碟建立相應的個別執行個體設定,然後將磁碟連結至新執行個體,並使用data-disk
做為裝置名稱。
為 MIG 中的 VM 個別新增、宣告及取代有狀態磁碟
在相關聯的個別執行個體設定中新增或更新有狀態磁碟設定,為受管理的執行個體個別設定有狀態磁碟。接著更新執行個體,將個別執行個體設定套用至 VM。
個別設定有狀態磁碟可用於下列工作:
- 將有狀態磁碟從 MIG 外部新增至該 MIG 中的 VM。
- 將先前無狀態的磁碟宣告為 MIG 中 VM 的有狀態磁碟。
- 在 MIG 中,為 VM 以其他磁碟取代有狀態磁碟。
將有狀態磁碟從 MIG 外部新增至該 MIG 中的 VM。您可以將 MIG 以外的任何磁碟連結至受管理的執行個體,方法是將磁碟的狀態設定新增至相關聯的個別執行個體設定。套用設定後,MIG 會自動將磁碟連接至執行個體,並將磁碟視為有狀態。
將先前為無狀態的永久磁碟宣告為有狀態。您可以將先前為無狀態的磁碟 (目前已連結至 VM) 宣告為有狀態,方法是將此磁碟的狀態設定 (包括裝置名稱和 URI) 新增至相關聯的個別執行個體設定。套用設定後,MIG 就會開始以有狀態的方式保留磁碟。
以其他磁碟取代有狀態磁碟。在某些情況下,例如需要存取已復原的備份時,將一個有狀態磁碟替換為另一個有狀態磁碟可能會很有用。您可以更新磁碟的 URI,同時在個別執行個體設定中保留相同的裝置名稱,藉此交換具有狀態的磁碟。套用更新後的個別執行個體設定後,MIG 會卸離舊磁碟,並使用相同的裝置名稱附加新的磁碟。套用更新時,請選擇要讓執行個體繼續執行、重新啟動或重新建立。至少需要重新啟動 VM,才能交換開機磁碟。
gcloud
如要為 MIG 中的 VM 個別設定有狀態磁碟,請在相關聯的個別執行個體設定中新增或更新有狀態磁碟設定。接著更新執行個體,套用設定。
如果執行個體尚未有個別設定,請使用 gcloud compute instance-groups managed instance-configs create
指令搭配一或多個 --stateful-disk
旗標:
gcloud compute instance-groups managed instance-configs create NAME \ --instance VM_NAME \ --stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \ [--no-update-instance | --update-instance] \ [--instance-update-minimal-action MINIMAL_ACTION]
如果執行個體已存在個別設定,請使用 gcloud compute instance-groups managed instance-configs update
指令搭配一或多個 --stateful-disk
旗標。
--update-instance
標記 (預設) 會立即將變更套用至執行個體。如果您使用 --no-update-instance
,變更仍未套用,並會在下次重新建立或更新執行個體時套用。
gcloud compute instance-groups managed instance-configs update NAME \ --instance VM_NAME \ --stateful-disk device-name=DEVICE_NAME[,source=DISK][,mode=MODE][,auto-delete=DELETE_RULE] \ [--no-update-instance | --update-instance] \ [--instance-update-minimal-action MINIMAL_ACTION]
更改下列內容:
NAME
:代管執行個體群組的名稱。VM_NAME
:要設定有狀態磁碟的 VM 執行個體名稱。DEVICE_NAME
:用於連結磁碟的裝置名稱。DISK
:要連結至指定DEVICE_NAME
的現有永久磁碟 URI,其格式為projects/project-id/zones/zone/disks/disk-name
(區域磁碟) 和projects/project-id/regions/region/disks/disk-name
(地區磁碟)。如果裝置已在執行個體的個別執行個體設定中定義,則
source=DISK
子旗標為選用項目。否則為必填項目。如果省略,則目前設定的磁碟 URI 會維持不變。
MODE
:指定磁碟模式。您必須同時指定source
,才能指定mode
。支援的選項包括:ro
:唯讀。rw
:(預設)。讀取/寫入。
如果省略,系統會為新的有狀態磁碟設定預設值;在現有設定中,該值會維持不變。
DELETE_RULE
:這個值會規定在刪除 VM 時,有狀態磁碟應發生的情況。可用的選項如下:never
:(預設)。切勿刪除磁碟,而是在刪除執行個體時卸離磁碟。on-permanent-instance-deletion
:當有狀態磁碟的執行個體從執行個體群組中永久刪除時 (例如手動刪除執行個體或縮減群組大小),請刪除該磁碟。
如果省略,系統會為新的有狀態磁碟設定預設值;在現有設定中,該值會維持不變。
無論刪除規則的值為何,在執行個體自動修復、更新和重新建立作業時,系統一律會保留有狀態磁碟。
MINIMAL_ACTION
:將個別執行個體設定更新套用至執行個體時,至少執行指定的動作。必須與--update-instance
旗標搭配使用。值必須是下列其中一種:none
:無動作。refresh
:套用可在未停止 VM 的情況下套用的更新。restart
:停止 VM,然後重新啟動。replace
:重新建立 VM。
如果省略,系統會使用更新作業所需的干擾程度最低的動作。
示例
目前已連結的有狀態磁碟 data-disk-1
上的資料已損毀,您想要從最新的備份還原資料。您使用快照建立磁碟 data-disk-2
,以便取代由有狀態 MIG example-database-mig
管理的執行個體 db-instance-1
中損毀的磁碟。原始磁碟 data-disk-1
會連結至 data-disk
裝置名稱,並設有自動刪除規則,永遠不會刪除磁碟。
如要將 data-disk-1
替換為 data-disk-2
,請執行下列指令:
gcloud compute instance-groups managed instance-configs update example-database-mig \ --instance db-instance-1 \ --stateful-disk device-name=data-disk,source=projects/example-project/zones/us-east1-c/disks/data-disk-2 \ --update-instance \ --instance-update-minimal-action restart
這項指令會執行以下作業:
- 更新
db-instance-1
的個別執行個體設定:- 將裝置名稱為
data-disk
的磁碟來源,從data-disk-1
(上次設定) 更新為data-disk-2
(新設定)。 - 由於
auto-delete
參數已在--stateful-disk
標記中省略,且預設刪除規則為never
,因此會保留自動刪除規則,以便永不刪除磁碟。
- 將裝置名稱為
- 由於包含
--update-instance
標記,因此會立即將個別執行個體設定更新套用至db-instance-1
VM。MIG 會在相同的裝置名稱data-disk
下,卸除data-disk-1
並附加data-disk-2
。 - 由於最小動作已設為
restart
,MIG 會重新啟動db-instance-1
執行個體來更新 VM,以便資料庫應用程式開始使用新磁碟。
Terraform
如要為 MIG 中的 VM 個別設定有狀態磁碟,請在相關聯的個別執行個體設定中新增有狀態磁碟設定。接著更新執行個體,套用設定。
如要為 VM 新增個別執行個體設定,請使用 google_compute_per_instance_config
資源,並加入 preserved_state
區塊,如以下範例所示。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要為 MIG 中的 VM 個別設定有狀態磁碟,請在相關聯的個別執行個體設定中新增或更新有狀態磁碟設定。接著,請更新執行個體,套用設定。
如果指定 VM 尚未有個別執行個體設定,請使用 instanceGroupManagers.updatePerInstanceConfigs
方法或 regionInstanceGroupManagers.updatePerInstanceConfigs
方法,為一或多個磁碟設定狀態:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/updatePerInstanceConfigs { "perInstanceConfigs": [ { "name": "VM_NAME", "preservedState" : { "disks": { "DEVICE_NAME" : { "source": "DISK", "mode": "MODE", "autoDelete": "DELETE_RULE" }, ... } }, "fingerprint: "FINGERPRINT" }, ... ] }
如果指定 VM 已存在個別執行個體設定,請使用 instanceGroupManagers.patchPerInstanceConfigs
方法或 regionInstanceGroupManagers.patchPerInstanceConfigs
方法,為一或多個磁碟設定狀態:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "VM_NAME", "preservedState" : { "disks": { "DEVICE_NAME" : { "source": "DISK", "mode": "MODE", "autoDelete": "DELETE_RULE" }, ... } }, "fingerprint: "FINGERPRINT" }, ... ] }
更改下列內容:
PROJECT_ID
:要求的專案 ID。ZONE
:MIG 所在的區域 (適用於可用區 MIG)。- 如果是區域 MIG,請將
zones/ZONE
替換為regions/REGION
,並指定 MIG 的區域。
- 如果是區域 MIG,請將
NAME
:MIG 的名稱。VM_NAME
:要為其設定有狀態磁碟的 VM 名稱。DEVICE_NAME
:用於連結磁碟的裝置名稱。DISK
:要連結至指定DEVICE_NAME
的現有永久磁碟 URI,其格式為projects/project-id/zones/zone/disks/disk-name
(區域磁碟) 和projects/project-id/regions/region/disks/disk-name
(地區磁碟)。如果裝置已在執行個體的個別執行個體設定中定義,則
"source": "DISK"
欄位為選用。否則為必填項目。如果省略
source
欄位,目前設定的磁碟 URI 將保持不變。MODE
:(選填)指定磁碟的模式。只有在提供source
時,才能指定mode
。支援的選項如下:READ_ONLY
:唯讀。READ_WRITE
:(預設)。讀取/寫入。
如果省略,系統會為新的有狀態磁碟設定預設值;在現有設定中,該值會維持不變。
DELETE_RULE
:(選填)這個值會規定在刪除 VM 時,有狀態磁碟應採取的動作。可用的選項如下:- never:(預設值)。請勿刪除磁碟,而是在刪除執行個體時卸離磁碟。
on-permanent-instance-deletion
:當有狀態磁碟的執行個體從執行個體群組中永久刪除時 (例如手動刪除執行個體或縮減群組大小),請刪除該磁碟。
如果省略
autoDelete
欄位,系統會為新的有狀態磁碟設定預設值;在現有設定中,這個值會維持不變。無論刪除規則的值為何,在執行個體自動修復、更新和重新建立作業時,系統一律會保留有狀態磁碟。
FINGERPRINT
:(選填)。指定設定的指紋 (如果已存在)。用於樂觀式鎖定。如要查看最新指紋,請提出get()
要求來擷取資源。
updatePerInstanceConfigs
和 patchPerInstanceConfigs
方法會更新指定的個別執行個體設定,但不會將設定更新套用至相關聯的受管理 VM。當 MIG 收到重新建立或更新執行個體的指示時,系統就會將變更套用至執行個體。您也可以選擇更新例項,以便套用變更。
示例
目前已連結的有狀態磁碟 data-disk-1
上的資料已損毀,您想要從最新的備份還原資料。您使用快照建立磁碟 data-disk-2
,以便取代由有狀態 MIG example-database-mig
管理的執行個體 db-instance-1
中損毀的磁碟。原始磁碟 data-disk-1
會連結至 data-disk
裝置名稱,並設有自動刪除規則,永遠不會刪除磁碟。
如要使用新磁碟更新 db-instance-1
的個別例項設定,請呼叫 patchPerInstanceConfigs
方法:
POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "db-instance-1", "preservedState" : { "disks": { "data-disk" : { "source": "projects/example-project/zones/us-east1-c/disks/data-disk-2" } } } } ] }
這個方法會修補 db-instance-1
的個別執行個體設定:
- 將裝置名稱為
data-disk
的磁碟source
從data-disk-1
(上次設定) 更新為data-disk-2
(新設定)。 - 由於參數已在要求中省略,因此會維持
mode
和autoDelete
參數不變。
設定更新尚未套用至 db-instance-1
VM。當您重新建立或更新執行個體時,MIG 會套用設定更新。
如要將個別執行個體設定更新套用至 db-instance-1
VM,請為執行個體呼叫 instanceGroupManagers.applyUpdatesToInstances
方法:
POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-database-mig/applyUpdatesToInstances { "instances": ["/zones/us-east1-c/instances/db-instance-1"], "minimalAction": "RESTART" }
該方法會更新受管理的例項保留狀態,並在相同的裝置名稱 data-disk
下,卸除 data-disk-1
並附加 data-disk-2
。由於 minimalAction
已設為 RESTART
,因此該方法會重新啟動 db-instance-1
VM,讓資料庫應用程式開始使用新磁碟。
為個別 VM 卸除具狀態磁碟或宣告其為無狀態
您可能需要卸離有狀態磁碟,或將其設為個別 VM 的無狀態磁碟。例如:
- 如果您重新架構應用程式,將狀態從磁碟移出。
- 如果您誤將磁碟設為有狀態,並想要還原設定。
從相關聯的個別執行個體設定中移除磁碟的含狀態設定,或刪除整個個別執行個體設定,即可卸離含狀態磁碟,或讓個別 VM 不含狀態。套用變更時:
- 如果磁碟未在執行個體範本中定義,MIG 會卸離磁碟。
- 無論設定中的自動刪除規則為何,當您從個別執行個體設定中刪除磁碟時,MIG 都不會刪除磁碟。
- 如果磁碟是由執行個體範本定義,MIG 會將磁碟視為無狀態,也就是說,在後續的執行個體重建、更新或自動修復事件中,MIG 會從執行個體範本中的來源重新建立磁碟。
從個別執行個體設定中移除磁碟設定不會重新啟動執行中的 VM 執行個體,除非您明確選擇這麼做。
詳情請參閱「套用個別執行個體設定更新」。
gcloud
如要卸離具有狀態的磁碟,或為 MIG 中的 VM 個別宣告狀態,請從相關聯的個別執行個體設定中移除具有狀態的磁碟設定,如果沒有任何其他狀態,則刪除整個個別執行個體設定。更新執行個體以套用設定。
如要從相關聯的個別執行個體設定中移除有狀態磁碟設定,請使用 gcloud compute instance-groups managed instance-configs update
指令搭配 --remove-stateful-disks
標記。--update-instance
標記 (預設) 會立即將變更套用至執行個體。如果您使用 --no-update-instance
,變更仍未套用,並會在下次重新建立或更新執行個體時套用。
gcloud compute instance-groups managed instance-configs update NAME \ --instance VM_NAME \ --remove-stateful-disks DEVICE_NAME[,DEVICE_NAME,...] \ [--no-update-instance | --update-instance] \ [--instance-update-minimal-action MINIMAL_ACTION]
更改下列內容:
NAME
:MIG 名稱。VM_NAME
:要移除狀態設定的 VM 名稱。DEVICE_NAME
:用於連結磁碟的裝置名稱。MINIMAL_ACTION
:更新 VM 時,至少執行指定的動作,並套用個別執行個體設定。只能與--update-instance
搭配使用。這個值必須是下列其中一個:none
:無動作。refresh
:套用可在未停止 VM 的情況下套用的更新。restart
:停止 VM,然後重新啟動。replace
:重新建立 VM。
如果省略,系統會使用更新作業所需的干擾程度最低的動作。
示例
您在名為 example-legacy-group
的 MIG 上執行舊版應用程式。MIG 中的每個 VM 會在裝置名稱 boot-disk
的啟動磁碟上儲存應用程式資料。您使用每個執行個體設定,將每個開機磁碟設為有狀態。您現在已將應用程式資料移至額外磁碟,並希望為每個 VM 建立無狀態開機磁碟,以便更新至新映像檔。
針對每個例項 (例如 node-1
),執行下列指令:
gcloud compute instance-groups managed instance-configs update example-legacy-group \ --instance node-1 \ --remove-stateful-disks boot-disk \ --update-instance
這項指令會執行以下作業:
- 從
node-1
的個別執行個體設定中,移除裝置名稱為boot-disk
的磁碟設定。 - 由於包含
--update-instance
標記,因此會立即將個別執行個體設定更新套用至node-1
VM。MIG 會從代管執行個體的preservedStateFromConfig
中移除開機磁碟,並將開機磁碟視為無狀態,這表示 MIG 會在後續的執行個體重新建立、更新或自動修復事件中,從執行個體範本的開機映像檔重新建立磁碟。
REST
如要為 MIG 中的 VM 卸離有狀態磁碟,或個別宣告 VM 的無狀態磁碟,請從相關聯的個別執行個體設定中移除有狀態磁碟設定,或刪除整個個別執行個體設定 (如果不含任何其他狀態)。接著更新執行個體,套用設定。
如要從相關聯的個別執行個體設定中移除有狀態磁碟設定,請使用 instanceGroupManagers.patchPerInstanceConfigs
方法或 regionInstanceGroupManagers.patchPerInstanceConfigs
方法:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "VM_NAME", "preservedState" : { "disks": { "DEVICE_NAME" : null }, ... }, "fingerprint: "FINGERPRINT" ... } ] }
更改下列內容:
PROJECT_ID
:要求的專案 ID。ZONE
:MIG 所在的區域 (適用於可用區 MIG)。- 如果是區域 MIG,請將
zones/ZONE
替換為regions/REGION
,並指定 MIG 的區域。
- 如果是區域 MIG,請將
NAME
:MIG 名稱。VM_NAME
:要從中移除有狀態設定的 VM 名稱。DEVICE_NAME
:用於連結磁碟的裝置名稱。FINGERPRINT
:如果已存在指定設定,則為該設定的指紋。用於樂觀式鎖定。如要查看最新指紋,請提出get()
要求來擷取資源。
patchPerInstanceConfigs
方法會修補指定的個別執行個體設定,但不會將變更套用至相關聯的 VM。重新建立或更新執行個體時,系統會將變更套用至 VM。您可以手動套用變更,也可以使用自動滾動式更新。
示例
您在名為 example-legacy-group
的 MIG 上執行舊版應用程式。MIG 中的每個 VM 會將應用程式資料儲存在裝置名稱為 boot-disk
的啟動磁碟上。將獨立 VM 遷移至 MIG 時,您已在 MIG 的個別執行個體設定中將開機磁碟設為有狀態。您已將應用程式資料移至額外磁碟,現在想為每個 VM 建立無狀態的開機磁碟,以便輕鬆更新至新映像檔。
為執行個體呼叫
patchPerInstanceConfigs
方法,例如為node-1
呼叫null
值,以便開機磁碟:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "node-1", "preservedState" : { "disks": { "boot-disk" : null } } } ] }
這個方法會從
node-1
的個別執行個體設定中,移除裝置名稱為boot- disk
的磁碟設定。設定更新尚未套用至node-1
VM 執行個體。設定更新會在下次重建或更新執行個體時套用。如要將個別執行個體設定更新套用至
node-1
VM 執行個體,請為執行個體呼叫instanceGroupManagers.applyUpdatesToInstances
method:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-legacy-group/applyUpdatesToInstances { "instances": ["/zones/us-east1-c/instances/node-1"] }
MIG 會從
node-1
執行個體的preservedStateFromConfig
中移除開機磁碟,並將磁碟視為無狀態。也就是說,在後續的執行個體重新建立、更新或自動修復事件中,MIG 會從執行個體範本中的開機映像檔重新建立磁碟。
意見回饋
我們想瞭解您對有狀態 MIG 的使用情境、難題和意見。請前往以下網址,並與我們的團隊分享您的寶貴意見:mig-discuss@google.com。
後續步驟
- 為 MIG 中的 VM 設定有狀態中繼資料。
- 瞭解如何套用、查看及移除有狀態設定。
- 取得特定 MIG 和其代管執行個體的相關資訊,包括 VM 狀態和屬性。
- 進一步瞭解MIG 和如何使用代管型執行個體。