Alibaba Cloud の国際サイトへの移行 #3

このwebサイト(https://bigriver.jp)はAlibaba Cloud の日本サイト上で提供していました。 Alibaba Cloud の国際サイトへの移行を進めることを決めたので移行の過程を紹介します。 

移行は以下の3つの記事から構成されていますが、今回は3番目となり、SMC (Server Migration Center) から生成したカスタムイメージからECS を作成します。移行した後のECS インスタンスを購入する話やECS インスタンスのネットワーク構成が変わることへの対応が中心となっています。

1. ECS インスタンスの作成

コンソールにログインし、ECS管理画面から”インスタンスを作成”をクリックします。 

画面が白黒からカラーに変わりました。 ちゃんと調べていませんがマスターアカウントは白黒、RAMユーザはカラーなのかな??

価格モデルとリージョンを選択し、ECS インスタンスタイプはバーストタイプにします。

イメージからSMCで移行したカスタムイメージを選択します。

バーストタイプの注意事項が表示されます。 

ネットワークではパブリックIPアドレスの帯域幅の課金を選択します。 従量課金のトラフィック課金を選択します。

ログイン認証では、”イメージのパスワードを使用”を選択します。 もともと利用していた認証方法(キーペアを使っていた)を継続利用します。

システム構成は既定のままで進めます。

最終構成内容と利用規約、購入方法を確認します。 購入します。

インスタンスが起動しました。

2. SMC移行後の設定

国際サイトに移行したサーバですが、とりあえずIPアドレスでアクセスします(DNSのA レコードの切り替えはまだ行っていないため)。

IPアドレスでアクセスしているため証明書に関する警告(CN=bigriver.jpにIPアドレスでアクセスしている)が出ています。これは想定通りです。

ただ、データベース接続確立エラーとのこと。 WordPressがMySQLに接続できていません。 

MySQL のプロセスを確認します。 プロセスは起動しています。

# ps -ef | grep mysql
mysql 17725 1 23 20:25 ? 00:00:00 /usr/sbin/mysqld –daemonize –pid-file=/run/mysqld/mysqld.pid

しかし、正常に起動できていないことが/var/log/syslogからわかります。

Apr 4 20:24:16 bigriver2 systemd[1]: Starting MySQL Community Server…
Apr 4 20:24:16 bigriver2 mysqld[16672]: Initialization of mysqld failed: 0
Apr 4 20:24:16 bigriver2 systemd[1]: mysql.service: Control process exited, code=exited status=1
Apr 4 20:24:18 bigriver2 systemd[1]: mysql.service: Failed with result ‘exit-code’.
Apr 4 20:24:18 bigriver2 systemd[1]: Failed to start MySQL Community Server.
Apr 4 20:26:15 bigriver2 systemd[1]: Failed to start MySQL Community Server.
Apr 4 20:26:15 bigriver2 systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
Apr 4 20:26:15 bigriver2 systemd[1]: mysql.service: Scheduled restart job, restart counter is at 471.
Apr 4 20:26:15 bigriver2 systemd[1]: Stopped MySQL Community Server.
Apr 4 20:26:15 bigriver2 systemd[1]: Starting MySQL Community Server…
Apr 4 20:26:15 bigriver2 mysqld[18650]: Initialization of mysqld failed: 0
Apr 4 20:26:15 bigriver2 systemd[1]: mysql.service: Control process exited, code=exited status=1
Apr 4 20:26:17 bigriver2 systemd[1]: mysql.service: Failed with result ‘exit-code’.
Apr 4 20:26:17 bigriver2 systemd[1]: Failed to start MySQL Community Server.
Apr 4 20:26:17 bigriver2 systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
Apr 4 20:26:17 bigriver2 systemd[1]: mysql.service: Scheduled restart job, restart counter is at 472.
Apr 4 20:26:17 bigriver2 systemd[1]: Stopped MySQL Community Server.
Apr 4 20:26:17 bigriver2 systemd[1]: Starting MySQL Community Server…
Apr 4 20:26:1

次にMySQLのポートのListenを確認します。  原因がわかりました。 移行後にECS インスタンスのプライベートIPが変わったのですがmysqlのポートのバインドの設定を変えていませんでした。 

# netstat -aon | grep 3306

※mysqlのポート3306 に関するgrep の検索結果は0件

MySQL の設定を確認するとプライベートIPアドレスでのバインドとなっていたのでループバックアドレスに変更し、mysqlを再起動します。 ポート 3306 でLSITENとなったことを確認できました。

# netstat -aon | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

修正したのは以下の部分です。

/etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1

再度、Webブラウザでアクセスします。 データベース接続の問題は無事解消できました。

3. まとめ

今回は同じ東京リージョン同士ではありましたが日本サイト契約のECS インスタンスを大きな問題なく移行することが出来ました。 気づき、ポイントは以下でしょうか。

  • SMC は無償で利用できる
  • SMC の利用には実名認証が必要(SMCというよりは Alibaba Cloud の国際アカウントの利用するために)
  • SMCによる移行時間は約9GB の実容量のECS インスタンスでだいたい20分。
  • 移行前後でVPCやVSwitchの構成が変わる場合(ネットワークアドレスが変わる場合)はアプリケーション側で対応が必要
  • 日本サイトに比べて国際サイトのECSインスタンスはラインナップも多く、また、日本サイトで利用できない機能が色々ある

移行した仮想マシンの起動まで確認出来たのであとはDNS のA レコードを切り替えるだけです。 

以上