カテゴリー:
環境構築
タグ:
 VPS

このエントリーをはてなブックマークに追加
更新日時:
2017年05月29日(月)
作成日時:
2017年05月29日(月)

前の記事 / 次の記事

古いサーバーから新しいサーバーへお引っ越し。
さくらのVPS同志ではなくてもrsync動けばいけるんではないかと。

参考

基本社長のブログの通りなのだけど、
社長のブログの通りでできなかった部分もあったのでメモ。

稼働中の旧VPSから新規にセットアップしたVPSへ移行する手順。

  1. DNSのTTLを60に設定
  2. 新サーバーのOSをチェック
  3. 旧サーバーの環境をアップデート
  4. OSのバージョン変えたので旧サーバーの動作確認
  5. rsyncで旧サーバーのデータを新サーバーへ転送
  6. 新サーバーでの動作確認
  7. 旧サーバーのサービス停止
  8. rsyncにて再度旧サーバーのデータを新サーバーへ転送
  9. DNSのAレコードを新サーバーに書き換え

1.DNSのTTLを60に設定

TTLを変更する場合は元に戻すのを忘れないこと。

参考:さくらインターネットでDNSのTTLを変更する方法

サーバー移転後すぐに新サーバーを参照してもらえるようにTTLを短く設定しておく。
今回は60に設定した。この時点ではまだIPアドレスは旧サーバーのままにしておく。

これによって、DNSのキャッシュが60秒で切れるようになるので、
ドメインのIPアドレスを新IPに振り向けた時に即座に反映されるようになる。

TTLのデフォルト値は3600(1時間)とかでかい値になってるはずなので、
TTL60が浸透するまでにはある程度時間がかかる。

時間がかかるので作業開始前に設定を打っておいて、
作業が完了した頃にはTTL60が浸透してるでしょう、という計算。

2.新サーバーのOSをチェック

新旧でOSのビット数が違っていたりするとバグるらしいので、
OSのビット数とバージョンを揃えておく。

今回さくらのVPSにデフォルトで入っていたのは
64bit版のCentOS release 6.9だった。

$ cat /etc/redhat-release
CentOS release 6.9 (Final)
$ arch
x86_64

旧サーバーは64bit版のCentOS6.4だったので、
ついでにアップデートして新サーバーに合わせることにした。

今回は新サーバーのOSに合わせることにしたけど、
旧サーバーの運用状況によって、OSのバージョンをいじりたくないとか、
そもそもOSのビット数違うとかあると思うので、
その時は新サーバーに旧サーバーと同じビット数で同じバージョンのOSを入れる。

3.旧サーバーの環境をアップデート

まず旧サーバーのテスト環境をアップデート。
yum先生に任せる。

$ sudo yum update

4.OSのバージョン変えたので旧サーバーの動作確認

このタイミングでRMagickがお亡くなりになり、
Rmagickを呼び出しているRailsアプリを起動できなくなる。
再度 bundle install すると治るっぽいので一度消して入れ直す。

参考:CentOS6.6から6.7にあげたらlibMagickCore.so.2が見つからなくなった

該当のgemを参照できる場所に移動して、

$ bundle exec gem uninstall rmagick
$ bundle install

治った。

他は問題無さそうだったので、旧サーバーの本番環境でも同じことをする。

5.rsyncで旧サーバーのデータを新サーバーへ転送

IPアドレスは環境に応じて変更。

$ rsync -rtlzvogpHAX --exclude /boot/ --exclude /dev/ \n
--exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ \n
--exclude ifcfg* --exclude ssh_host_* --exclude fstab --block-size=4096 \n
-e ssh / 192.168.1.1:/

この時点ではまだ旧サーバーは動かしておき、新サーバーでは動作確認を行う。

6.新サーバーでの動作確認

とりあえず普通にapacheが動いてなかったので調べる。

$ sudo vi /etc/log/httpd/error_log

/etc/httpd/run/httpd.pid
がないと言われているのでつくる。
何で無いのかはコピペしていたから気付かなかったが、
rsync のコマンドで exlcude で指定してるから当然ない、

sudo mkdir /var/run/httpd/
sudo chmod 710 /var/run/httpd/
sudo chgrp apache /var/run/httpd/

自分の場合はこれだけで済んだが、他にもないと動かないものがあればつくる。

参考:さくらの VPS でサーバーを移行してみた

7.旧サーバーでのサービス停止

httpd とか postfix とかサービスを受け付けているものがあれば止める。
止めないとどんどん旧サーバーの情報の方が新しくなってしまうので止める。

8.rsyncにて再度旧サーバーのデータを新サーバーへ転送

旧サーバーを沈黙させたら改めてrsyncでデータを新サーバーへ転送。
旧サーバーは沈黙しているのでこの時点で旧サーバーにだけある情報というのがなくなる。
さっきのコマンド。

$ rsync -rtlzvogpHAX --exclude /boot/ --exclude /dev/ \n
--exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ \n
--exclude ifcfg* --exclude ssh_host_* --exclude fstab --block-size=4096 \n
-e ssh / 192.168.1.1:/

9.DNSのAレコードを新サーバーに書き換え

DNSのAレコードのIPアドレスを新サーバーのIPアドレスに書き換えると同時に
TTLを元の値に戻す(3600とか)。

新サーバーのIPアドレスを一度でも捕捉してもらえれば
あとはキャッシュしてもらって構わないのでこの時点で戻してしまう。