GCEでVMインスタンスのリージョンを変更する方法

Google Compute Engine(GCE)で、VMインスタンスのリージョンを変更する方法を解説します。
既に稼働しているVMインスタンスとディスクをまるごと海外から国内に変更したい、国内から海外に変更したいという状況を想定しています。

この記事で行うこと

asia-northeast1 リージョンで稼働しているブログ用サーバーを us-west1 リージョンに移転する

全体の流れ

VMインスタンスのリージョン変更はワンクリックで行うような手段はなく、サーバー移転と同じ手順を踏む必要があります。
全体の流れとしては、

  1. 現行VMインスタンスの停止
  2. ディスクイメージの作成
  3. マシンイメージを元にしたインスタンスの作成
  4. ドメインに紐づけるIPの切り替え
  5. 使わないリソースの削除

といった作業を行います。

作業による影響

この作業では以下の変更が発生します。

変わるもの

  • VMインスタンスのリージョン、ゾーン
  • ディスクのリージョン、ゾーン
  • VMインスタンスやディスクのプロパティ、スケジュール
    (別のインスタンスになるため)
  • 外部IPアドレス
  • リージョン変更に伴う従量課金費用

変わらないもの

  • ドメイン
  • ディスクの中にあるデータ
  • サーバーの中で設定したプロパティ、スケジュール
    (データは複製するため)

用意するもの

以下のことをメモしておくとスムーズです。

  • 移行したいVMインスタンスの名称(例:wordpress-1-vm)
  • 移行先のリージョン、ゾーンの名称(例:us-west1-b)
  • 移行先のVMマシンタイプの名称(例:e2-micro)

作業手順

現行VMインスタンスの停止

Compute Engine を開く
現行VMインスタンスを停止する
ステータスのアイコンが変われば停止完了です

ディスクイメージの作成

Conpute Engine>ディスク を開く
現行サーバーに紐づいたディスクで「イメージを作成」をクリックする
プロパティを指定して「作成」をクリックする
ディスクイメージが作成されたことを確認する

マシンイメージを元にしたインスタンスの作成

Compute Engine>VMインスタンス を開く
インスタンスの作成をクリックする
名前、リージョン、ゾーン、マシンシリーズ、マシンタイプを設定する
ブートディスクの変更をクリックする
カスタムイメージタブを選択する
先ほど作成したディスクイメージを元にブートディスクを作成するように指定
ブートディスクの設定が反映されたことを確認する
ブログ用であれば、HTTPSトラフィックを許可する
その他、カスタムする部分があればこの場で設定する
「作成」をクリックする
VMインスタンスの作成は完了です

ブログの場合、この時点でIPアドレスを使ってWebサイトにアクセスできます。
ドメインに紐づくCSSやスクリプトなどのリソースを読み込めないので画面は崩れています。

ドメインに紐づけるIPの切り替え

VPCネットワーク を開く
IPアドレス を開く
作成したインスタンスに設定されたIPアドレスの「予約」をクリックする
IPに名前を付けて「予約」をクリックする
予約したIPアドレスをメモする

後ほどこのIPアドレスを使います。

ネットワークサービス を開く
Cloud DNS を開く
紐づけたいゾーンをクリックする
AレコードのDNS名をクリックする
「リソースレコードセットを編集」をクリックする
「IPv4アドレス」に先程メモしたIPアドレスを入力して保存する
(元々入力されていたIPはもう使いません)
メッセージが出たら設定完了
今まで通りのドメインでアクセスできることを確認する

キャッシュの残り方によってはすぐにアクセスできない場合もあります。
Ctrl + F5 でパワーリロードしたり、時間をおいてから確認して見てください。
筆者は即時でアクセスできるようになりました。

使わないリソースの削除

しばらく運用して問題なさそうであれば、使わないリソースを解放しましょう。
すべて従量課金による費用が発生し続けます。

作業は以上となります。
実際に操作を行いながら手順に起こしましたが、何か気付いた点があればフィードバックをいただけると嬉しいです。