永続ディスクをステートフルに構成すると、ディスクの状態を維持しながら、VM インスタンスの自動修復と自動更新を利用できます。
インスタンス テンプレートで定義されたディスクをマネージド インスタンス グループ(MIG)のすべてのインスタンスでステートフルに構成するには、そのディスクのデバイス名を MIG のステートフル ポリシーに追加します。
また、インスタンスごとの構成を設定することで、MIG のインスタンスにステートフル永続ディスクを個別に構成することも可能です。これらのディスクは、インスタンス テンプレートで定義する必要はありません。
準備
- ステートフル MIG を使用する場合とステートフル MIG の仕組みを確認します。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
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.
- MIG にステートフルな構成がある場合は、自動スケーリングを使用できません。
- 自動ローリング アップデートを使用する場合は、置換メソッドを
RECREATE
に設定する必要があります。 - ステートフル リージョン MIG の場合は、プロアクティブな再配布を無効にする(再配布タイプを
NONE
に設定する)必要があります。これは、複数ゾーンにまたがる自動再配布によってステーフル インスタンスが削除されないようにするためです。 すべてのインスタンスの構成を使用してインスタンス テンプレートのプロパティをオーバーライドする場合、インスタンスごとの構成とグループのすべてのインスタンス構成で、同時にこれらのプロパティを指定することはできません。
ステートフル リージョン MIG は、ゾーン間のフェイルオーバーを自動的にオーケストレートしません。リージョン MIG を使用する場合、冗長レプリカを複数のゾーンにデプロイし、アプリケーションのデータ レプリケーション機能を使用して、ゾーン障害に対する復元性があるステートフル アプリケーションを作成できます。
- 元のイメージからブートディスクを再作成することで、破損したブートディスクを修復できます。自動修復では、このような修復が自動的に行われます。
- ブートディスクを新しいバージョンとセキュリティ パッチで最新のイメージに更新できます。
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[インスタンス グループの作成] をクリックします。
[新しいマネージド インスタンス グループ(ステートフル)] を選択します。
インスタンス グループの [名前] を指定します。
インスタンス テンプレートを選択します。使用できるテンプレートがない場合は、インスタンス テンプレートを作成します。
[インスタンス数] で、インスタンス グループのインスタンス数を指定します。
[ステートフル構成] セクションに、インスタンス テンプレートで指定されたディスクが表示されます。ディスクをクリックして、ステートフル構成を編集します。
- [ステートフル] で [はい] を選択します。
[永続インスタンスの削除時] プルダウンから、VM インスタンスの削除時にステートフル ディスクに対して行うアクションを選択します。使用できるオプションは次のとおりです。
- ディスクの切断: (デフォルト) VM の削除時にディスクを削除せず、ディスクを切断します。
- ディスクの削除: VM がインスタンス グループから完全に削除されたときにディスクを削除します。たとえば、マネージド インスタンスが手動で削除された場合や、グループサイズが縮小された場合にディスクを削除します。
ステートフル構成が完了したら、[完了] をクリックします。
[作成] をクリックします。
INSTANCE_GROUP_NAME
: 作成するマネージド インスタンス グループの名前。INSTANCE_TEMPLATE
: インスタンスの作成時に使用されるインスタンス テンプレートの名前。SIZE
: このグループで最初に必要な VM の数。DEVICE_NAME
: インスタンス テンプレートで指定されたディスクのデバイス名。DELETE_RULE
: VM が削除されたときにステートフル ディスクに行われる処理を表す値。使用できるオプションは次のとおりです。never
: デフォルト。ディスクは削除しません。代わりに、VM の削除時にディスクを切断します。on-permanent-instance-deletion
: VM インスタンスがインスタンス グループから完全に削除されたときにディスクを削除します。たとえば、マネージド インスタンスが手動で削除された場合や、グループサイズの変更でインスタンスが削除された場合にディスクを削除します。
削除ルールの値に関係なく、VM の自動修復、更新、再作成の場合、ステートフル ディスクは常に保持されます。
イメージ
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
フラグを使用して、次のことを指定します。- あらかじめ用意された空の 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 インスタンスと一緒に削除されるように構成されます。自動修復、更新、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 の削除時に削除するルールが定義されています。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 がインスタンス グループから完全に削除される(マネージド インスタンスが手動で削除される場合や、グループサイズが縮小される場合など)ときに、ステートフル ディスクを削除します。
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 イメージから作成され、読み取り / 書き込みモードでアタッチされるように構成されます。instanceGroupManagers.insert
メソッドを使用して、インスタンス テンプレートから MIG を作成し、データディスクをステートフルとして定義します。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 個のインスタンスを作成し、各インスタンスには次のプロパティを持つ 1 つのディスクが備わっています。
- デバイス名
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 内の既存のインスタンスと今後作成されるインスタンスで、指定されたデバイス名のディスクはステートフルとマークされます。
- ステートフル ポリシーを更新して、ディスクのステートフル構成を変更します。
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
ディスクのステートフル構成を指定するインスタンス グループの名前をクリックします。
[編集] をクリックして、マネージド インスタンス グループを変更します。
[ステートフル構成] で、ステートフルにするディスクを開きます。
- [ステートフル] で [はい] を選択します。
[永続インスタンスの削除時] プルダウンから、VM インスタンスの削除時にステートフル IP アドレスに対して行うアクションを選択します。
- ディスクの切断: (デフォルト) VM の削除時にディスクを削除せず、ディスクを切断します。
ディスクの削除: VM がインスタンス グループから完全に削除されたときにディスクを削除します。たとえば、マネージド インスタンスが手動で削除された場合や、グループサイズが縮小された場合にディスクを削除します。
ステートフル構成を更新したら、[完了] をクリックします。
[保存] をクリックして更新を完了します。
NAME
: 更新するマネージド インスタンス グループの名前。DEVICE_NAME
: インスタンス テンプレートに指定されているディスクのデバイス名。DELETE_RULE
: VM インスタンスの削除時にステートフル ディスクに行われる処理を表す値。使用できるオプションは次のとおりです。never
: デフォルト。インスタンスの削除時にディスクを削除せず、ディスクを切断します。on-permanent-instance-deletion
: インスタンスがインスタンス グループから完全に削除されたときにディスクを削除します。たとえば、マネージド インスタンスが手動で削除された場合や、グループサイズが縮小された場合にディスクを削除します。
次のコマンドを使用して 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
コマンドを実行して、データディスクがステートフル ポリシーで構成されていることを確認します。PROJECT
: リクエストのプロジェクト ID。ZONE
: MIG が配置されているゾーン(ゾーン MIG に適用)。- リージョン MIG の場合は、
zones/ZONE
をregions/REGION
に置き換え、MIG のリージョンを指定します。
- リージョン MIG の場合は、
NAME
: 更新する MIG の名前。DEVICE_NAME
: インスタンス テンプレートに指定され、ステートフル構成を更新するディスクのデバイス名。DELETE_RULE
: VM インスタンスの削除時にステートフル ディスクに行われる処理を表す値。使用できるオプションは次のとおりです。never
: デフォルト。インスタンスの削除時にディスクを削除せず、ディスクを切断します。on-permanent-instance-deletion
: インスタンスがインスタンス グループから完全に削除されたときにディスクを削除します。たとえば、インスタンスが手動で削除された場合や、グループサイズが縮小された場合にディスクを削除します。
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
リソースを表示して、データディスクがステートフル ポリシーで構成されていることを確認します。- アプリを再構築してディスクから状態を移動する場合。
- 誤ってステートフルとした構成ディスクを元に戻したい場合。
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
ディスクのステートフル構成を削除するインスタンス グループの名前をクリックします。
[編集] をクリックして、マネージド インスタンス グループを変更します。
[ステートフル構成] で、ステートレスにするステートフル ディスクを開きます。
- [ステートフル] オプションを [いいえ] に変更します。
- [完了] をクリックします。
変更後、[保存] をクリックします。
NAME
: 更新する MIG の名前。DEVICE_NAME
: ステートフル ポリシーから削除し、ステートレスとして扱うディスクのデバイス名。リストには 1 つまたは複数のデバイス名を指定できます。PROJECT
: リクエストのプロジェクト ID。ZONE
: MIG が配置されているゾーン(ゾーン MIG に適用)。- リージョン MIG の場合は、
zones/ZONE
をregions/REGION
に置き換え、MIG のリージョンを指定します。
- リージョン MIG の場合は、
NAME
: 更新する MIG の名前。DEVICE_NAME
: ステートフル ポリシーから削除するディスクのデバイス名。null
値を指定すると、そのディスクのステートフル構成が削除されます。削除するデバイス名を 1 つまたは複数指定できます。- ステートフル ポリシーからディスクのステートフル構成を削除します。これにより、指定したデバイス名のディスクがステートレスになります。
- ディスクを保持する場合は、VM からディスクを切断します。
- 指定されたデバイス名のディスクが定義されていない新しいインスタンス テンプレートをロールアウトします。
- 既存のワークロード(既存のディスク)をスタンドアロン VM からステートフル MIG に移行し、自動修復と簡単な更新を利用する。
- VM に個別に構成されたディスクのバックアップを復元する。
- テスト、デバッグ、データのコピーを行うために、特定の VM に追加のステートフル ディスクを一時的にアタッチする。
- すべての VM インスタンスに共通の構成でインスタンス テンプレートを作成します。
- スタンドアロン インスタンスからデータディスクを切断し、これらのインスタンスを削除します。保持する必要がある状態が含まれている場合は、ブートディスクを切断することもできます。
- 前に作成したインスタンス テンプレートを使用して、空の MIG を作成します。
前の手順で使用した適切な名前と関連ディスクを使用して、MIG にインスタンスを作成します。リクエストに対して MIG は次のアクションを行います。
- 指定されたインスタンス名を使用して、インスタンス テンプレートから VM を作成します。
- リージョン MIG の場合、ディスクが配置されているゾーンに VM を作成します。リージョン ディスクの場合、リージョン MIG により、ディスクのレプリカゾーンのいずれかに VM が作成されます。
- ディスクに指定されたステートフル構成でインスタンスごとの構成を作成します。
- 新しいインスタンスにディスクをアタッチします。
- 指定されたインスタンス名を使用して、インスタンス テンプレートから VM を作成します。
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
: デフォルト。ディスクは削除しません。代わりに、VM の削除時にディスクを切断します。on-permanent-instance-deletion
: インスタンスがインスタンス グループから完全に削除される(インスタンスが手動で削除される場合や、グループサイズが縮小される場合など)ときに、ステートフル ディスクを削除します。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成の場合、ステートフル ディスクは常に保持されます。
- メンテナンスの時間枠内に VM
db-instance
を停止します。 db-instance
構成を使用して、db-template
という名前のインスタンス テンプレートを作成します。db-instance
からdb-data-disk-1
を切断し、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
ステートフル ディスクを設定します。さらに、デバイス名としてdata-disk
を使用して、新しい VM にディスクをアタッチします。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
: インスタンスがインスタンス グループから完全に削除される(インスタンスが手動で削除される場合や、グループサイズが縮小される場合など)ときに、ステートフル ディスクを削除します。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成の場合、ステートフル ディスクは常に保持されます。
- メンテナンスの時間枠内に VM
db-instance
を停止します。 db-instance
構成を使用して、db-template
という名前のインスタンス テンプレートを作成します。db-instance
からdb-data-disk-1
を切断し、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 の外部にあるステートフル ディスクを MIG の VM に追加する。
- MIG 内の VM でステートレス ディスクをステートフルとして宣言する。
- MIG 内の VM でステートフル ディスクを別のディスクに置き換える。
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 を再作成します。
省略した場合は、更新に必要な最も影響の少ない操作が使用されます。
db-instance-1
のインスタンスごとの構成を更新します。- デバイス名
data-disk
のディスクのソースをdata-disk-1
(前回の構成)からdata-disk-2
(新しい構成)に更新します。 --stateful-disk
フラグでauto-delete
パラメータが省略されているため、自動削除ルールでディスクが削除されません。デフォルトの削除ルールはnever
です。
- デバイス名
--update-instance
フラグが使用されているため、インスタンスごとの構成に対する更新がすぐにdb-instance-1
VM に適用されます。MIG はdata-disk-1
を切断し、同じデバイス名data-disk
でdata-disk-2
を接続します。- 最小アクションが
restart
に設定されているため、MIG はdb-instance-1
インスタンスを再起動して VM を更新し、データベース アプリケーションが新しいディスクを使用できるようにします。 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
: 省略可。ディスクのモードを指定します。mode
は、source
が指定されている場合にのみ使用できます。使用可能なオプションは次のとおりです。READ_ONLY
: 読み取り専用。READ_WRITE
: デフォルト。読み取り / 書き込み。
省略した場合は、デフォルト値が新しいステートフル ディスク構成に設定されます。既存の構成では、値は変更されません。
DELETE_RULE
: 省略可。VM が削除されたときにステートフル ディスクに行われる処理を表す値。使用できるオプションは次のとおりです。- never: デフォルト。インスタンスの削除時にディスクを削除せず、ディスクを切断します。
on-permanent-instance-deletion
: インスタンスがインスタンス グループから完全に削除されたときにディスクを削除します。たとえば、インスタンスが手動で削除された場合や、グループサイズが縮小された場合にディスクを削除します。
autoDelete
フィールドを省略すると、デフォルト値が新しいステートフル ディスク構成に設定されます。既存の構成では、値は変更されません。削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成の場合、ステートフル ディスクは常に保持されます。
FINGERPRINT
: 省略可。指定された構成のフィンガープリント(すでに存在する場合)。楽観的ロックに使用されます。最新のフィンガープリントを表示するには、get()
リクエストでリソースを取得します。- デバイス名
data-disk
のディスクのsource
をdata-disk-1
(前回の構成)からdata-disk-2
(新しい構成)に更新します。 - リクエストでパラメータが省略されているため、
mode
パラメータとautoDelete
パラメータは変更されません。 - アプリを再構築してディスクから状態を移動する場合。
- 誤ってステートフルとした構成ディスクを元に戻したい場合。
- インスタンス テンプレートにディスクが定義されていない場合、MIG はディスクを切断します。
- 構成内の自動削除ルールに関係なく、インスタンスごとの構成から構成を削除しても、MIG はディスクを削除しません。
- インスタンス テンプレートにディスクが定義されている場合、MIG はディスクをステートレスとして扱います。つまり、インスタンスの作成、更新、自動修復イベントが発生すると、インスタンス テンプレートのソースからディスクが再作成されます。
NAME
: MIG の名前。VM_NAME
: ステートフル構成を削除する VM の名前。DEVICE_NAME
: ディスクのアタッチに使用されるデバイス名。MINIMAL_ACTION
: インスタンスごとの構成で VM を更新するときに、少なくとも指定されたアクションを実行します。--update-instance
と組み合わせて使用します。値は次のいずれかにする必要があります。none
: アクションなし。refresh
: VM を停止せずに適用できる更新を適用します。restart
: VM を停止してから再起動します。replace
: VM を再作成します。
省略した場合は、更新に必要な最も影響の少ない操作が使用されます。
- デバイス名
boot-disk
のディスク構成をnode-1
のインスタンスごとの構成から削除します。 --update-instance
フラグが使用されているため、インスタンスごとの構成に対する更新がすぐにnode-1
VM に適用されます。MIG は、マネージド インスタンスのpreservedStateFromConfig
からブートディスクを削除し、ブートディスクをステートレスとして扱います。つまり、インスタンスの作成、更新、自動修復イベントが発生すると、インスタンス テンプレートのブートイメージからディスクが再作成されます。PROJECT_ID
: リクエストのプロジェクト ID。ZONE
: MIG が配置されているゾーン(ゾーン MIG に適用)。- リージョン MIG の場合は、
zones/ZONE
をregions/REGION
に置き換え、MIG のリージョンを指定します。
- リージョン MIG の場合は、
NAME
: MIG の名前。VM_NAME
: ステートフル構成を削除する VM の名前。DEVICE_NAME
: ディスクのアタッチに使用されるデバイス名。FINGERPRINT
: 指定された構成のフィンガープリント(すでに存在する場合)。楽観的ロックに使用されます。最新のフィンガープリントを表示するには、get()
リクエストでリソースを取得します。インスタンスの
patchPerInstanceConfigs
メソッドを呼び出します。たとえば、ブートディスクのnull
値を使用してnode-1
を呼び出します。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
メソッドを呼び出します。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 で VM のステートフル メタデータを構成する。
- ステートフル構成の適用、表示、削除について学習する。
- VM のステータスやプロパティなど、特定の MIG とそのマネージド インスタンスに関する情報を取得する。
- MIG とマネージド インスタンスの操作について学習する。
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
制限事項
ステートフル ディスクを使用した MIG には次の制限があります。
ステートフル構成を使用した MIG (ステートフル MIG )には、次の制限があります。
ステートフル永続ディスクを使用する場合
ステートフル永続ディスクを使用すると、ディスク上のデータを保持しながら、VM の自動修復と自動更新を利用できます。詳細については、ステートフル MIG のユースケースをご覧ください。
ステートフル ディスクを構成した場合、VM インスタンスの自動修復、更新、再作成でこれらのディスクは保持されます。ただし、元のイメージからステートフル ディスクを再作成することはできません。また、新しいイメージに更新することもできません。
ブートディスクはステートレスにしておくことをおすすめします。
ブートディスクをステートレスにすることで次の利点があります。
詳細については、自動修復と更新による保持状態の処理方法をご覧ください。
MIG 内のすべての VM にステートフル永続ディスクを構成する
インスタンス テンプレートで定義されたディスクをステートフルに構成するには、ディスクのデバイス名を MIG のステートフル ポリシーに追加します。MIG は、すべての VM インスタンス(新たに作成されるインスタンスを含む)でそのデバイス名のディスクをステートフルとして扱います。
MIG 作成時にステートフル ディスクを構成する
コンソール
gcloud
MIG の作成時にステートフルにするディスクをインスタンス テンプレートから指定するには、
gcloud compute instance-groups managed create
コマンドで--stateful-disk
フラグを使用します。gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template INSTANCE_TEMPLATE \ --size SIZE \ --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]
次のように置き換えます。
例
12 個のシャードを持つデータベースをデプロイします。各シャードには、オペレーティング システムとデータベース バイナリを含むステートレス ブートディスクと、ステートフル データディスクがあります。次の操作を行います。
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
メソッドのリクエスト本文の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" } } } } }
次のように置き換えます。
例
12 個のシャードを持つデータベースをデプロイします。各シャードには、オペレーティング システムとデータベース バイナリを含むステートレス ブートディスクと、ステートフル データディスクがあります。次の手順を行います。
既存の MIG にあるディスクのステートフル構成を設定または更新する
ステートレス MIG(ステートフル構成のない MIG)でステートフル アプリケーションを実行する場合は、この MIG のすべてのインスタンスで、インスタンス テンプレートに定義された既存のディスクをステートフルに構成できます。これにより、インスタンスの再作成、自動修復、更新のオペレーションや削除オペレーションでディスクを保持できます。
次の操作を実施できます。
MIG は、ステートフル ポリシーで更新された構成をすべてのインスタンスに自動的かつ非同期的に適用します。ステートフル ポリシーのディスク構成を更新しても、実行中の VM は中断されません。詳細については、ステートフル ポリシーの更新の適用をご覧ください。
リージョン MIG の場合、ステートフル ディスクを構成する前に、複数ゾーンにまたがるプロアクティブなインスタンスの再配布を無効にする必要があります。詳細については、リージョン グループによる保持状態の処理方法をご覧ください。
コンソール
gcloud
インスタンス テンプレートでステートフルにするディスクを指定する場合、または既存の MIG のステートフル ディスク構成を更新する場合は、
gcloud compute instance-groups managed update
コマンドで 1 つまたは複数の--stateful-disk
フラグを使用します。gcloud compute instance-groups managed update NAME \ --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]
次のように置き換えます。
指定したデバイス名がステートフル ポリシーですでに構成されている場合、このコマンドは構成を更新します。
例
example-database- group
という名前の MIG で、複数のシャードを持つデータベースを実行します。MIG の各 VM は、インスタンス テンプレートで定義されたデバイス名data-disk
の追加ディスクにシャードを保存します。MIG にはステートフル構成がなく、インスタンスの再作成、自動修復、更新時にデータディスクを保持する必要があります。また、VM の削除時にデータディスクが削除されないようにする必要があります。REST
インスタンス テンプレートでステートフルにするディスクを指定する場合、または既存の MIG のステートフル ディスク構成を更新する場合は、
instanceGroupManagers.patch
メソッドを使用します。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" } } } } }
次のように置き換えます。
指定したデバイス名がステートフル ポリシーですでに構成されている場合、
patch
メソッドはその構成を更新します。例
example-database- group
という名前の MIG で、複数のシャードを持つデータベースを実行します。MIG の各 VM は、インスタンス テンプレートで定義されたデバイス名data-disk
の追加ディスクにシャードを保存します。MIG にはステートフル構成がなく、インスタンスの再作成、自動修復、更新時にデータディスクを保持する必要があります。また、VM の削除時にデータディスクが削除されないようにする必要があります。ステートフル永続ディスクをステートレスとして宣言する
ステートフル ディスクをステートレスとして扱う必要がある場合があります。例:
特定のデバイス名を持つすべてのディスクをステートレスとして宣言するには、ステートフル ポリシーからディスクの構成を削除します。
MIG は、すべてのインスタンスにステートフル ポリシーの変更を自動的かつ非同期で適用します。ステートフル ポリシーのディスク構成を更新しても、実行中の VM インスタンスは中断されません。
詳細については、ステートフル ポリシーの更新の適用をご覧ください。
コンソール
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,...]
次のように置き換えます。
例
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, ... } } } }
次のように置き換えます。
例
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 ではステートフル ディスクを削除できないため、次の手順を行う必要があります。
MIG で VM にステートフル永続ディスクを個別に構成する
MIG 内の特定の VM にステートフル永続ディスクを構成するには、その VM のインスタンスごとの構成にディスクのデバイス名を追加します。VM を更新してインスタンスごとの構成を適用し、有効にします。
次のような場合、MIG 内の特定の VM にステートフル永続ディスクを個別に構成すると便利です。
MIG で新しい VM に既存のステートフル ディスクを追加する
MIG に手動で作成した新しいインスタンスに既存のステートフル ディスクを追加できます。これは、既存のスタンドアロン VM からステートフル MIG にステートフル アプリケーションを移行する場合に便利です。例:
gcloud CLI または REST を使用して、MIG に特定のインスタンスを手動で作成するときに、既存のステートフル ディスクを追加します。MIG は VM の作成時に構成をすぐに適用します。
gcloud
カスタム名で VM を作成し、その VM に 1 つ以上の既存のステートフル ディスクをアタッチするには、1 つまたは複数の
--stateful-disk
フラグを指定してgcloud compute instance-groups managed create-instance
コマンドを実行します。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]
次のように置き換えます。
例
現在、
db-instance
という名前のスタンドアロン VM で実行され、db-data-disk-1
という名前のディスクにデータを保存しているデータベース サーバーの自動修復を行います。自動修復を使用するステートフル MIG を作成し、MIG 内に同様の VM を作成します。新しいインスタンスに既存のデータディスク
db-data-disk-1
をステートフル ディスクとして接続します。REST
instanceGroupManagers.createInstances
メソッドを使用して、MIG に 1 つ以上のインスタンスを作成し、カスタム VM 名を設定し、これらのインスタンスに 1 つ以上の既存のステートフル ディスクをアタッチします。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" }, ... } } }, ... ] }
次のように置き換えます。
例
現在、
db-instance
という名前のスタンドアロン VM で実行され、db-data-disk-1
という名前のディスクにデータを保存しているデータベース サーバーの自動修復を行います。自動修復を使用するステートフル MIG を作成し、MIG 内に同様のインスタンスを作成します。新しい VM に既存のデータディスク
db-data-disk-1
をステートフル ディスクとして接続します。MIG で VM のステートフル ディスクを個別に追加、宣言、交換する
マネージド インスタンスのステートフル ディスクを個別に構成するには、関連付けられたインスタンスごとの構成でステートフル ディスク構成を追加または更新します。次に、インスタンスを更新して VM にインスタンスごとの構成を適用します。
ステートフル ディスクを個別に構成すると、次のタスクに役立ちます。
MIG の外部にあるステートフル ディスクを MIG の VM に追加する。MIG の外部にある任意のディスクをマネージド インスタンスにアタッチするには、関連付けられたインスタンスごとの構成にディスクのステートフル構成を追加します。構成を適用すると、MIG はディスクを自動的にインスタンスにアタッチし、ステートフルとして扱います。
ステートレスの永続ディスクをステートフルとして宣言する。VM に現在アタッチしているステートレス ディスクをステートフルとして宣言するには、このディスクのステートフル構成(デバイス名や URI など)を関連するインスタンスごとの構成に追加します。構成を適用すると、MIG はディスクをステートフルとして保持します。
ステートフル ディスクを別のディスクに置き換える。復元されたバックアップにアクセスする場合など、ステートフル ディスクを別のステートフル ディスクに置き換えると便利な場合があります。ディスクの URI を更新することで、インスタンスごとの構成で同じデバイス名を維持しながら、ステートフル ディスクを切り替えることができます。更新されたインスタンスごとの構成を適用すると、MIG は古いディスクを切断し、同じデバイス名の新しいディスクをアタッチします。更新の適用時に、実行中のインスタンスの継続、再起動、再作成のいずれかを選択します。ブートディスクを交換する場合は、少なくとも VM の再起動が必要になります。
gcloud
MIG で VM のステートフル ディスクを個別に構成するには、関連するインスタンスごとの構成でステートフル ディスク構成を追加または更新します。次に、インスタンスを更新して構成を適用します。
インスタンスにインスタンスごとの構成が存在しない場合は、
gcloud compute instance-groups managed instance-configs create
コマンドで 1 つまたは複数の--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
コマンドで 1 つまたは複数の--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]
次のように置き換えます。
例
現在接続しているステートフル ディスク
data-disk-1
のデータが破損したため、最新のバックアップから復元します。スナップショットからディスクdata-disk-2
を作成し、ステートフル MIGexample-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
このコマンドは、次のことを行います。
Terraform
MIG で VM のステートフル ディスクを個別に構成するには、関連するインスタンスごとの構成でステートフル ディスク構成を追加します。次に、インスタンスを更新して構成を適用します。
VM のインスタンスごとの構成を追加するには、
google_compute_per_instance_config
リソースを使用し、次のサンプルに示すようにpreserved_state
ブロックを含めます。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
MIG で VM のステートフル ディスクを個別に構成するには、関連するインスタンスごとの構成でステートフル ディスク構成を追加または更新します。次に、インスタンスを更新して構成を適用します。
指定した VM にインスタンスごとの構成がまだ存在しない場合は、1 つ以上のディスクのステートフル構成で
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 のインスタンスごとの構成ファイルがすでに存在する場合は、1 つまたは複数のディスクのステートフル構成で
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" }, ... ] }
次のように置き換えます。
updatePerInstanceConfigs
メソッドとpatchPerInstanceConfigs
メソッドは、指定されたインスタンスごとの構成を更新しますが、その構成の更新を関連するマネージド VM に適用することはありません。インスタンスを再作成または更新するように MIG に指示すると、インスタンスに変更が適用されます。インスタンスを選択して更新し、変更を適用することもできます。例
現在接続しているステートフル ディスク
data-disk-1
のデータが破損したため、最新のバックアップから復元します。スナップショットからディスクdata-disk-2
を作成し、ステートフル MIGexample-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
のインスタンスごとの構成にパッチを適用します。構成の更新はまだ
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-1
を切断し、同じデバイス名data-disk
でdata-disk-2
をアタッチします。minimalAction
がRESTART
に設定されているため、このメソッドはdb-instance-1
VM を再起動し、データベース アプリケーションが新しいディスクを使用できるようにします。ステートフル ディスクの接続解除または個々の VM のステートレス ディスクの宣言
ステートフル ディスクの接続解除が必要になることがあります。また、個々の VM でステートレスとして扱われるように構成しなければならない場合もあります。例:
ステートフル ディスクを切断するか、個々の VM でステートレスにするには、関連するインスタンスごとの構成からディスクのステートフル構成を削除するか、インスタンスごとの構成全体を削除します。変更を適用すると、次の処理が行われます。
明示的に選択しない限り、インスタンスごとの構成からディスク構成を削除しても、実行中の VM インスタンスは再起動されません。
詳細については、インスタンスごとの構成の更新を適用するをご覧ください。
gcloud
MIG でステートフル ディスクを切断するか、個々の VM でステートレスと宣言するには、関連するインスタンスごとの構成からステートフル ディスク構成を削除するか、他の状態が含まれていない場合に、インスタンスごとの構成全体を削除します。インスタンスを更新して構成を適用します。
関連するインスタンスごとの構成からステートフル ディスクの構成を削除するには、
--remove-stateful-disks
フラグを指定してgcloud compute instance-groups managed instance-configs update
コマンドを使用します。--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]
次のように置き換えます。
例
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
このコマンドは、次のことを行います。
REST
MIG でステートフル ディスクを切断するか、個々の 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" ... } ] }
次のように置き換えます。
patchPerInstanceConfigs
メソッドは、指定されたインスタンスごとの構成にパッチを適用しますが、関連する VM に変更を適用することはありません。この変更は、インスタンスの再作成または更新時に VM に適用されます。変更は手動で行うか、自動ローリング アップデートを使用します。例
example-legacy-group
という名前の MIG でレガシー アプリケーションを実行します。MIG の各 VM は、デバイス名boot-disk
を使用してアプリケーション データをブートディスクに保存します。スタンドアロン VM を MIG に移行するときに、MIG のインスタンスごとの構成でブートディスクをステートフルとして構成しました。アプリケーション データを追加のディスクに移動したので、各 VM でブートディスクをステートレスにし、新しいイメージの更新を簡単にできるようにします。フィードバック
ステートフル MIG に関するユースケース、課題、フィードバックを募集しています。mig-discuss@google.com にフィードバックをお寄せください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-02 UTC。
-