以前、「GCPでプロジェクトをまたぐインスタンスの移行をした(Ver.1)」という記事を書きましたが、色々試した結果、Ver.2が出来たので記事にしました。
前回と同じで、今回移行したインスタンスもこのブログ自身です。このブログはWordPressで構築しているため、WordPressの移行をしたいという方の参考になるかもしれません。
移行手順
それでは早速移行手順を紹介します。
こちらが移行パスのイメージとなります。丸数字は作業順番を表しており、この後順番に説明します。
- 【プロジェクトA】インスタンスを停止する。これは移行用のイメージを取得するために完全な静止点を作成するため。GCPの仕様上、インスタンスを起動したままでもイメージを取得できるが、イメージ取得中にデータの書き込みが発生するとイメージ内のデータ不整合が発生する恐れがある。
- 【プロジェクトA】インスタンスに付いているディスクからイメージを作成する。
- 【プロジェクトB】プロジェクトAのイメージをベースに新たにインスタンスを作成する。
- 【プロジェクトB】固定IPアドレスをインスタンスに割り当て、インスタンスを起動する。
- 外部ドメインサーバ上でドメインの向き先を切り替える。
上記の一連の手順で前回よりも短時間にプロジェクトをまたぐインスタンスの移行ができます。
一連の作業を終えるのに私の環境(ディスク使用量約10GB)で30分足らずでした。前回の手順と比べると差は歴然で、かなりシンプルなものになっています。
今回のポイントは③の部分であり、こちらはGCP公式のヘルプを参考にしました。(ただし、私の場合は「Google APIサービスアカウント」ではうまくいかなったので、オーナー権限を持つ「xxxxxx@gmail.com」を使いました)
振り返り
今回紹介した手順はかなり最短ルートに近づきましたが、色々と制約が多いので、より汎用的な手順を模索するという意味で今後挑戦するのは以下と考えています。
- WordPressのアプリケーションレベルでの移行(MySQLのエクスポート&インポート等)を試してみる。
- GCP以外に移行したり、複数台構成を移行してみる。
まだまだ改善の余地がありますが、かなり最短ルートに近い手順が確立して良かったです。