2012/05/08

さくらVPS 新プランへの移行


先日(といっても結構日が経ってしまいましたが)、さくらVPS に「絶対お得な新プラン」が登場しましたね。



開始当初は申し込みが殺到し、一次申込み停止になりましたが現在は安定しているようです。


というわけで、旧プラン の 「さくらのVPS 512」を、同じ金額でグレードアップした「さくらのVPS 1G」に移行してみました。


新プランでは CentOS 6 がインストールされています。新OSも気になりますが、ひとまずココは旧プランの CentOS 5 の環境をそのまま移行することにしました。


作業の流れ


作業の流れは大体下記のような感じになります。


  1. DNS の TTL を変更
  2. OS再インストール
  3. データ転送
  4. 調整
  5. 動作確認
  6. 再データ転送
  7. DNS の A レコード を変更
  8. 後始末


前提条件・事前準備


ここで紹介する方法は、まるごと移行してしまう方法ですので、下記の前提条件と、事前準備を実施します。


前提条件


  • 両サーバとも同じOS及びバージョンで行うこと(ここでは CentOS 5)

事前準備 作業時間:15分程度


DNS の TTL を変更


サーバ切り替えが即座に反映されるようにするため、DNS の TTL を短め(60など)に設定しておきます。

この DNS の設定変更タイミングは、現在設定されている TTL を目安に考えます。

例えば、現在の TTL が 3600 だとすると、3600秒前(1時間前)までに DNS の変更をしておくのが望ましいです。


OS再インストール


両サーバとも同じOS及びバージョンで行うことが条件なので、まずは VPS コントロールパネル から OS再インストール を実施します。

カスタムOSインストール から、 CentOS 5 x86_64 を選択して OS 再インストールを実行します。


カスタムOSインストール は、ブラウザの Java アプレット上から手動で実施します。公式サポートマニュアルを参考に進めてください。


なお、カスタムOSインストール実行中に表示される、ホスト名やIPアドレスなどが記載された画面は、後ほどまで確認するので閉じないようにします。念のためメモ帳などにコピペしておくのがいいです。


カスタムOSインストールガイド|さくらのVPS|さくらインターネット公式サポートサイト


再インストールが完了したら、VPS ホームよりサーバを起動しておきます。


移行作業


データ転送 作業時間:約1G の転送で30分程度


サーバの再インストールが完了したら、いよいよデータの移行です。

データの移行は、旧サーバ の root ユーザから下記のコマンドで一括転送します。

[new_server_ip] は新サーバの IP アドレスに置き換えてください



# rsync -rtlzvogpHAX --exclude /boot/ --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ifcfg* --exclude ssh_host_* --exclude fstab --block-size=4096 -e ssh / new_server_ip:/

コマンドの意味やオプションなどについては、下記を参考にしてください。


オプション
動作内容
-r
ディレクトリ内容を再帰的にコピーします
-t
更新日時を保持します
-l
ソフトリンクを保持します
-z
転送時に圧縮します
-v
処理状況を表示します
-o
所有者を保持します
-g
グループを保持します
-p
パーミッションを保持します
-H
ハードリンクを保持します
-A
ACLを保持します
-X
拡張パーミッションを保持します
--exclude
除外するファイルの名前を指定します
--block-size=
チェックサムをとる際のブロックサイズを指定します
-e ssh
ssh経由でコピーします

転送が完了したら、VPS コントロールパネルよりサーバを再起動します。


新サーバのネットワーク設定 作業時間:5分程度


GATEWAY の追記


再起動後、SSH で接続できない場合は、VPS コントロールパネルの リモートコンソール から下記のようにネットワークの設定を修正します。

GATEWAY の設定を追記します。

[GATEWAY=***.***.***.***] は新サーバの ゲートウェイ アドレスに置き換えてください


/etc/sysconfig/network-scripts/ifcfg-eth0

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Intel Corporation 82540EM Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=static
DHCPCLASS=
HWADDR=**:**:**:**:**:**
IPADDR=***.***.***.***
NETMASK=255.255.254.0
ONBOOT=yes
GATEWAY=***.***.***.***

# /etc/init.d/network restart

SSH の許可


旧サーバの SSH の設定は、外部からの接続は 鍵認証のみ root ログイン不可 になっているので、一時的にこれを変更します。


/etc/ssh/sshd_config

#vi /etc/ssh/sshd_config

PermitRootLogin yes
PasswordAuthentication yes


/etc/hosts.allow


/etc/hosts.allow, deny で接続制限をしている場合は、こちらも旧サーバを許可する。


/etc/hosts.allow

# vi /etc/hosts.allow

sshd: 旧サーバのIPアドレス

IP アドレスに依存する設定の修正 作業時間:それぞれ


ネットワークの設定が完了したら、IP アドレスに依存する設定などを修正していきます。

旧サーバのユーザ情報などそのまま移行しているので、SSH クライアント の設定も IP アドレスの変更だけで OK でした。


  • NameVirtualHost での Apache 設定
  • MySQL の pid 置場

バックアップ無し

$ sudo find /etc/httpd/conf.d -type f -name '*.conf' | xargs sudo perl -i -pe 's/xxx\.xxx\.xxx\.xxx/xxx\.xxx\.xxx\.xxx/g'
$ sudo find /var/www/vhosts -type f -name '*.conf' | xargs sudo perl -i -pe 's/xxx\.xxx\.xxx\.xxx/xxx\.xxx\.xxx\.xxx/g'

バックアップをとっておく場合(*.bak というバックアップファイルが作成されます)

$ sudo find /etc/httpd/conf.d -type f -name '*.conf' | xargs sudo perl -i.bak -pe 's/xxx\.xxx\.xxx\.xxx/xxx\.xxx\.xxx\.xxx/g'
$ sudo find /var/www/vhosts -type f -name '*.conf' | xargs sudo perl -i.bak -pe 's/xxx\.xxx\.xxx\.xxx/xxx\.xxx\.xxx\.xxx/g'

/var/run 以下は転送から除外しているので、/var/rub/mysqld を作成しておく

$ sudo mkdir /var/run/mysqld
$ sudo chgrp mysql /var/run/mysqld/
$ sudo chmod g+w /var/run/mysqld/
$ sudo /etc/rc.d/init.d/mysqld start

動作確認


ここまでで既に殆どの環境が移行できているはずなので、自分のマシンの hosts を設定して動作を確認してみます。

なお、 hosts ファイルは管理者権限で起動したメモ帳などで編集します。

スタートメニュー > 全てのプログラム > アクセサリ > メモ帳 から右クリックで管理者として実行。その後メニューの開くからファイルを開きます。

C:\Windows\System32\drivers\etc\hosts

新サーバIPアドレス   ドメイン名
xxx.xxx.xxx.xxx   www.test.com

再度データ転送


確認作業をしている間などの差分ファイルを転送します。

転送中にファイルが変更されないように、旧サーバの主要なサービスは予め停止しておきます。


サービスを停止している間は、外部からの閲覧もダウンしている状態になります。


コマンドは最初の転送と同じですが、旧サーバで SSH のポートを変更している場合はポートの指定を入れます。

# /etc/init.d/httpd stop
# /etc/init.d/mysqld stop

# rsync -rtlzvogpHAX --exclude /boot/ --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ifcfg* --exclude ssh_host_* --exclude fstab --block-size=4096 -e ssh / new_server_ip:/

ポートを指定する場合
# rsync -rtlzvogpHAX --exclude /boot/ --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ifcfg* --exclude ssh_host_* --exclude fstab --block-size=4096 -e "ssh -p 10022" / new_server_ip:/

IP アドレスに依存する設定の修正


転送で修正ファイルが上書きされてますので、上記の設定を再度実施します。



DNS の A レコードを変更


いよいよです。

DNS の A レコードを変更することで、外部からの接続が新サーバに振られることになります。

各ネームサービスの指示に従って変更してください。

TTL の設定を変更した場合は、ついでに戻しておきましょう。


移行後


SSH の設定などを元に戻す


SSH の設定など、一時的に許可した設定を元に戻すのを忘れずに。


お疲れ様でした!


これで無事に移行が終わったかと思います。お疲れ様でした。

さくらのVPS 新プラン乗り換え優遇施策 は、2012年5月20日(日)までなので、まだ申し込みしていない方はお早めに!




参考サイト: