マネージド インスタンス グループ(MIG)でステートフル IP アドレスを構成すると、グループ内の VM インスタンスが自動修復、更新、再作成されるときに、IP アドレスが確実に保持されます。
内部および外部の IPv4 アドレスを保持できます。IP アドレスが自動的に割り当てられるように構成できます。または、MIG 内の各 VM インスタンスに特定の IP アドレスを割り当てることもできます。
始める前に
- ステートフル 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
-
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
- Set a default region and zone.
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
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.
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
制限事項
ステートフル IP アドレスを使用する MIG には次の制限があります。
IPv6 アドレスはサポートされません。
内部 IP アドレスは、サブネットワークのないネットワーク(レガシー ネットワークなど)ではサポートされていません。
ステートフル構成を使用した MIG (ステートフル MIG )には、次の制限があります。
- MIG にステートフルな構成がある場合は、自動スケーリングを使用できません。
- 自動ローリング アップデートを使用する場合は、置換メソッドを
RECREATEに設定する必要があります。 - ステートフル リージョン MIG の場合は、プロアクティブな再配布を無効にする(再配布タイプを
NONEに設定する)必要があります。これは、複数ゾーンにまたがる自動再配布によってステーフル インスタンスが削除されないようにするためです。 - すべてのインスタンスの構成を使用してインスタンス テンプレートのプロパティをオーバーライドする場合、インスタンスごとの構成とグループのすべてのインスタンス構成で、同時にこれらのプロパティを指定することはできません。
料金
外部 IP アドレスに対しては、ネットワーキングの料金に応じて課金されます。
ステートフル IP アドレスを使用する状況
インスタンスの IP アドレスを保持することは、次のようなシナリオで有効です。
- アプリケーションでは、割り当てられた IP アドレスを静的なままにする必要があります(例: Kafka)。
- アプリケーションの構成は特定の IP アドレスに依存します。(例: DNS サーバー)
- ユーザー(他のアプリケーションを含みます)は、専用の静的 IP アドレス(ファイル サーバーなど)を使用してサーバーにアクセスします。
- ネットワーク構成を変更せずに既存のワークロードを移行する必要があります。
グループ内のすべての VM にステートフル IP アドレスを構成する
MIG 内のすべての VM にステートフル IP アドレスを構成することは、次のシナリオで有効です。
- 割り当てられた IP アドレスは、静的なままにする必要があります。しかし、アプリケーションで特定の IP アドレスを特定のインスタンスに割り当てる必要はありません。IP アドレスは、インスタンス作成時に自動的に割り当てることができます。
- ユーザー(他のアプリケーションなど)は、アプリケーションのデプロイ後にパブリッシュする静的 IP アドレスを使用してサーバーにアクセスします。
- インスタンスの作成時に自動的に割り当てられた静的 IP アドレスを保持しながら、インスタンスの自動修復と自動更新を活用する必要があります。
グループ内の既存および将来の VM インスタンスの静的内部または外部 IP アドレスを維持するには、ステートフル ポリシーでアドレスを構成します。
グループのステートフル ポリシーにステートフル IP アドレス構成を追加すると、MIG では次の方法で構成が適用されます。
- 新しいインスタンスの場合は、MIG が静的 IP アドレスを自動的に割り当てて予約します。
- 既存のインスタンスの場合、MIG は対応する静的 IP アドレスを予約して、内部または外部のエフェメラル IP アドレスを静的アドレスに昇格させます。
外部 IP アドレスを持たない既存のインスタンスの場合、MIG は静的 IP アドレスを割り当てて予約し、以下のデフォルト値を使用して、アクセス構成を対応するネットワーク インターフェースに追加します。
"accessConfigs": [ { "kind": "compute#accessConfig", "name": "External NAT", "natIP": "XX.XX.XX.XX", "networkTier": "PREMIUM", "type": "ONE_TO_ONE_NAT" } ]
静的 IP アドレスを予約するために、MIG によってアドレス リソースが作成されます。
MIG 作成時のステートフル IP アドレスの構成
Google Cloud コンソール、gcloud CLI、Terraform、または REST を使用します。
コンソール
Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[インスタンス グループを作成] をクリックします。
[新しいマネージド インスタンス グループ(ステートフル)] を選択します。
インスタンス グループの [名前] を指定します。
インスタンス テンプレートを選択します。
[インスタンスの数] で、マネージド インスタンス グループに含めるインスタンスの数を指定します。
[ステートフル構成] で、[外部 IP] セクションと [内部 IP] セクションを開き、これらの IP アドレス タイプをステートフルとして構成します。
- [ステートフル] で [はい] を選択します。
- [永続インスタンスの削除時] リストで、VM インスタンスの削除時にステートフル IP アドレスに対して行うアクションを選択します。使用できるオプションは次のとおりです。
- IP を接続解除: (デフォルト)。インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。
- IP を削除: インスタンスがインスタンス グループから完全に削除されるときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
- ステートフル構成が完了したら、[完了] をクリックします。
[作成] をクリックします。
gcloud
MIG の作成時に、インスタンス テンプレートのネットワーク インターフェースでステートフルにする IP アドレスを指定するには、
gcloud compute instance-groups managed createコマンド で次のフラグを 1 つ以上使用する必要があります。--stateful-internal-ip: 特定のネットワーク インターフェースの内部 IP アドレスをステートフルとしてマークするために使用します。--stateful-external-ip: 特定のネットワーク インターフェースの外部 IP アドレスをステートフルとしてマークするために使用します。
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template INSTANCE_TEMPLATE \ --size SIZE \ --instance-redistribution-type NONE \ --stateful-internal-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE] \ --stateful-external-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE]次のように置き換えます。
- INSTANCE_GROUP_NAME: 作成する MIG の名前。
- INSTANCE_TEMPLATE: インスタンスの作成時に使用されるインスタンス テンプレートの名前。
- SIZE: このグループで最初に必要なインスタンスの数。
- NI_NAME: 省略可。ネットワーク インターフェース名。指定しない場合は
enabledオプションが必要で、nic0という名前のプライマリ ネットワーク インターフェースがデフォルトで使用されます。複数のネットワーク インターフェースがある場合は、各ネットワーク インターフェースの IP ごとにこのフラグを指定できます。 DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
never: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。on-permanent-instance-deletion: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
例
デフォルト ネットワークおよびカスタム ネットワークの静的内部 IP アドレスと、デフォルト ネットワーク専用の静的外部 IP アドレスを持つ VM インスタンスのリージョン グループを作成する必要があります。アドレスは自動的に割り当てられ、インスタンスの自動修復、更新、再作成イベントを通して保持される必要があります。インスタンス構成は、
node-templateという名前のインスタンス テンプレートに保存します。グループを作成するには、次のコマンドを実行します。
gcloud compute instance-groups managed create example-group \ --region us-east1 \ --template node-template \ --base-instance-name node \ --instance-redistribution-type NONE \ --size 3 \ --stateful-internal-ip interface-name=nic0,auto-delete=on-permanent-instance-deletion --stateful-internal-ip interface-name=nic1,auto-delete=on-permanent-instance-deletion --stateful-external-ip enabled,auto-delete=on-permanent-instance-deletionnic0およびnic1ネットワーク インターフェース内の内部 IP と、nic0ネットワーク インターフェース内の外部 IP は、グループ内のすべてのインスタンスに対してステートフルとして構成されます。このグループは、インスタンスごとに静的内部 IP アドレスと外部 IP アドレスを自動的に予約します。auto-deleteフラグがon-permanent-instance-deletionに設定されているため、静的 IP アドレスの予約は、関連するインスタンスやグループ全体を削除するときに、グループによって自動的に削除されます。nic0およびnic1ネットワーク インターフェース内の内部 IP と、nic0ネットワーク インターフェース内の外部 IP がステートフルとして構成されていることを確認するには、次のコマンドを実行します。gcloud compute instance-groups managed describe example-group \ --zone us-east1-c出力は次のようになります。
baseInstanceName: node ... name: example-group ... statefulPolicy: preservedState: internalIPs: nic0: autoDelete: ON_PERMANENT_INSTANCE_DELETION nic1: autoDelete: ON_PERMANENT_INSTANCE_DELETION externalIPs: nic0: autoDelete: ON_PERMANENT_INSTANCE_DELETION ...グループのステートフル ポリシーには、
nic0およびnic1ネットワーク インターフェース内の内部 IP と、nic0ネットワーク インターフェース内の外部 IP が、インスタンスを完全に削除するときに静的 IP の予約を削除するルールとともにステートフルとして宣言されていることがわかります。Terraform
MIG 内の各 VM に必要なマシンタイプ、ブートディスク イメージ、ネットワーク、その他の VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートの作成を開きます。
MIG を作成するときに、インスタンス テンプレートのネットワーク インターフェース内のどの IP アドレスをステートフルにするかを指定するには、次のブロックを 1 つ以上使用します。
stateful_internal_ip: 特定のネットワーク インターフェースの内部 IP アドレスをステートフルとしてマークするために使用します。stateful_external_ip: 特定のネットワーク インターフェースの外部 IP アドレスをステートフルとしてマークするために使用します。
次のサンプルでは、リージョン MIG の作成時にステートフル IP アドレスを構成します。サンプルで使用しているリソースの詳細については、
google_compute_region_instance_group_managerリソースをご覧ください。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
MIG の作成時に、インスタンス テンプレートのネットワーク インターフェースでステートフルにする IP アドレスを指定するには、
instanceGroupManagers.insertメソッドまたはregionInstanceGroupManagers.insertメソッドのリクエスト本文のstatefulPolicyフィールドにその IP アドレスを含めます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "versions": [ { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE" } ], "targetSize": SIZE, "statefulPolicy": { "preservedState": { "internalIPs": { "NI_NAME": {"autoDelete": "DELETE_RULE" } }, "externalIPs": { "NI_NAME": {"autoDelete": "DELETE_RULE" } } } }, "updatePolicy": { "instanceRedistributionType": "NONE" } }次のように置き換えます。
- PROJECT: リクエストのプロジェクト ID。
- REGION: リージョン MIG の場合、MIG が配置されているリージョン。ゾーン MIG の場合は、
regions/REGIONをzones/ZONEに置き換え、MIG が配置されているゾーンを指定します。 - NAME: 作成する MIG の名前。
- INSTANCE_TEMPLATE: インスタンスの作成時に使用されるインスタンス テンプレートの名前。
- SIZE: このグループで最初に必要なインスタンスの数。
- NI_NAME: 省略可。ネットワーク インターフェース名。指定しない場合は
enabledオプションが必要で、nic0という名前のプライマリ ネットワーク インターフェースがデフォルトで使用されます。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 DELETE_RULE: (省略可)VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
NEVER: (デフォルト)静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。ON_PERMANENT_INSTANCE_DELETION: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
例
デフォルト ネットワークおよびカスタム ネットワークの静的内部 IP アドレスと、デフォルト ネットワーク専用の静的外部 IP アドレスを持つ VM インスタンスのリージョン グループを作成する必要があります。アドレスは自動的に割り当てられ、インスタンスの自動修復、更新、再作成イベントを通して保持される必要があります。インスタンス構成は、
node-templateという名前のインスタンス テンプレートに保存します。グループを作成するには、
regionInstanceGroupManagers.insertメソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers { "name": "example-group", "baseInstanceName": "node", "versions": [ { "instanceTemplate": "global/instanceTemplates/node-template" } ], "targetSize": 3, "statefulPolicy": { "preservedState": { "internalIPs": { "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }, "nic1": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" } } "externalIPs": { "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" } } } }, "updatePolicy": { "instanceRedistributionType": "NONE" } }nic0およびnic1ネットワーク インターフェース内の内部 IP と、nic0ネットワーク インターフェース内の外部 IP は、グループ内のすべてのインスタンスに対してステートフルとして構成されます。このグループは、インスタンスごとに静的内部 IP アドレスと外部 IP アドレスを自動的に予約します。auto-deleteフィールドがON_PERMANENT_INSTANCE_DELETIONに設定されているため、静的 IP アドレスの予約は、関連するインスタンスやグループ全体を削除するときに、グループによって自動的に削除されます。regionInstanceGroupManagers.getメソッドを使用して、nic0およびnic1ネットワーク インターフェース内の内部 IP と、nic0ネットワーク インターフェース内の外部 IP が、新しいregionInstanceGroupManagersリソースのステートフル ポリシーで構成されていることを確認します。GET https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group
レスポンスには、構成済みのステートフル ポリシーが含まれます。
{ "name": "example-group", "baseInstanceName": "node", ... "statefulPolicy": { "preservedState": { "internalIPs": { "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }, "nic1": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" } } "externalIPs": { "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" } } } } ... }グループのステートフル ポリシーには、
nic0およびnic1ネットワーク インターフェース内の内部 IP と、nic0ネットワーク インターフェース内の外部 IP が、インスタンスを完全に削除するときに関連する静的 IP アドレスの予約を削除するルールとともにステートフルとして宣言されていることがわかります。既存の MIG にある IP アドレスのステートフル構成を設定または更新する
ステートレス MIG(ステートフル構成のない MIG)でワークロードを実行し、ワークロードに静的 IP アドレスが必要な場合は、マネージド VM インスタンスにすでに割り当てられている IP アドレスをステートフルにするように構成できます。これにより、インスタンスの自動修復、更新、再作成時に既存の VM の IP アドレスが保持されます。インスタンスを削除した後、静的 IP アドレスの予約を保持することもできます。
既存の MIG に IP アドレスのステートフル ポリシーを構成すると、次の操作を行うことができます。
- グループ内のすべての既存インスタンスと今後作成されるインスタンスに対して IP アドレスをステートフルとして構成します。これにより、すべての既存インスタンスの対応するエフェメラル IP アドレスが静的 IP アドレスに昇格されます。
- IP アドレスの既存のステートフル構成を更新する。
MIG は、ステートフル ポリシーで更新された構成をすべてのインスタンスに自動的かつ非同期的に適用します。ステートフル ポリシーで IP アドレス構成を更新しても、実行中の VM インスタンスは中断されません。詳細については、ステートフル ポリシーの更新の適用をご覧ください。
コンソール
Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
ステートフル IP アドレスを指定するインスタンス グループの名前をクリックします。
[編集] をクリックして、マネージド インスタンス グループを変更します。
[ステートフル構成とインスタンスごとの構成] をクリックして、セクションを開きます。
[グループ構成] セクションで、ステートフルにする [外部 IP] と [内部 IP] をクリックします。
- [ステートフル] で [はい] を選択します。
- [永続インスタンスの削除時] リストで、VM インスタンスの削除時にステートフル IP アドレスに対して行うアクションを選択します。使用できるオプションは次のとおりです。
- IP を接続解除: (デフォルト)。インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。
- IP アドレスを削除する: インスタンスがインスタンス グループから完全に削除されるときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
- ステートフル構成を更新したら、[完了] をクリックします。
- [保存] をクリックして更新を完了します。
gcloud
ステートフルにする IP アドレスの指定、または既存の MIG のステートフル IP 構成の更新を行うには、
gcloud compute instance-groups managed updateコマンドで 1 つ以上の--stateful-internal-ipフラグまたは--stateful-external-ipフラグを使用します。gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --stateful-internal-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE] \ --stateful-external-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE]次のように置き換えます。
- INSTANCE_GROUP_NAME: 更新する MIG の名前。
- NI_NAME: 省略可。ネットワーク インターフェース名。指定しない場合は
enabledオプションが必要で、nic0という名前のプライマリ ネットワーク インターフェースがデフォルトで使用されます。複数のネットワーク インターフェースがある場合は、各ネットワーク インターフェースの IP ごとにこのフラグを指定できます。 DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
never: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。on-permanent-instance-deletion: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
特定のネットワーク インターフェースのステートフル ポリシーに、指定した IP アドレスがすでに構成されている場合、このコマンドによって構成が更新されます。
例
example-fs-groupという名前のステートフル MIG で実行されているファイル サーバーが、静的外部 IP アドレスを介して外部ユーザーに公開されるようにする必要があります。グループ内のインスタンスには現在エフェメラル外部 IP アドレスが割り当てられています。外部ユーザーが公開された IP アドレスを使用してサーバーに継続的にアクセスできるように、インスタンスの自動修復と更新時に IP アドレスが保持されることを確認する必要があります。また、意図しないグループの削除が発生した場合に継続性を保てるように IP アドレスを予約しておく必要があります。次のコマンドを使用して MIG を更新し、外部 IP アドレスをステートフルとして定義します。
gcloud compute instance-groups managed update example-fs-group \ --stateful-external-ip enabledその結果、グループでは、
nic0ネットワーク インターフェース内のエフェメラル外部 IP アドレスが、すべてのマネージド インスタンスの静的 IP アドレスに非同期で昇格されます。これで、インスタンスの自動修復、更新、再作成の各イベントで外部 IP アドレスが保持されるようになりました。指定されていない
auto-deleteルールはデフォルトでneverに設定されているため、関連付けられた静的 IP アドレスの予約は、インスタンスの削除時に割り当てが解除されて保持されます。ステートフル外部 IP がステートフル ポリシーに構成されていることを確認するには、
gcloud compute instance-groups managed describe example-fs-groupコマンドを実行します。REST
ステートフルにする IP アドレスの指定、または既存の MIG のステートフル IP 構成の更新を行うには、
instanceGroupManagers.patchメソッドまたはregionInstanceGroupManagers.patchメソッドを使用します。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "statefulPolicy": { "preservedState": { "internalIPs": { "NI_NAME": {"autoDelete": "DELETE_RULE" } }, "externalIPs": { "NI_NAME": {"autoDelete": "DELETE_RULE" } } } } }次のように置き換えます。
- PROJECT: リクエストのプロジェクト ID。
- REGION: リージョン MIG の場合、MIG が配置されているリージョン。ゾーン MIG の場合は、
regions/REGIONをzones/ZONEに置き換え、MIG が配置されているゾーンを指定します。 - NAME: 作成する MIG の名前。
- NI_NAME: (必須)ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 DELETE_RULE: (省略可)VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
NEVER: (デフォルト)静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。ON_PERMANENT_INSTANCE_DELETION: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
指定した IP アドレスがステートフル ポリシーですでに構成されている場合、このメソッドでは構成にパッチが適用されます。
例
example-fs-groupという名前のステートフル MIG で実行されているファイル サーバーが、静的外部 IP アドレスを介して外部ユーザーに公開されるようにする必要があります。グループ内のインスタンスには現在エフェメラル外部 IP アドレスが割り当てられています。外部ユーザーが公開されたネットワーク インターフェースを使用してサーバーに継続的にアクセスできるように、インスタンスの自動修復と更新時に IP アドレスが保持されることを確認する必要があります。また、意図しないグループの削除が発生した場合に継続性を保てるように IP アドレスを予約しておく必要があります。MIG にパッチを適用して外部 IP アドレスをステートフルとして定義します。
PATCH https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-fs-group { "statefulPolicy": { "preservedState": { "externalIPs": { "nic0": {"autoDelete": "NEVER" } } } } }その結果、グループでは、
nic0ネットワーク インターフェース内のエフェメラル外部 IP アドレスが、すべてのマネージド インスタンスの静的 IP アドレスに非同期で昇格されます。これで、インスタンスの自動修復、更新、再作成の各イベントで外部 IP アドレスが保持されるようになりました。
autoDeleteルールがNEVERに設定されているため、インスタンスの削除時に、関連付けられた静的 IP アドレスの予約は割り当てが解除されて保持されます。regionInstanceGroupManagers.getメソッドによって返されたregionInstanceGroupManagersリソースを表示して、外部 IP アドレスがステートフル ポリシー内で構成されていることを確認します。以前にステートフルであった IP アドレスをステートレスとして宣言する
次のような理由で、ステートフル IP アドレスをエフェメラルに構成することが必要になる場合があります。
- 静的 IP アドレスに依存しないようにアプリを再設計する。
- 誤って IP をステートフルに構成したため、元に戻す必要がある。
グループのステートフル ポリシーからステートフル IP 構成を削除して、特定のネットワーク インターフェース内の IP アドレスをすべてのマネージド インスタンスに対してエフェメラルとして宣言できます。
ステートフル ポリシーからステートフル IP 構成を削除すると、MIG は、グループ内のすべてのインスタンスの保持状態から非同期に IP アドレスを自動的に削除します。このオペレーションによって、実行中の VM インスタンスが中断されることはありません。IP アドレスはインスタンスでアクティブなままですが、ステートフルではなくなります。インスタンスを再作成または更新する場合、またはインスタンスが自動修復される場合に、MIG は関連付けられた静的 IP アドレスを割り当て解除し、エフェメラル アドレスを自動的に割り当てます。これで、静的外部 IP アドレスの予約を保持する必要がなくなった場合に、予約を解除できるようになりました。
詳細については、次のドキュメントをご覧ください。
コンソール
Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
IP アドレスのステートフル構成を削除するインスタンス グループの名前をクリックします。
[編集] をクリックして、マネージド インスタンス グループを変更します。
[ステートフル構成とインスタンスごとの構成] をクリックして、セクションを開きます。
[グループ構成] セクションで、ステートレスにする [外部 IP] と [内部] IP を展開します。
- [ステートフル] オプションを [いいえ] に変更します。
- [完了] をクリックします。
変更後、[保存] をクリックします。
gcloud
MIG のステートフル ポリシーでエフェメラルに設定する IP アドレスを指定するには、
gcloud compute instance-groups managed updateコマンドで--remove-stateful-internal-ipsフラグまたは--remove-stateful-external-ipsフラグを使用します。gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --remove-stateful-internal-ips NI_NAME[,NI_NAME,...] \ --remove-stateful-external-ips NI_NAME[,NI_NAME,...]次のように置き換えます。
- INSTANCE_GROUP_NAME: 更新する MIG の名前。
- NI_NAME: 必須。ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。
nic0という名前のデフォルトのプライマリ ネットワーク インターフェースからステートフル IP アドレスをエフェメラル IP アドレスに変換する必要がある場合は、次のコマンドを使用することもできます。gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --stateful-internal-ip disabled \ --stateful-external-ip disabled例
アプリケーションは、
example-groupという MIG に含まれる VM インスタンスの公開静的外部 IP アドレスを通じてユーザーに公開されています。MIG の前面にロードバランサをデプロイし、ロードバランサを介してトラフィックをマネージド VM に転送することによって、サービスを再設計しました。静的外部 IP アドレスを保持する必要がなくなり、VM の外部 IP アドレスをエフェメラルにすることを考えています。MIG 内の VM のステートフル外部 IP アドレスをエフェメラルにするには、次のコマンドを実行します。
gcloud compute instance-groups managed update example-group \ --remove-stateful-external-ips nic0MIG は、
nic0ネットワーク インターフェースの静的外部 IP アドレスをグループ内のすべてのインスタンスの保持状態から自動的かつ非同期で削除します。外部 IP アドレスはインスタンスでアクティブなままですが、ステートフルではなくなります。インスタンスを再作成または更新する場合、またはインスタンスが自動修復される場合に、MIG は関連付けられた静的 IP アドレスを割り当て解除し、エフェメラル アドレスを自動的に割り当てます。これで、静的外部 IP アドレスの予約を保持する必要がなくなった場合に、予約を解除できるようになりました。REST
MIG のステートフル ポリシーでエフェメラルにする IP アドレスを指定するには、
instanceGroupManagers.patchメソッドまたはregionInstanceGroupManagers.patchメソッドを使用して、MIG のステートフル ポリシーから各 IP の構成を削除します。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "statefulPolicy": { "preservedState": { "internalIPs": { "NI_NAME": null }, "externalIPs": { "NI_NAME": null } } } }次のように置き換えます。
- PROJECT: リクエストのプロジェクト ID。
- REGION: リージョン MIG の場合、MIG が配置されているリージョン。ゾーン MIG の場合は、
regions/REGIONをzones/ZONEに置き換え、MIG が配置されているゾーンを指定します。 - INSTANCE_GROUP_NAME: 作成する MIG の名前。
- NI_NAME: (必須)ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。
例
アプリケーションは、
example-groupという MIG に含まれる VM インスタンスの公開静的外部 IP アドレスを通じてユーザーに公開されています。MIG の前面にロードバランサをデプロイし、ロードバランサを介してトラフィックをマネージド VM に転送することによって、サービスを再設計しました。静的外部 IP アドレスを保持する必要がなくなり、VM の外部 IP アドレスをエフェメラルにすることを考えています。MIG 内の VM のステートフル外部 IP アドレスをエフェメラルにするには、MIG にパッチを適用します。
PATCH https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group { "statefulPolicy": { "preservedState": { "externalIPs": { "nic0": null } } } }MIG は、
nic0ネットワーク インターフェースの静的外部 IP アドレスをグループ内のすべてのインスタンスの保持状態から自動的かつ非同期で削除します。外部 IP アドレスはインスタンスでアクティブなままですが、ステートフルではなくなります。インスタンスを再作成または更新する場合、またはインスタンスが自動修復される場合に、MIG は関連付けられた静的 IP アドレスを割り当て解除し、エフェメラル アドレスを自動的に割り当てます。これで、静的外部 IP アドレスの予約を保持する必要がなくなった場合に、予約を解除できるようになりました。MIG で個別に VM 用のステートフル IP アドレスを構成する
MIG で VM のステートフル IP アドレスを個別に構成するのは、次のようなシナリオで有効です。
- 自動修復と自動更新を利用するために、既存のワークロード(既存の予約済み静的 IP アドレスを移行する)をスタンドアロン VM インスタンスからステートフル MIG に移行する。
- アーキテクチャまたはワークロード構成に必要な特定の予約済み静的 IP アドレスを割り当てる。
MIG での VM 作成時に静的 IP アドレスを構成する
MIG にインスタンスを個別に作成する際に、静的 IP アドレスを予約して特定のインスタンスに割り当てることができます。これは、アーキテクチャ、構成、ユーザーが特定の静的 IP アドレスに依存している状況で、既存のスタンドアロン VM からステートフル MIG にステートフル アプリケーションを移行する場合に有効です。
MIG でインスタンスを手動で作成し、静的 IP アドレスを指定すると、MIG では次の処理が行われます。
- 指定された IP アドレスがまだ存在しない場合は、静的な内部または外部 IP アドレスの予約を作成します。
- 指定されたインスタンス名と IP アドレスを使用して、インスタンス テンプレートからインスタンスを作成します。
- IP アドレス用に指定されたステートフル構成を使用して、インスタンスごとの構成を作成します。
gcloud
事前定義された静的 IP アドレスを持つインスタンスを作成するには、次のフラグを 1 つ以上使用して
gcloud compute instance-groups managed create-instanceコマンドを使用します。--stateful-internal-ip: 特定のネットワーク インターフェースの静的内部 IP アドレスを設定する場合に指定します。--stateful-external-ip: 特定のネットワーク インターフェースの静的外部 IP アドレスを設定する場合に指定します。
gcloud compute instance-groups managed create-instance INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME \ --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \ --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE]次のように置き換えます。
- INSTANCE_GROUP_NAME: MIG の名前。
- INSTANCE_NAME: 作成するインスタンスの名前。
- NI_NAME: 省略可。ネットワーク インターフェース名。指定しない場合は、デフォルトで
nic0という名前のプライマリ ネットワーク インターフェースが使用されます。複数のネットワーク インターフェースがある場合は、各ネットワーク インターフェースの IP ごとにこのフラグを指定できます。 ADDRESS: 必須。次のいずれかの形式でインスタンスに割り当てる静的 IP アドレス。
- アドレス。静的 IP アドレスの予約の URL(例:
"projects/example-project/regions/us-east1/addresses/example-ip-name")。 - リテラル(例:
"130.211.181.55")。- 指定された IP アドレスがまだ予約されていない場合、MIG は対応する IP アドレスの予約を自動的に作成します。
- 指定された IP アドレスが予約されている場合、MIG ではインスタンスに予約が割り当てられます。
- アドレス。静的 IP アドレスの予約の URL(例:
DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
never: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。on-permanent-instance-deletion: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
例
proxy-clusterという名前の MIG で実行されているプロキシ サーバー クラスタに、もう一つの VM インスタンスを追加する必要があります。proxy-node-03-ipという名前の静的内部 IP アドレスの予約を作成しており、新しいノードに割り当てる必要があります。ノードを後で削除しても、IP アドレスの予約は保持する必要があります。次のコマンドを実行してノードを作成します。
gcloud compute instance-groups managed create-instance proxy-cluster \ --instance proxy-node-03 \ --stateful-internal-ip address="projects/example-project/regions/us-east1/addresses/proxy-node-03-ip",auto-delete=neverこのコマンドは、
proxy-node-03という名前のインスタンスを作成し、proxy-node-03-ipという名前の指定された静的内部 IP アドレスをインスタンスに割り当て、IP のステートフル構成を対応するインスタンスごとの構成に保存します。auto-deleteフラグがneverに設定されているため、インスタンスを後で削除しても IP は予約された状態で保持されます。Terraform
事前定義された静的 IP アドレスを持つ VM を作成するには、次のブロックを 1 つ以上使用します。
preserved_state.internal_ip: 特定のネットワーク インターフェースの内部 IP アドレスをステートフルとしてマークするために使用します。preserved_state.external_ip: 特定のネットワーク インターフェースの外部 IP アドレスをステートフルとしてマークするために使用します。
次のサンプルでは、リージョン MIG で VM を作成するときに静的 IP アドレスを構成します。サンプルで使用しているリソースの詳細については、
google_compute_region_per_instance_configリソースをご覧ください。 ゾーン MIG の場合は、google_compute_per_instance_configリソースを使用します。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
MIG に 1 つ以上のインスタンスを作成してカスタム インスタンス名を設定し、これらのインスタンスに事前定義された静的 IP アドレスを割り当てるには、
instanceGroupManagers.createInstancesメソッドまたはregionInstanceGroupManagers.createInstancesメソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/createInstances { "instances": [ { "name": "INSTANCE_NAME", "preservedState" : { "internalIPs": { "NI_NAME" : { "ipAddress": { "address": "ADDRESS", "literal": "LITERAL" }, "autoDelete": "DELETE_RULE" }, ... }, "externalIPs": { "NI_NAME" : { "ipAddress": { "address": "ADDRESS", "literal": "LITERAL" }, "autoDelete": "DELETE_RULE" }, ... }, ... } }, ... ] }次のように置き換えます。
- PROJECT_ID: リクエストのプロジェクト ID。
- NAME: MIG の名前。
- REGION: リージョン MIG の場合、MIG が配置されているリージョン。ゾーン MIG の場合は、
regions/REGIONをzones/ZONEに置き換え、MIG が配置されているゾーンを指定します。 - INSTANCE_NAME: 作成するインスタンスの名前。
- NI_NAME: 必須。ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 - ADDRESS: 省略可。静的 IP アドレスの予約の URL 形式でインスタンスに割り当てる静的 IP アドレス(例:
"projects/example-project/regions/us-east1/addresses/example-ip-name")。静的 IP アドレスを割り当てる際は、addressかliteralのいずれかを、一度に 1 つのフィールドごとに設定する必要があります。 - LITERAL: 省略可。リテラル形式でインスタンスに割り当てる静的 IP アドレス(例:
"130.211.181.55")。静的 IP アドレスを割り当てる際は、addressかliteralのいずれかを、一度に 1 つのフィールドごとに設定する必要があります。- 指定されたリテラル IP アドレスがまだ予約されていない場合、MIG は対応する IP アドレスの予約を自動的に作成します。
- 指定されたリテラル IP アドレスが予約されている場合、MIG ではインスタンスに予約が割り当てられます。
DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
NEVER: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。ON_PERMANENT_INSTANCE_DELETION: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
例
proxy-clusterという名前の MIG で実行されているプロキシ サーバー クラスタに、もう一つの VM インスタンスを追加する必要があります。proxy-node-03-ipという名前の静的内部 IP アドレスの予約を作成しており、新しいノードに割り当てる必要があります。ノードを後で削除しても、IP アドレスの予約は保持する必要があります。regionInstanceGroupManagers.createInstancesメソッドを呼び出して、追加のインスタンスを作成します。POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/proxy-cluster/createInstances { "instances": [ { "name": "proxy-node-03", "preservedState" : { "internalIPs": { "nic0" : { "ipAddress": { "address": "projects/example-project/regions/us-east1/addresses/proxy-node-03-ip" }, "autoDelete": "NEVER" } } } } ] }このメソッドは、
proxy-node-03という名前のインスタンスを作成し、指定されたproxy-node-03-ipという静的内部 IP アドレスをインスタンスに割り当てて、IP のステートフル構成を対応するインスタンスごとの構成に保存します。autoDeleteフィールドはNEVERに設定されているため、インスタンスを後で削除しても IP は予約された状態で保持されます。MIG で既存の VM 用の静的 IP アドレスを構成する
マネージド インスタンスの事前定義された静的 IP アドレスの設定や、ステートフル IP 構成の個別の更新は、たとえば次のように行うことができます。
- MIG 内の既存のインスタンスに静的 IP アドレスを割り当てる。静的外部 IP の場合、このオペレーションにはインスタンスの更新が必要です。静的内部 IP の場合は、インスタンスの再作成が必要です。
- すでに割り当てられている静的 IP アドレスの削除ルールを更新する。このオペレーションは、実行中のインスタンスを中断することなく行うことができます。
外部 IP アドレスを持たない既存のインスタンスに外部ステートフル IP を構成する場合、MIG は対応するネットワーク インターフェースに次のデフォルト値のアクセス構成を追加します。
"accessConfigs": [ { "kind": "compute#accessConfig", "name": "External Nat", "natIP": "XX.XX.XX.XX", "networkTier": "PREMIUM", "type": "ONE_TO_ONE_NAT" } ]gcloud
MIG で VM インスタンス用のステートフル IP アドレスを個別に構成するには、関連付けられたインスタンスごとの構成で、ステートフル IP 構成を追加または更新します。
インスタンスにインスタンスごとの構成がまだ存在しない場合は、次のフラグを 1 つ以上指定して
gcloud compute instance-groups managed instance-configs createコマンドを使用します。--stateful-internal-ip: 特定のネットワーク インターフェースの静的内部 IP アドレスを設定する場合に指定します。--stateful-external-ip: 特定のネットワーク インターフェースの静的外部 IP アドレスを設定する場合に指定します。
gcloud compute instance-groups managed instance-configs create INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME \ --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \ --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,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-internal-ipまたは--stateful-external-ipフラグを使用します。gcloud compute instance-groups managed instance-configs update INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME \ --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \ --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \ [--no-update-instance | --update-instance] [--instance-update-minimal-action MINIMAL_ACTION]次のように置き換えます。
- INSTANCE_GROUP_NAME: MIG の名前。
- INSTANCE_NAME: ステートフル IP アドレスを構成するインスタンスの名前。
- NI_NAME: 省略可。ネットワーク インターフェース名。指定しない場合は、デフォルトで
nic0という名前のプライマリ ネットワーク インターフェースが使用されます。複数のネットワーク インターフェースがある場合は、各ネットワーク インターフェースの IP ごとにこのフラグを指定できます。 - ADDRESS: 次のいずれかの形式でインスタンスに割り当てる静的 IP アドレス。
- アドレス。静的 IP アドレスの予約の URL(例:
"projects/example-project/regions/us-east1/addresses/example-ip-name")。 - リテラル。例:
"130.211.181.55"。- 指定された IP アドレスがまだ予約されていない場合、MIG は対応する IP アドレスの予約を自動的に作成します。
- 指定された IP アドレスが予約されている場合、MIG ではインスタンスに予約が割り当てられます。
- そのインスタンスのインスタンスごとの構成でアドレスがすでに定義されている場合、このサブフラグは省略可能です。それ以外の場合は必須です。
- 省略した場合、現在構成されているアドレスは変更されないままとなります。
- アドレス。静的 IP アドレスの予約の URL(例:
DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
never: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。on-permanent-instance-deletion: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。- 省略した場合は、デフォルト値が新しいステートフル IP 構成に設定されます。既存の構成では、値は変更されません。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
--update-instance: (省略可、デフォルト。)。変更を直ちにインスタンスに適用します。--no-update-instanceフラグを使用すると、変更は直ちに適用されず、後で更新を再作成またはインスタンスに適用するときに適用されます。MINIMAL_ACTION: 省略可。インスタンスごとの構成の更新をインスタンスに適用するときに、最低でも指定されたアクションを実行します。
--update-instanceフラグと併用する必要があります。値は次のいずれかにする必要があります。none: アクションなし。refresh: インスタンスを停止せずに適用できる更新を適用します。restart: インスタンスを停止してから再起動します。replace: インスタンスを再作成します。
省略した場合は、更新に必要な最も影響の少ない操作が使用されます。
例
file-serverというファイル サーバー インスタンスがあります。これは、fs-groupと呼ばれるステートフル MIG 内の単一インスタンスです。このグループには、対応するインスタンスごとの構成があり、ステートフル データディスクが構成されています。ファイル サーバーは内部でしかアクセスできませんでしたが、現在は静的 IP アドレスを介して外部からファイル サーバーにアクセスする必要があるユーザーがいます。file-server-ipアドレスの予約を作成することで、静的外部 IP を予約しました。次に、この IP をファイル サーバー インスタンスに割り当てる必要があります。次のコマンドを実行して、ファイル サーバー インスタンスのステートフル外部 IP を構成します。
gcloud compute instance-groups managed instance-configs update fs-group \ --instance file-server \ --stateful-external-ip interface-name=nic0,address="projects/example-project/regions/us-east1/addresses/file-server-ip",auto-delete=never \ --update-instanceこのコマンドは、次のことを行います。
file-serverインスタンスのインスタンスごとの構成を更新します。file-server-ipアドレスの予約を示すステートフル外部 IP 構成を追加します。- 既存のステートフル データディスクの構成は変更されないままにしておきます。
--update-instanceフラグが使用されているため、インスタンスごとの構成に対する更新が直ちにfile-serverインスタンスに適用されます。インスタンスが再作成され、file-server-ip予約から静的外部 IP アドレスが割り当てられます。
REST
MIG で VM インスタンス用のステートフル IP を個別に構成するには、関連付けられたインスタンスごとの構成でステートフル IP 構成を追加または更新します。
指定したインスタンスにインスタンスごとの構成がまだ存在しない場合は、1 つ以上の IP アドレスのステートフル構成で
instanceGroupManagers.updatePerInstanceConfigsメソッドまたはregionInstanceGroupManagers.updatePerInstanceConfigsメソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/updatePerInstanceConfigs { "perInstanceConfigs": [ { "name": "INSTANCE_NAME", "preservedState" : { "internalIPs": { "NI_NAME" : { "ipAddress": { "address": "ADDRESS", "literal": "LITERAL" }, "autoDelete": "DELETE_RULE" }, ... }, "externalIPs": { "NI_NAME" : { "ipAddress": { "address": "ADDRESS", "literal": "LITERAL" }, "autoDelete": "DELETE_RULE" }, ... }, ... }, "fingerprint: "FINGERPRINT" }, ... ] }特定のインスタンスにインスタンスごとの構成がすでに存在する場合は、1 つ以上の IP アドレスのステートフル構成で
instanceGroupManagers.patchPerInstanceConfigsメソッドまたはregionInstanceGroupManagers.patchPerInstanceConfigsメソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "INSTANCE_NAME", "preservedState" : { "internalIPs": { "NI_NAME" : { "ipAddress": { "address": "ADDRESS", "literal": "LITERAL" }, "autoDelete": "DELETE_RULE" }, ... }, "externalIPs": { "NI_NAME" : { "ipAddress": { "address": "ADDRESS", "literal": "LITERAL" }, "autoDelete": "DELETE_RULE" }, ... }, ... }, "fingerprint: "FINGERPRINT" }, ... ] }次のように置き換えます。
- PROJECT_ID: リクエストのプロジェクト ID。
- NAME: MIG の名前。
- REGION: リージョン MIG の場合、MIG が配置されているリージョン。ゾーン MIG の場合は、
regions/REGIONをzones/ZONEに置き換え、MIG が配置されているゾーンを指定します。 - INSTANCE_NAME: 必須。ステートフル IP を構成するインスタンスの名前。
- NI_NAME: 必須。ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 - ADDRESS: 省略可。静的 IP アドレスの予約の URL 形式でインスタンスに割り当てる静的 IP アドレス(例:
"projects/example-project/regions/us-east1/addresses/example-ip-name")。静的 IP アドレスを割り当てる際は、アドレスかリテラルのいずれかを、一度に 1 つのフィールドごとに設定する必要があります。 - LITERAL: 省略可。インスタンスに割り当てる静的 IP アドレス(リテラル形式)。例:
"130.211.181.55"。静的 IP アドレスを割り当てる際は、アドレスかリテラルのいずれかを、一度に 1 つのフィールドごとに設定する必要があります。- 指定されたリテラル IP アドレスがまだ予約されていない場合、MIG は対応する IP アドレスの予約を自動的に作成します。
- 指定されたリテラル IP アドレスが予約されている場合、MIG ではインスタンスに予約が割り当てられます。
DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
NEVER: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。ON_PERMANENT_INSTANCE_DELETION: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。- 省略した場合は、デフォルト値が新しいステートフル IP 構成に設定されます。既存の構成では、値は変更されません。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
FINGERPRINT: 省略可。指定された構成のフィンガープリント(すでに存在する場合)。楽観的ロックに使用されます。フィンガープリントが指定された値と異なる場合、オペレーションは失敗します。これは、インスタンスごとの構成が、最後に読み取られてから変更されたことを示します。最新のフィンガープリントを確認するには、リージョンまたはゾーン MIG の
listPerInstanceConfigsメソッドの出力をご覧ください。fingerprintを省略すると、オペレーションはフィンガープリントの比較なしで処理を実行します。
updatePerInstanceConfigsメソッドとpatchPerInstanceConfigsメソッドは、指定したインスタンスごとの構成を更新しますが、関連付けられたマネージド インスタンスにその構成の更新を適用しません。インスタンスを再作成または更新するように MIG に指示すると、インスタンスに変更が適用されます。更新を手動で適用して、インスタンスに変更を適用できます。例
file-serverというファイル サーバー インスタンスがあります。これは、fs-groupと呼ばれるステートフル MIG 内の単一インスタンスです。このグループには、対応するインスタンスごとの構成があり、ステートフル データディスクが構成されています。ファイル サーバーは内部でしかアクセスできませんでしたが、現在は静的 IP アドレスを介して外部からファイル サーバーにアクセスする必要があるユーザーがいます。file-server-ipアドレスの予約を作成することで、静的外部 IP を予約しました。次に、この IP をファイル サーバー インスタンスに割り当てる必要があります。新しいステートフル外部 IP で
file-serverのインスタンスごとの構成を更新するには、patchPerInstanceConfigsメソッドを呼び出します。POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/fs-group/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "file-server", "preservedState" : { "externalIPs": { "nic0" : { "ipAddress": { "address": "projects/example-project/regions/us-east1/addresses/file-server-ip" }, "autoDelete": "NEVER" } } } } ] }このメソッドは、
file-serverのインスタンスごとの構成にパッチを適用します。file-server-ipアドレスの予約を示すステートフル外部 IP 構成を追加します。- 既存のステートフル データディスクの構成は変更されないままにしておきます。
構成の更新はまだ
file-serverVM インスタンスに適用されていません。構成の更新は、後でインスタンスを再作成する、または更新をインスタンスに適用するときに MIG によって適用されます。インスタンスごとの構成の更新を
file-serverVM インスタンスに適用するには、インスタンスのregionInstanceGroupManagers.applyUpdatesToInstancesメソッドを呼び出します。POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/gs-group/applyUpdatesToInstances { "instances": ["/zones/us-east1-b/instances/file-server"] }このメソッドでは、構成した静的外部 IP アドレスが
file-server-ip予約からマネージド インスタンスに割り当てられます。このメソッドは、file-serverインスタンスを更新して外部 IP アドレスを割り当てます。ステートフル IP 構成で
autoDeleteがNEVERに設定されているため、後でインスタンスを削除しても IP は予約された状態で保持されます。MIG の既存の VM から静的 IP アドレスの関連付けを解除する
既存の VM と静的 IP アドレスの関連付けを解除し、VM のネットワーク インターフェースをエフェメラルにすることが必要な場合があります。これは次のような場合に役立ちます。
- 静的 IP アドレスに依存しないようにアプリを再設計する。
- 誤って IP をステートフルに構成したため、元に戻す必要がある。
MIG で既存の VM の静的 IP アドレスとの関連付けを解除し、個々の VM の IP アドレスをエフェメラルにするには、関連付けられたインスタンスごとの構成から IP のステートフル構成を削除するか、他の状態が含まれていない場合は、インスタンスごとの構成全体を削除します。変更を適用すると、次のような影響があります。
- IP アドレスはインスタンスでアクティブのままですが、ステートフルではなくなります。
- インスタンスを再作成または更新する場合、またはインスタンスが自動修復される場合に、MIG は関連付けられた静的 IP アドレスの予約を割り当て解除し、エフェメラル アドレスを自動的に割り当てます。
- 割り当て解除後も、静的 IP アドレスは予約された状態で保持されます。
明示的に選択しない限り、インスタンスごとの構成からステートフル IP 構成を削除しても、実行中の VM インスタンスは中断されません。
詳細については、次のリソースをご覧ください。
gcloud
関連するインスタンスごとの構成からステートフル IP 構成を削除するには、
--remove-stateful-internal-ipsフラグまたは--remove-stateful-external-ipsフラグを指定してgcloud compute instance-groups managed instance-configs updateコマンドを使用します。gcloud compute instance-groups managed instance-configs update INSTANCE_GROUP_NAME \ --instance INSTANCE_NAME \ --remove-stateful-internal-ips NI_NAME[,NI_NAME,...] \ --remove-stateful-external-ips NI_NAME[,NI_NAME,...] [--no-update-instance | --update-instance] \ [--instance-update-minimal-action MINIMAL_ACTION]次のように置き換えます。
- INSTANCE_GROUP_NAME: MIG の名前。
- INSTANCE_NAME: 必須。ステートフル IP 構成を削除するインスタンスの名前。
- NI_NAME: 必須。ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 --update-instance: (省略可、デフォルト。)。変更を直ちにインスタンスに適用します。--no-update-instanceフラグを使用すると、変更は直ちに適用されず、後で更新を再作成またはインスタンスに適用するときに適用されます。MINIMAL_ACTION: 省略可。インスタンスごとの構成の更新をインスタンスに適用するときに、最低でも指定されたアクションを実行します。このフラグは、
--update-instanceフラグと組み合わせることによってのみ使用できます。値は次のいずれかにする必要があります。none: アクションなし。refresh: インスタンスを停止せずに適用できる更新を適用します。restart: インスタンスを停止してから再起動します。replace: インスタンスを再作成します。
省略した場合は、更新に必要な最も影響の少ない操作が使用されます。
例
アプリケーションは、MIG 内に存在する
example-groupという VM インスタンスの特定の公開静的外部 IP アドレスを介してユーザーに公開されています。MIG の前面にロードバランサをデプロイし、ロードバランサを介してトラフィックをマネージド VM に転送することによって、サービスを再設計しました。静的外部 IP アドレスを保持する必要がなくなり、VM の外部 IP アドレスをエフェメラルにすることを考えています。MIG 内の VM のステートフル外部 IP アドレスをエフェメラルにするには、インスタンスごとに次のコマンドを実行します(例:
node-1)。gcloud compute instance-groups managed instance-configs update example-group \ --instance node-1 \ --remove-stateful-external-ips nic0 \ --update-instanceこのコマンドは、次のことを行います。
nic0ネットワーク インターフェース内の外部 IP アドレスのステートフル構成をnode-1のインスタンスごとの構成から削除します。--update-instanceフラグが含まれているため、インスタンスごとの構成の更新がすぐにnode-1VM インスタンスに適用されます。VM インスタンスは中断されず、同じ IP からの提供を継続しますが、ステートフルではなくなります。MIG はマネージド インスタンスのpreservedStateFromConfigから静的 IP 予約への参照を削除し、外部 IP アドレスをエフェメラルとして扱います。MIG では、その後のインスタンスの再作成、更新、自動修復イベントで外部 IP が自動的に割り当てられます。- 割り当て解除後も、元の静的 IP は予約されたままになります。不要になった IP は解放できます。
REST
関連するインスタンスごとの構成からステートフル IP 構成を削除するには、
instanceGroupManagers.patchPerInstanceConfigsメソッドまたはregionInstanceGroupManagers.patchPerInstanceConfigsメソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "INSTANCE_NAME", "preservedState" : { "internalIPs": { "NI_NAME" : null }, "externalIPs": { "NI_NAME" : null } }, "fingerprint: "FINGERPRINT" }, ... ] }次のように置き換えます。
- PROJECT_ID: リクエストのプロジェクト ID。
- NAME: MIG の名前。
- REGION: リージョン MIG の場合、MIG が配置されているリージョン。ゾーン MIG の場合は、
regions/REGIONをzones/ZONEに置き換え、MIG が配置されているゾーンを指定します。 - INSTANCE_NAME: 必須。ステートフル IP 構成を削除するインスタンスの名前。
- NI_NAME: 必須。ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 - FINGERPRINT: 省略可。指定された構成のフィンガープリント(すでに存在する場合)。楽観的ロックに使用されます。フィンガープリントが指定された値と異なる場合、オペレーションは失敗します。これは、インスタンスごとの構成が、最後に読み取られてから変更されたことを示します。最新のフィンガープリントを確認するには、リージョンまたはゾーン MIG の
listPerInstanceConfigsメソッドの出力をご覧ください。fingerprintを省略すると、オペレーションはフィンガープリントの比較なしで処理を実行します。
patchPerInstanceConfigsメソッドは、指定されたインスタンスごとの構成を更新しますが、その構成の更新を関連するマネージド インスタンスに適用することはありません。インスタンスを再作成または更新するように MIG に指示すると、インスタンスに変更が適用されます。更新を手動で適用して、インスタンスに変更を適用できます。例
アプリケーションは、MIG 内に存在する
example-groupという VM インスタンスの特定の公開静的外部 IP アドレスを介してユーザーに公開されています。MIG の前面にロードバランサをデプロイし、ロードバランサを介してトラフィックをマネージド VM に転送することによって、サービスを再設計しました。静的外部 IP アドレスを保持する必要がなくなり、VM の外部 IP アドレスをエフェメラルにすることを考えています。MIG 内の VM のステートフル外部 IP アドレスをエフェメラルにするには、インスタンスごとに次のメソッド(
node-1など)を実行し、ネットワーク インターフェースのステートフル構成にnull値を指定します。POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group/patchPerInstanceConfigs { "perInstanceConfigs": [ { "name": "node-1", "preservedState" : { "externalIPs": { "nic0" : null } } } ] }このメソッドでは、
node-1のインスタンスごとの構成から、nic0ネットワーク インターフェース内のステートフル IP アドレスの構成が削除されます。構成の更新はまだnode-1VM インスタンスに適用されていません。MIG では、次回のインスタンスの再作成または更新時に構成の更新が適用されます。インスタンスごとの構成の更新を
node-1VM インスタンスに適用するには、インスタンスのregionInstanceGroupManagers.applyUpdatesToInstancesメソッドを実行します。POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group/applyUpdatesToInstances { "instances": ["/zones/us-east1-c/instances/node-1"] }MIG では、
node-1インスタンスのpreservedStateFromConfigフィールドから静的 IP の予約への参照が削除され、IP アドレスがエフェメラルとして扱われます。MIG では、その後のインスタンスの再作成、更新、自動修復イベントで外部 IP が自動的に割り当てられます。ステートフル構成を削除する
MIG 内のすべての VM のステートフル ポリシーから構成を削除するには、次のドキュメントをご覧ください。
- ステートフル IP アドレスのみを削除するには、以前にステートフルであった IP アドレスをステートレスとして宣言するをご覧ください。
- ステートフル ポリシーからすべてのステートフル構成を削除するには、ステートフル ポリシーの削除をご覧ください。
MIG 内に存在する特定の VM のインスタンスごとの構成から構成を削除するには、次のドキュメントをご覧ください。
- ステートフル IP アドレスのみを削除するには、MIG 内の既存の VM から静的 IP アドレスの関連付けを解除するをご覧ください。
- インスタンスごとの構成からすべてのステートフル構成を削除するには、特定の VM のステートフル構成の削除をご覧ください。
未使用の静的 IP アドレスの削除
グループ内のマネージド インスタンスのステートフル IP アドレスを構成する場合は、インスタンスを完全に削除した際に、関連付けられた静的 IP アドレスの予約を手動または自動のどちらで解放するかを選択できます。
- インスタンスを完全に削除する際に静的 IP アドレスの予約を自動的に開放するには、
autoDeleteパラメータをON_PERMANENT_INSTANCE_DELETIONに設定します。 - 静的 IP アドレスの予約を手動で開放するには、
autoDeleteパラメータをNEVERに設定します。未使用の静的 IP アドレスの予約を削除するには、たとえば、不要な料金を回避するために、次のドキュメントをご覧ください。
関連付けられた IP 予約が削除されないように MIG に指示した場合は、対応するインスタンスまたは MIG が存在しなくなった後に、静的 IP アドレスが予約済みの状態で保持されます。
フィードバック
ステートフル MIG に関するユースケース、課題、フィードバックを募集しています。Google チーム(mig-discuss@google.com)にフィードバックをお寄せください。
次のステップ
- ステートフル構成の適用、表示、削除について学習する。
- VM のステータスやプロパティなど、特定の MIG とそのマネージド インスタンスに関する情報を取得する。
- マネージド インスタンスの操作の詳細を確認する。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-10-22 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["わかりにくい","hardToUnderstand","thumb-down"],["情報またはサンプルコードが不正確","incorrectInformationOrSampleCode","thumb-down"],["必要な情報 / サンプルがない","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-10-22 UTC。"],[],[]] -