マネージド インスタンス グループ(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
-
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.
IPv6 アドレスはサポートされません。
内部 IP アドレスは、サブネットワークのないネットワーク(レガシー ネットワークなど)ではサポートされていません。
- MIG にステートフルな構成がある場合は、自動スケーリングを使用できません。
- 自動ローリング アップデートを使用する場合は、置換メソッドを
RECREATE
に設定する必要があります。 - ステートフル リージョン MIG の場合は、プロアクティブな再配布を無効にする(再配布タイプを
NONE
に設定する)必要があります。これは、複数ゾーンにまたがる自動再配布によってステーフル インスタンスが削除されないようにするためです。 - すべてのインスタンスの構成を使用してインスタンス テンプレートのプロパティをオーバーライドする場合、インスタンスごとの構成とグループのすべてのインスタンス構成で、同時にこれらのプロパティを指定することはできません。
- アプリケーションでは、割り当てられた IP アドレスを静的なままにする必要があります(例: Kafka)。
- アプリケーションの構成は特定の IP アドレスに依存します。(例: DNS サーバー)
- ユーザー(他のアプリケーションを含みます)は、専用の静的 IP アドレス(ファイル サーバーなど)を使用してサーバーにアクセスします。
- ネットワーク構成を変更せずに既存のワークロードを移行する必要があります。
- 割り当てられた IP アドレスは、静的なままにする必要があります。しかし、アプリケーションで特定の IP アドレスを特定のインスタンスに割り当てる必要はありません。IP アドレスは、インスタンス作成時に自動的に割り当てることができます。
- ユーザー(他のアプリケーションなど)は、アプリケーションのデプロイ後にパブリッシュする静的 IP アドレスを使用してサーバーにアクセスします。
- インスタンスの作成時に自動的に割り当てられた静的 IP アドレスを保持しながら、インスタンスの自動修復と自動更新を活用する必要があります。
- 新しいインスタンスの場合は、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" } ]
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[インスタンス グループの作成] をクリックします。
[新しいマネージド インスタンス グループ(ステートフル)] を選択します。
インスタンス グループの [名前] を指定します。
インスタンス テンプレートを選択します。
[インスタンスの数] で、マネージド インスタンス グループに含めるインスタンスの数を指定します。
[ステートフル構成] で、ステートフルにする外部 IP や内部 IP を展開します。
- [ステートフル] で [はい] を選択します。
- [永続インスタンスの削除時] プルダウンから、VM インスタンスの削除時にステートフル IP アドレスに対して行うアクションを選択します。使用できるオプションは次のとおりです。
- IP を接続解除:(デフォルト)。インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。
- IP を削除: インスタンスがインスタンス グループから完全に削除されるときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
- ステートフル構成が完了したら、[完了] をクリックします。
[作成] をクリックします。
--stateful-internal-ip
: 特定のネットワーク インターフェースの内部 IP アドレスをステートフルとしてマークするために使用します。--stateful-external-ip
: 特定のネットワーク インターフェースの外部 IP アドレスをステートフルとしてマークするために使用します。- INSTANCE_GROUP_NAME: 作成する MIG の名前。
- INSTANCE_TEMPLATE: インスタンスの作成時に使用されるインスタンス テンプレートの名前。
- SIZE: このグループで最初に必要なインスタンスの数。
- NI_NAME: 省略可。ネットワーク インターフェース名。指定しない場合は
enabled
オプションが必要で、nic0
という名前のプライマリ ネットワーク インターフェースがデフォルトで使用されます。複数のネットワーク インターフェースがある場合は、各ネットワーク インターフェースの IP ごとにこのフラグを指定できます。 DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
never
: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。on-permanent-instance-deletion
: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
stateful_internal_ip
: 特定のネットワーク インターフェースの内部 IP アドレスをステートフルとしてマークするために使用します。stateful_external_ip
: 特定のネットワーク インターフェースの外部 IP アドレスをステートフルとしてマークするために使用します。- 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 アドレスが静的 IP アドレスに昇格されます。
- IP アドレスの既存のステートフル構成を更新する。
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
ステートフル IP アドレスを指定するインスタンス グループの名前をクリックします。
[編集] をクリックして、マネージド インスタンス グループを変更します。
[ステートフル構成] で、ステートフルにする外部 IP や内部 IP を展開します。
- [ステートフル] で [はい] を選択します。
- [永続インスタンスの削除時] プルダウンから、VM インスタンスの削除時にステートフル IP アドレスに対して行うアクションを選択します。使用できるオプションは次のとおりです。
- IP を接続解除:(デフォルト)。インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。
- IP アドレスを削除する: インスタンスがインスタンス グループから完全に削除されるときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
- ステートフル構成を更新したら、[完了] をクリックします。
- [保存] をクリックして更新を完了します。
- INSTANCE_GROUP_NAME: 更新する MIG の名前。
- NI_NAME: 省略可。ネットワーク インターフェース名。指定しない場合は
enabled
オプションが必要で、nic0
という名前のプライマリ ネットワーク インターフェースがデフォルトで使用されます。複数のネットワーク インターフェースがある場合は、各ネットワーク インターフェースの IP ごとにこのフラグを指定できます。 DELETE_RULE: 省略可。VM インスタンスが完全に削除された場合の、関連する静的アドレス リソースの処理方法を指定します。使用できるオプションは次のとおりです。
never
: デフォルト。静的 IP アドレスを削除しません。代わりに、インスタンスの削除時にアドレスの割り当てを解除し、アドレスは予約したままになります。on-permanent-instance-deletion
: インスタンスがインスタンス グループから完全に削除されたときに、静的 IP アドレスの予約を削除します。たとえば、インスタンスを手動で削除する、またはグループのサイズを縮小する場合が考えられます。
削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成のオペレーションを実施する際に、グループは常にステートフル IP アドレスを保持します。
- 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 アドレスに依存しないようにアプリを再設計する。
- 誤って IP をステートフルに構成したため、元に戻す必要がある。
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
IP アドレスのステートフル構成を削除するインスタンス グループの名前をクリックします。
[編集] をクリックして、マネージド インスタンス グループを変更します。
[ステートフル構成] で、ステートレスにする外部 IP や内部 IP を展開します。
- [ステートフル] オプションを [いいえ] に変更します。
- [完了] をクリックします。
変更後、[保存] をクリックします。
- INSTANCE_GROUP_NAME: 更新する MIG の名前。
- NI_NAME: 必須。ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0
です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 - PROJECT: リクエストのプロジェクト ID。
- REGION: リージョン MIG の場合、MIG が配置されているリージョン。ゾーン MIG の場合は、
regions/REGION
をzones/ZONE
に置き換え、MIG が配置されているゾーンを指定します。 - INSTANCE_GROUP_NAME: 作成する MIG の名前。
- NI_NAME: (必須)ネットワーク インターフェース名。プライマリ ネットワーク インターフェースの名前は
nic0
です。複数のネットワーク インターフェースがある場合は、複数の NI_NAMES を指定できます。 - 自動修復と自動更新を利用するために、既存のワークロード(既存の予約済み静的 IP アドレスを移行する)をスタンドアロン VM インスタンスからステートフル MIG に移行する。
- アーキテクチャまたはワークロード構成に必要な特定の予約済み静的 IP アドレスを割り当てる。
- 指定された IP アドレスがまだ存在しない場合は、静的な内部または外部 IP アドレスの予約を作成します。
- 指定されたインスタンス名と IP アドレスを使用して、インスタンス テンプレートからインスタンスを作成します。
- IP アドレス用に指定されたステートフル構成を使用して、インスタンスごとの構成を作成します。
--stateful-internal-ip
: 特定のネットワーク インターフェースの静的内部 IP アドレスを設定する場合に指定します。--stateful-external-ip
: 特定のネットワーク インターフェースの静的外部 IP アドレスを設定する場合に指定します。- 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 アドレスを保持します。
preserved_state.internal_ip
: 特定のネットワーク インターフェースの内部 IP アドレスをステートフルとしてマークするために使用します。preserved_state.external_ip
: 特定のネットワーク インターフェースの外部 IP アドレスをステートフルとしてマークするために使用します。- 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 アドレスを保持します。
- MIG 内の既存のインスタンスに静的 IP アドレスを割り当てる。静的外部 IP の場合、このオペレーションにはインスタンスの更新が必要です。静的内部 IP の場合は、インスタンスの再作成が必要です。
- すでに割り当てられている静的 IP アドレスの削除ルールを更新する。このオペレーションは、実行中のインスタンスを中断することなく行うことができます。
--stateful-internal-ip
: 特定のネットワーク インターフェースの静的内部 IP アドレスを設定する場合に指定します。--stateful-external-ip
: 特定のネットワーク インターフェースの静的外部 IP アドレスを設定する場合に指定します。- 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
インスタンスのインスタンスごとの構成を更新します。file-server-ip
アドレスの予約を示すステートフル外部 IP 構成を追加します。- 既存のステートフル データディスクの構成は変更されないままにしておきます。
--update-instance
フラグが使用されているため、インスタンスごとの構成に対する更新が直ちにfile-server
インスタンスに適用されます。インスタンスが再作成され、file-server-ip
予約から静的外部 IP アドレスが割り当てられます。- 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
を省略すると、オペレーションはフィンガープリントの比較なしで処理を実行します。file-server-ip
アドレスの予約を示すステートフル外部 IP 構成を追加します。- 既存のステートフル データディスクの構成は変更されないままにしておきます。
- 静的 IP アドレスに依存しないようにアプリを再設計する。
- 誤って IP をステートフルに構成したため、元に戻す必要がある。
- IP アドレスはインスタンスでアクティブのままですが、ステートフルではなくなります。
- インスタンスを再作成または更新する場合、またはインスタンスが自動修復される場合に、MIG は関連付けられた静的 IP アドレスの予約を割り当て解除し、エフェメラル アドレスを自動的に割り当てます。
- 割り当て解除後も、静的 IP アドレスは予約された状態で保持されます。
- 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
: インスタンスを再作成します。
省略した場合は、更新に必要な最も影響の少ない操作が使用されます。
nic0
ネットワーク インターフェース内の外部 IP アドレスのステートフル構成をnode-1
のインスタンスごとの構成から削除します。--update-instance
フラグが含まれているため、インスタンスごとの構成の更新がすぐにnode-1
VM インスタンスに適用されます。VM インスタンスは中断されず、同じ IP からの提供を継続しますが、ステートフルではなくなります。MIG はマネージド インスタンスのpreservedStateFromConfig
から静的 IP 予約への参照を削除し、外部 IP アドレスをエフェメラルとして扱います。MIG では、その後のインスタンスの再作成、更新、自動修復イベントで外部 IP が自動的に割り当てられます。- 割り当て解除後も、元の静的 IP は予約されたままになります。不要になった IP は解放できます。
- 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
を省略すると、オペレーションはフィンガープリントの比較なしで処理を実行します。 - ステートフル IP アドレスのみを削除するには、以前にステートフルであった IP アドレスをステートレスとして宣言するをご覧ください。
- ステートフル ポリシーからすべてのステートフル構成を削除するには、ステートフル ポリシーの削除をご覧ください。
- ステートフル IP アドレスのみを削除するには、MIG 内の既存の VM から静的 IP アドレスの関連付けを解除するをご覧ください。
- インスタンスごとの構成からすべてのステートフル構成を削除するには、特定の VM のステートフル構成の削除をご覧ください。
- インスタンスを完全に削除する際に静的 IP アドレスの予約を自動的に開放するには、
autoDelete
パラメータをON_PERMANENT_INSTANCE_DELETION
に設定します。 - 静的 IP アドレスの予約を手動で開放するには、
autoDelete
パラメータをNEVER
に設定します。未使用の静的 IP アドレスの予約を削除するには、たとえば、不要な料金を回避するために、次のドキュメントをご覧ください。 - ステートフル構成の適用、表示、削除について学習する。
- VM のステータスやプロパティなど、特定の 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 を使用して認証するをご覧ください。
制限事項
ステートフル IP アドレスを使用する MIG には次の制限があります。
ステートフル構成を使用した MIG (ステートフル MIG)には、次の制限があります。
料金
外部 IP アドレスに対しては、ネットワーキングの料金に応じて課金されます。
ステートフル IP アドレスを使用する状況
インスタンスの IP アドレスを保持することは、次のようなシナリオで有効です。
グループ内のすべての VM にステートフル IP アドレスを構成する
MIG 内のすべての VM にステートフル IP アドレスを構成することは、次のシナリオで有効です。
グループ内の既存および将来の VM インスタンスの静的内部または外部 IP アドレスを維持するには、ステートフル ポリシーでアドレスを構成します。
グループのステートフル ポリシーにステートフル IP アドレス構成を追加すると、MIG では次の方法で構成が適用されます。
静的 IP アドレスを予約するために、MIG によってアドレス リソースが作成されます。
MIG 作成時のステートフル IP アドレスの構成
Google Cloud コンソール、gcloud CLI、Terraform、または REST を使用します。
コンソール
gcloud
MIG の作成時に、インスタンス テンプレートのネットワーク インターフェースでステートフルにする IP アドレスを指定するには、
gcloud compute instance-groups managed create
コマンド で次のフラグを 1 つ以上使用する必要があります。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]
次のように置き換えます。
例
デフォルト ネットワークおよびカスタム ネットワークの静的内部 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-deletion
nic0
および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 つ以上使用します。
次のサンプルでは、リージョン 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" } }
次のように置き換えます。
例
デフォルト ネットワークおよびカスタム ネットワークの静的内部 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 アドレスのステートフル ポリシーを構成すると、次の操作を行うことができます。
MIG は、ステートフル ポリシーで更新された構成をすべてのインスタンスに自動的かつ非同期的に適用します。ステートフル ポリシーで IP アドレス構成を更新しても、実行中の VM インスタンスは中断されません。詳細については、ステートフル ポリシーの更新の適用をご覧ください。
コンソール
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]
次のように置き換えます。
特定のネットワーク インターフェースのステートフル ポリシーに、指定した 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" } } } } }
次のように置き換えます。
指定した 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 構成を削除すると、MIG は、グループ内のすべてのインスタンスの保持状態から非同期に IP アドレスを自動的に削除します。このオペレーションによって、実行中の VM インスタンスが中断されることはありません。IP アドレスはインスタンスでアクティブなままですが、ステートフルではなくなります。インスタンスを再作成または更新する場合、またはインスタンスが自動修復される場合に、MIG は関連付けられた静的 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,...]
次のように置き換えます。
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 nic0
MIG は、
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 } } } }
次のように置き換えます。
例
アプリケーションは、
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 アドレスを個別に構成するのは、次のようなシナリオで有効です。
MIG での VM 作成時における静的 IP アドレスの構成
MIG にインスタンスを個別に作成する際に、静的 IP アドレスを予約して特定のインスタンスに割り当てることができます。これは、アーキテクチャ、構成、ユーザーが特定の静的 IP アドレスに依存している状況で、既存のスタンドアロン VM からステートフル MIG にステートフル アプリケーションを移行する場合に有効です。
MIG でインスタンスを手動で作成し、静的 IP アドレスを指定すると、MIG では次の処理が行われます。
gcloud
事前定義された静的 IP アドレスを持つインスタンスを作成するには、次のフラグを 1 つ以上使用して
gcloud compute instance-groups managed create-instance
コマンドを使用します。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]
次のように置き換えます。
例
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 つ以上使用します。
次のサンプルでは、リージョン 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" }, ... }, ... } }, ... ] }
次のように置き換えます。
例
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 構成の個別の更新は、たとえば次のように行うことができます。
外部 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
コマンドを使用します。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]
次のように置き換えます。
省略した場合は、更新に必要な最も影響の少ない操作が使用されます。
例
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
このコマンドは、次のことを行います。
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" }, ... ] }
次のように置き換えます。
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
VM インスタンスに適用されていません。構成の更新は、後でインスタンスを再作成する、または更新をインスタンスに適用するときに MIG によって適用されます。インスタンスごとの構成の更新を
file-server
VM インスタンスに適用するには、インスタンスの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 のネットワーク インターフェースをエフェメラルにすることが必要な場合があります。これは次のような場合に役立ちます。
MIG で既存の VM の静的 IP アドレスとの関連付けを解除し、個々の VM の 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]
次のように置き換えます。
例
アプリケーションは、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
このコマンドは、次のことを行います。
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" }, ... ] }
次のように置き換えます。
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-1
VM インスタンスに適用されていません。MIG では、次回のインスタンスの再作成または更新時に構成の更新が適用されます。インスタンスごとの構成の更新を
node-1
VM インスタンスに適用するには、インスタンスの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 のステートフル ポリシーから構成を削除するには、次のドキュメントをご覧ください。
MIG 内に存在する特定の VM のインスタンスごとの構成から構成を削除するには、次のドキュメントをご覧ください。
未使用の静的 IP アドレスの削除
グループ内のマネージド インスタンスのステートフル IP アドレスを構成する場合は、インスタンスを完全に削除した際に、関連付けられた静的 IP アドレスの予約を手動または自動のどちらで解放するかを選択できます。
関連付けられた IP 予約が削除されないように MIG に指示した場合は、対応するインスタンスまたは MIG が存在しなくなった後に、静的 IP アドレスが予約済みの状態で保持されます。
フィードバック
ステートフル MIG に関するユースケース、課題、フィードバックを募集しています。Google チーム(mig-discuss@google.com)にフィードバックをお寄せください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-11-19 UTC。
-