VPSまるまる移行してみた。

· 3 min read
VPSまるまる移行してみた。

一昔前までVPSと言えばさくらでしたが、
最近さくらに追い上げてきているのがGMOが運営するのVPS「ConoHa」です。

conoha

最近人気が上がりつつあるこのサービス。

特徴は何と言っても、VPSでありながらクラウド並のオプションが用意されていること。
初期費用が無料ですぐ使え、スケールアウトやプライベートIPの割当ができる。
月額料金の範囲で、時間単位の課金も行えるという、AWSと非常に似ているVPSです。

詳しい説明は公式サイトに書いてあるので端折ります。
ここではVPSをまるまる移設した時のことを書きます。


主な流れ

  1. 旧鯖と新鯖のOSバージョンを合わせる
  2. 旧鯖でrsyncコマンドを打つ(要 root)
  3. 待機
  4. 再起動
  5. MACアドレスの変更
  6. httpd、 mysql、 screen のエラー解消
  7. サービスの停止
  8. 再度 rsync
  9. 再起動
  10. 旧鯖停止

 

1.旧鯖と新鯖のOSバージョンを合わせる

旧鯖はConoHaとは別サービスの環境ですが、OSのバージョンはCentOS6.7で統一しています。
ここでLinuxのバージョンに差異があると、エラーがでたり最悪Kernel Panicになりますので
yum updateを実行して最新の状態に揃えておいてください。

2.旧鯖でrsyncコマンドを打つ(要 root)

旧鯖と新鯖に rsync がインストールされていることを確認してください。
rsyncは旧鯖から実行してください。

※ コマンドを打つ前に旧鯖から新鯖へ ssh でアクセスできるように設定する必要があります。
新鯖側はrootユーザでパス認証できるように設定してありますが、セキュリティ上好ましくないので
移行中以外は設定を外しておきましょう。

[bash]
rsync -rtlzvogpHAX –delete –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 / ***.***.***.***:/
[/bash]

3.待機

まちましょう。
環境にもよりますが、自分の場合は15分程でコピーが完了しました。

4.再起動

rsync が終了したら新鯖を再起動します。
ここでは無事起動してくる事を願いましょう。

5.MACアドレスの変更

新鯖のネットワークの設定はそのままですが、
移行した事によりMACアドレスが変わるので、MACアドレスを修正して再起動します。

[bash]
[root@vps ~]# vi /etc/udev/rules.d/70-persistent-net.rules

[bash]
# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”**:**:**:**:**”, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″ #この行をコメントアウトする。

# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”**:**:**:**:**”, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth1″ #ここをeth0に変更する。
[/bash]

6.httpd、 mysql、 screen のエラー解消

自分は問題なかったですが、rsync で除外した /var/run 配下のディレクトリが不足していると
http、mysql、screenでエラーを吐いてしまう場合がある様です。
旧鯖と比較しながら足りないディレクトリを探し、パーミッションやパスは適切に変更してください。
終わったら再起動して各サービスが正しく動作するか確認しましょう。

7.サービスの停止

旧鯖のサービスを停止します。httpd、postfix、minecraft 等全てです。
サーバーのファイルが書き変わらないようにしましょう。ここからは外部からはサーバーが停止しているように見えます。

8.再度 rsync

旧鯖から新鯖へもう一度rsyncします。
最初のrsyncで旧鯖の設定が新鯖へ受け継がれているので、sshでroot でログインができなくなりました。
sshのポート番号も変わっています。ですのでコマンドを一部変更しました。
[username] は sudo をパスワードなしで使用できるユーザー、[port] は新鯖の ssh のポート番号です。

[bash]
rsync -rtlzvogpHAX –delete –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” / [移行先サーバ]:/
[/bash]

9.再起動

再度新鯖を再起動し、各サービスが正常に動作しているか試験します。
クライアントの hosts を設定して、ホスト名を使用し試験するのが最良でしょう。

10.旧鯖停止

ドメインはダイナミックDNSを使用しているので、DNSの変更は即時で行われます。
なので向き先を変えれば切り替え完了です。


おまけ

旧鯖側のサービスは停止していますが、念のためNFSでディレクトリ全体をマウントしています。
このまま運用に問題なければ、旧鯖は削除となります。お疲れ様でした。

[bash]
[root@hdserver ~]# mount -t nfs [旧鯖IP]:/ /home/NFS

[root@vps ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda3 18G 3.4G 14G 20% /
tmpfs 246M 0 246M 0% /dev/shm
[旧鯖IP]:/ 53G 3.5G 47G 7% /home/NFS
[/bash]

参考サイト様:https://www.zu-min.com/archives/75