fbpx

オンプレミスのWordPressサイトをIPsec VPN経由でSoftLayer上に移行する #softlayer #opschef_ja #getchef_ja

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

前々回の記事では、ソフトウェアルータの Vyatta と VyOS を用いて、SoftLayer とオフィスを IPsec VPN で接続しました。

本記事では、IPsec VPN を利用して、オンプレミス上に構築してある既存の WordPress サイトを SoftLayer 上になるべく無停止で移行するシナリオを考えてみます。

移行元のオンプレミス WordPress サイト


softlayer-wp-0

WordPress (Ubuntu 12.04 LTS)
ホスト名: wordpress.example.jp (www.example.jp)
グローバル側: 192.168.122.50 (eth0)
プライベート側: 192.168.100.50 (eth1)
MySQL (Ubuntu 12.04 LTS)
プライベート側: 192.168.100.55 (eth0)

オンプレミスサイトはグローバル側のネットワーク 192.168.122.0/24 とプライベート側のネットワーク 192.168.100.0/24 を持っているとします。192.168.122.0/24 はプライベート用ネットワークですが、この検証では便宜上インターネットに接続しているものとして考えてください。この WordPress には www.example.jp というホスト名がついており、これに対してインターネットからアクセスできていると考えてください。

この WordPress サイトを SoftLayer 上に移行することを考えてみましょう。ただし、エンドユーザが WordPress サイトを利用できない期間を最低限にすることを目標とします。

移行先のSoftLayer WordPress サイトの準備


softlayer-wp-1

Nginx リバースプロキシ (Ubuntu 12.04 LTS)
グローバル側: 119.xxx.xxx.244 (eth1)
プライベート側: 10.110.42.198 (eth0)
WordPress (Ubuntu 12.04 LTS)
プライベート側: 10.110.42.199 (eth0)
MySQL (Ubuntu 12.04 LTS)
プライベート側: 10.110.42.200 (eth0)

SoftLayer 側に移行先サイトを準備します。オンプレミス側と異なり、WordPress はプライベート側のみに接続し、Nginx をリバースプロキシとして配置します。なお、この時点では WordPress および MySQL のデータの移行は行っていません。

移行元のオンプレミス WordPress サイトに Nginx を追加


softlayer-wp-2

Nginx (Ubuntu 12.04 LTS)
ホスト名: nginx.example.jp (www.example.jp)
グローバル側: 192.168.122.40 (eth0)
プライベート側: 192.168.100.40 (eth1)

オンプレミス側のネットワークに Nginx を追加し、WordPress のリバースプロキシとします。そして、www.example.jp を WordPress から Nginx に付け替えます。
DNS キャッシュが切り替わり、www.example.jp に対するアクセスが WordPress 直接から Nginx のみになるまで、しばらく猶予を置くといいでしょう。

オンプレミス側 WordPress のグローバル側ネットワークはひとまず残しておきます。

オンプレミスサイトと SoftLayer を IPsec VPN で接続


softlayer-wp-3

Vyatta (6.6 Community Edition)
グローバル側: 119.XXX.XXX.243 (eth1)
プライベート側: 10.110.42.196 (eth0)
VyOS (1.0.4)
仮想ネットワーク側: 192.168.122.10
プライベート側: 192.168.100.10

前々回の記事のように、ソフトウェアルータの Vyatta と VyOS を用いて SoftLayer とオンプレミスサイトを IPsec VPN で接続します。

オンプレミスサイトのデータを SoftLayer へ IPsec VPN 経由でコピー


softlayer-wp-4

オンプレミス側の WordPress のコンテンツデータと MySQL データベースを SoftLayer 側にコピーします。SoftLayer 側はすべてプライベートネットワークにつながっているため、IPsec VPN 経由でコピーします。

また、この作業期間中は WordPress および MySQL への書き込みを禁止してください。必要に応じて事前にアナウンスするなどしてください。

WordPress コンテンツデータのコピー

IPsec VPN 用のルーティング設定を行います。
なお、場合によっては MTU を小さくしておく必要があるかもしれません。


ubuntu@wordpress:~$ sudo route add -net 10.110.42.192 netmask 255.255.255.192 gw 192.168.100.10
ubuntu@wordpress:~$


ubuntu@wordpress:~$ sudo ifconfig eth1 mtu 1000
ubuntu@wordpress:~$

rsync コマンドを実行し、IPsec VPN 経由でコンテンツの同期を行います。ディレクトリの最後には必ず / を入れてください。


ubuntu@wordpress:~$ rsync -avz --delete /var/www/wordpress/ -e ssh root@10.110.42.199:/var/www/wordpress/
sending incremental file list
:
:
:
sent 176430307 bytes received 233517 bytes 1811936.66 bytes/sec
total size is 245252675 speedup is 1.39
ubuntu@wordpress:~$

コピーが完了しました。
なお、/var/www/wordpress/wp-config.php ファイルの DB_HOST の指定が 192.168.100.55 のままなので 10.110.42.200 に変更しておく必要があるでしょう。

MySQL データベースのコピー

IPsec VPN 用のルーティング設定を行います。
こちらも場合によっては MTU を小さくしておく必要があるかもしれません。


ubuntu@mysql:~$ sudo route add -net 10.110.42.192 netmask 255.255.255.192 gw 192.168.100.10
ubuntu@mysql:~$


ubuntu@mysql:~$ sudo ifconfig eth0 mtu 1000
ubuntu@mysql:~$

mysqldump コマンドを実行し、全データベースをダンプします。


ubuntu@mysql:~$ mysqldump -u root -p --all-databases --events > mysqldump_all_wp.sql
Enter password:
ubuntu@mysql:~$

scp コマンドで IPsec VPN 経由でダンプしたデータベースをコピーします。


ubuntu@mysql:~$ scp mysqldump_all_wp.sql root@10.110.42.200:
root@10.110.42.200's password:
mysqldump_all_wp.sql 100% 397MB 3.1MB/s 02:10
ubuntu@mysql:~$

SoftLayer 側の MySQL でリストアします。


root@mysql-sl:~# mysql -u root -p < mysqldump_all_wp.sql
root@mysql-sl:~#

データベースの移行が完了しました。

まだ書き込みを許可してはいけません。オンプレミス側と SoftLayer 側で特に連携はないからです。

移行元 Nginx リバースプロキシを移行先へ振り向け


オンプレミス側の Nginx リバースプロキシを、IPsec VPN 経由で SoftLayer 側 WordPress に振り向けます。
その場合、IPsec VPN 用のルーティング設定を行います。
こちらも場合によっては MTU を小さくしておく必要があるかもしれません。


ubuntu@nginx:~$ sudo route add -net 10.110.42.192 netmask 255.255.255.192 gw 192.168.100.10
ubuntu@nginx:~$


ubuntu@nginx:~$ sudo ifconfig eth1 mtu 1000
ubuntu@nginx:~$

なお、オンプレミス側の Nginx リバースプロキシを、SoftLayer 側の Nginx リバースプロキシのグローバルに振り向けて IPsec VPN を経由しないという方法でも構いません。パフォーマンス等を考慮して必要に応じて振り向け先を選択してください。

これで SoftLayer 側の WordPress と MySQL が用いられるようになりました。書き込みを行っても構いません。
そして、オンプレミス側の WordPress と MySQL は不要になりました。停止しておきましょう。

移行先の Nginx へアクセスを振り向け


Nginx リバースプロキシ (Ubuntu 12.04 LTS)
ホスト名: www.example.jp
グローバル側: 119.xxx.xxx.244 (eth1)
プライベート側: 10.110.42.198 (eth0)

www.example.jp をオンプレミス側の Nginx から SoftLayer 側の Nginx に付け替えます。

DNS キャッシュが切り替わり、www.example.jp に対するアクセスがオンプレミス側から SoftLayer 側のみになるまで、しばらく猶予を置くといいでしょう。

IPsec VPN の停止


www.example.jp に対するアクセスが SoftLayer 側のみになったことが確認できたら、オンプレミス側の Nginx を停止し、両者の IPsec VPN を停止します。

移行完了


これでオンプレミスの WordPress サイトを SoftLayer に移行完了しました。
一時的に書き込みに制限を設けましたが、WordPress サイトに閲覧できない期間はまったくありませんでした。

まとめ

IPsec VPN を利用して、オンプレミス上に構築してある既存の WordPress サイトを SoftLayer 上になるべく無停止で移行しました。必ずしも IPsec VPN を用いずとも可能ではありますが、オンプレミス側と SoftLayer 側のそれぞれのプライベートネットワークを直接結んでいることで、作業が楽になった箇所もあると思います。是非試してみてください。

なお、各ホストの構築には Enterprise Chef (Cookbook: wordpress, mysql, nginx-proxy) を用いました。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA