このページでは、ネットワーク間で VM インスタンスを移行する方法について説明します。複数のネットワーク インターフェースを使用して複数のネットワークに接続されている VM の場合、このプロセスではそのうちの 1 つのインターフェースが更新され、残りはそのままになります。
次の移行がサポートされています。
- 1 つのプロジェクト内での、レガシー ネットワークから VPC ネットワークへの移行
- 1 つのプロジェクト内での、VPC ネットワークから別の VPC ネットワークへの移行
- 1 つの VPC ネットワーク内での、サブネットから別のサブネットへの移行
- サービス プロジェクト ネットワークから共有 VPC ホスト プロジェクトの共有ネットワークへの移行
いずれの場合も、VM は移行前のリージョンとゾーンに残ります。接続されているネットワークのみが変更されます。
始める前に
- Virtual Private Cloud のドキュメントを確認します。
-
まだ設定していない場合は、認証を設定します。認証とは、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.
- この移行は「コールド」移行です。VM は移行前に停止している必要があります。
- VM はインスタンス グループまたはネットワーク エンドポイント グループ(NEG)に属していてはなりません。
- VM が非マネージド インスタンス グループまたは NEG にある場合は、移行する前にグループから除外する必要があります。
- マネージド インスタンス グループ内の VM は移行できません。インスタンス テンプレートを新しいネットワークにコピーし、そのテンプレートを使用してマネージド インスタンス グループを再作成する必要があります。
- ターゲット プール内のインスタンスは事前に削除せずに移動できます。ターゲット プールは、両方のネットワークに対応するように拡張されます。
- VM インターフェースはレガシー ネットワークに移行できません。
- 移行中、ネットワーク インターフェースに割り振られる MAC アドレスは変更されます。そのため、サードパーティとの使用許諾契約など、MAC アドレスと密接に関連するサービスが影響を受ける可能性があります。
- 異なる IP 範囲のネットワークまたはサブネットに VM を移行する場合は、インスタンスの内部 IP アドレスを変更する必要があります。同じ IP 範囲のサブネットに移行する場合は、移行時にアドレスを指定することで、もとの IP アドレスを保持できます(移行先でまだ使用されていない場合に限る)。
- ターゲット サブネットの IP 範囲がソースと同じでない場合、インターフェースの IP アドレスは新しいサブネット範囲に一致するように変更されます。
- VM の既存の外部 IP アドレスは移行先でも保持されます。そのためには、ターゲット ネットワークで
compute.subnetworks.useExternalIp
権限が必要です。また、ターゲット ネットワークでは constraints/compute.vmExternalIpAccess 制限により外部 IP アドレスを無効にできなくなります。 Google Cloud コンソールで [VM インスタンス] ページに移動します。
VM インスタンス名をクリックして、詳細ページを開きます。
[停止](
)をクリックします。確認のダイアログが表示されたら、[停止] をクリックします。
VM が停止したら、[編集]
をクリックします。[ネットワーク インターフェース] で、移行するインターフェースをクリックします。
インターフェースの [ネットワーク] フィールドで、インターフェースの新しいネットワークを選択します。
インターフェースの [サブネットワーク] フィールドで、インターフェースの新しいサブネットを選択します。
サブネット範囲から IP アドレスを割り振る場合は、[内部 IP アドレス] フィールドに [自動] を指定します。未使用のアドレスを手動で割り振るには、[カスタム] を指定します。
[完了] をクリックして、ネットワーク インターフェースの編集パネルを閉じます。
[保存] をクリックします。
VM の保存が完了したら、[開始](
)をクリックします。確認のダイアログが表示されたら、[開始] をクリックします。
VM を停止する
gcloud compute instances stop INSTANCE_NAME \ --zone=ZONE_NAME
ここで
- INSTANCE_NAME は VM インスタンスの名前です。
- ZONE_NAME は、インスタンスを含むゾーンの名前です。
VM を移行する
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone=ZONE_NAME \ --network-interface=NIC \ --network=NETWORK_NAME \ --subnetwork=SUBNET_NAME
ここで
- INSTANCE_NAME は VM インスタンスの名前です。
- ZONE_NAME は、インスタンスを含むゾーンの名前です。
- NIC は、更新するインターフェースの名前です。インターフェースが 1 つの VM の場合、NIC は
nic0
です。 - NETWORK_NAME はターゲット ネットワーク名です。VM をサービス プロジェクト ネットワークからホスト プロジェクト ネットワークに移行する場合、ターゲット ネットワークに完全修飾名
projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
を使用する必要があります。 - SUBNET_NAME はターゲット サブネット名です。このサブネットは VM と同じリージョンに存在する必要があります。VM をサービス プロジェクト ネットワークからホスト プロジェクト ネットワークに移行する場合、サブネットに完全修飾名
projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
を使用する必要があります。
VM を起動する
移行には数分かかる場合があります。移行先で VM を起動できるようになるまで待機してください。
gcloud compute instances start INSTANCE_NAME \ --zone=ZONE_NAME
ここで
- INSTANCE_NAME は VM インスタンスの名前です。
- ZONE_NAME は、インスタンスを含むゾーンの名前です。
VM を停止する
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/stop
ここで
- PROJECT_ID はプロジェクト ID です。
- INSTANCE_NAME は VM インスタンスの名前です。
- ZONE_NAME は、インスタンスを含むゾーンの名前です。
インスタンスの詳細を表示します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME
ここで
- PROJECT_ID はプロジェクト ID です。
- ZONE_NAME は、インスタンスを含むゾーンの名前です。
- INSTANCE_NAME は VM インスタンスの名前です。
インターフェースのフィンガープリントを見つけます。
ネットワーク インターフェースを更新するには、フィンガープリントが必要です。
コマンドの出力を調べて、
networkInterfaces
フィールドの内容を見つけます。更新するインターフェースの名前を持つ項目を見つけます(単一インターフェースの VM の場合、名前はnic0
です)。この項目のfingerprint
フィールドの文字列をコピーして、次の手順で使用します。VM を移行する
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NIC { "network": NETWORK_NAME, "subnetwork": SUBNET_NAME, "networkIP": IP_ADDRESS, "name": NIC, "fingerprint": FINGERPRINT }
- PROJECT_ID はプロジェクト ID です。
- ZONE_NAME は、インスタンスを含むゾーンの名前です。
- INSTANCE_NAME は VM インスタンスの名前です。
- NIC は、更新するインターフェースの名前です。インターフェースが 1 つの VM の場合、NIC は
nic0
です。 - NETWORK_NAME はターゲット ネットワーク名です。VM をサービス プロジェクト ネットワークからホスト プロジェクト ネットワークに移行する場合、ターゲット ネットワークに完全修飾名
projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
を使用する必要があります。 - SUBNET_NAME はターゲット サブネット名です。このサブネットは VM と同じリージョンに存在する必要があります。VM をサービス プロジェクト ネットワークからホスト プロジェクト ネットワークに移行する場合、サブネットに完全修飾名
projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
を使用する必要があります。 - IP_ADDRESS は、移行先でのインスタンスの内部 IP アドレスです。このフィールドを省略すると、インターフェースに内部 IP アドレスが自動的に割り当てられます。
- FINGERPRINT は、前のステップで取得したフィンガープリントです。
VM を起動する
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/start
ここで
- PROJECT_ID はプロジェクト ID です。
- INSTANCE_NAME は VM インスタンスの名前です。
- ZONE_NAME は、インスタンスを含むゾーンの名前です。
- インスタンスを別のゾーンに移動する方法を学習する。
- ライブ マイグレーションについて学習する。
- VM のステータスを確認する。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
要件
VM は、移行するにあたって次の要件を満たしている必要があります。
制限事項
VM の移行
VM を移行する前に、新しいネットワークで必要なファイアウォール ルール、ルート、ロードバランサなどのネットワーク インフラストラクチャ リソースを作成することをおすすめします。こうすることで、VM がオフラインになる時間を短縮できます。
コンソール
gcloud
REST
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-23 UTC。
-