さて、本日からさくらのVPSの上位プランが提供開始されました。
昨年9月に980円で提供を開始した際には大変大きな反響を頂き、既に9,000件を超えるお客様にご利用頂いていますが、さらに高いスペックが欲しいというご意見に答えるため、8GBまでのハイスペックプランをご用意しました。
ただ、クラウド型IaaSと違って移行作業が必要という制限があるため、今回は上位プランへの移行方法をまとめてみました。
手順は以下のとおりです。
- DNSのTTLを60にします。(これは事前に余裕を持って行って下さい)
- 新旧両方のサーバにrsyncをインストールします。
- 旧サーバから新サーバへrsyncを使ってファイルをコピーします。
- 新サーバを再起動します。
- 旧サーバのhttpdやsendmailなどを停止します。(ここから7が完了するまでの間は外部からサーバ停止状態に見えます)
- もう一度、旧サーバから新サーバへrsyncを使ってファイルをコピーします。
- DNSのAレコードを新サーバに向けるとともに、TTLを元に戻します。
- 旧サーバの解約を行います。(毎月20日が解約締切りなので要注意)
それでは開始しましょう。
今回は、CentOSをベースに話をすすめますが、多くのOSで同じ手順が使えます。
- コピーにあたってはrootでログインする必要がありますので、sshの設定を適切に行って下さい
- 新サーバと旧サーバのOSは、必ず同じものにしてください。
古いサーバが32bit OSで、新しいサーバが64bit OSだと不具合が発生します。 - 古いサーバと新しいサーバを絶対に間違えないようにして下さい。
間違えると、全てのデータを失う可能性があります - さくらインターネットで正式サポートしているものではありません。
自己責任で行っていただきますようお願い致します。
- DNSのTTLを60にします。
- rsyncのインストール
- ファイルのコピー
- 新サーバを再起動します。
- 旧サーバのhttpdやsendmailなどを停止します。
- もう一度、旧サーバから新サーバへrsyncを使ってファイルをコピーします。
- DNSのAレコードを新サーバに向けるとともに、TTLを元に戻します。
- 旧サーバの解約を行います。(毎月20日が解約締切りなので要注意)
サーバ切り替えに先立って、該当するホスト名のTTLを60に設定します。
これは、実際に切り替えをするときに、即座に変更されるようにするためです。
さくらインターネットのネームサーバにおける例は、以下のブログ記事を参照してください。
まず、変更したいドメイン(ホスト名)をdigコマンドで調べます。
以下の例の場合は、TTLが3600に設定されているので、サーバ移転の3600秒前(1時間前)までに、この操作を行う必要があります。
[root@localhost ~]# dig vps2.????.jp.
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 <<>> vps2.????.jp.
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62579
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;vps2.????.jp. IN A
;; ANSWER SECTION:
vps2.????.jp. 3600 IN A 59.106.183.??
;; Query time: 3 msec
;; SERVER: 210.224.163.4#53(210.224.163.4)
;; WHEN: Mon Mar 7 20:09:25 2011
;; MSG SIZE rcvd: 47
[root@localhost ~]#
無事変更が出来れば、以下のとおりTTLが60になるのがわかります。
;; ANSWER SECTION:
vps2.????.jp. 60 IN A 59.106.183.??
※自分のネームサーバでTTLが60になっていたとしても、他のネームサーバではキャッシュされたままの可能性があります。変更前のTTLで示された時間(上記の例だと3600秒間)は待つのが懸命です。
恐らく、さくらのVPSでのCentOSデフォルトではrsyncがインストールされていると思います。
rsyncと入力してコマンドがなければ、yum install rsync とすれば結構です。
今回の手順では、サーバの停止時間を極力短くするために、旧サーバ停止前にコピーを行い、停止後に再度コピーを行うこととしています。
2回目のコピーは差分だけですので、比較的短時間でコピーが完了します。
コピーにはrsyncとsshを利用します。
rsyncのオプションは以下のとおりです。
オプション | 動作内容 |
---|---|
-r | ディレクトリ内容を再帰的にコピーします |
-t | 更新日時を保持します |
-l | ソフトリンクを保持します |
-z | 転送時に圧縮します |
-v | 饒舌になります |
-o | 所有者を保持します |
-g | グループを保持します |
-p | パーミッションを保持します |
-H | ハードリンクを保持します |
-A | ACLを保持します |
-X | 拡張パーミッションを保持します |
--delete | ファイルの削除を容認します |
--exclude | 除外するファイルの名前を指定します |
--block-size= | チェックサムをとる際のブロックサイズを指定します |
-e ssh | ssh経由でコピーします |
なお、今回のコピーにあたって、いくつかのファイルとディレクトリを除外しています。除外したファイルは、IPアドレスの設定を行なっているファイルと、sshのホストキーが含まれているファイル、そしてファイルシステムを指定しているファイルです。
除外すべきファイルはOSによって異なりますので、ご注意下さい。
# rsync -rtlzvogpHAX --delete --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ifcfg* --exclude ssh
_host_* --exclude fstab --block-size=4096 -e ssh / 49.212.21.??:/
root@49.212.21.??'s password:
building file list ... done
色々出てくる
sent 2083607 bytes received 3212 bytes 379421.64 bytes/sec
total size is 1705349185 speedup is 817.20
これでコピーが完了しました。
コピー時間は、どれだけのコンテンツやファイルがあるかにより、大きく変わります。
新サーバを再起動すれば、古いサーバの設定を引き継いだ形で動作を開始するはずです。
旧サーバで動作している全てのサービスを停止させます。
例えば、httpdやsendmail、mysql-serverなどのことです。
service httpd stop などと入力して、停止させましょう。
この時点で、外部の人はこのサーバへアクセスできなくなります。
旧サーバがサービスを停止したことを確認して、再度コピーを行います。
2回目なので、さほど時間はかからないと思います。
# rsync -rtlzvogpHAX --delete --exclude /dev/ --exclude /proc/ --exclude /sys/ --exclude /var/run/ --exclude /var/lock/ --exclude ifcfg* --exclude ssh
_host_* --exclude fstab --block-size=4096 -e ssh / 49.212.21.??:/
root@49.212.21.??'s password:
building file list ... done
色々出てくる
sent 2096209 bytes received 920 bytes 220750.42 bytes/sec
total size is 1705349185 speedup is 813.18
新しいサーバに向けてIPアドレスを変更します。
それと同時に、先ほど60にしたTTLをもとに戻します。
※TTLが60のままだと、キャッシュがされないためにサイトへのアクセスが非常に遅くなります。
この作業が完了して60秒以上経てば、外部から新サーバへのアクセスが可能になります。
数日間状況を見て、旧サーバの解約を行います。
なお、さくらインターネットの場合には、解約前月の20日までに解約申請をしなければなりません。
例えば、3月20日までに解約申請すれば4月末での解約となりますが、これを過ぎると1ヶ月間無駄に支払わなければならなくなるので注意してください。
以上が移行手順です。
是非皆様も上位プランで充実したVPSライフをお送り下さい。
LVMで2つの仮想ドライブをまとめた場合の移行方法も書いて頂けると助かります。
CentOSをカスタムインストール(デフォルト構成のままセットアップしたところ、自動で2つの仮想HDDを1つにまとめてくれましたが)しています。
この場合、エントリの方法でrsyncすると、再起動時にKernel Panicで起動に失敗しますが、
やはりLVMのせいでしょうか?