2台構成による本格運用
今回は、XenServer2台で運用する構成について紹介したいと思います。
「XenServer 2台 と 共有ストレージサーバ1台で、仮想マシンのデータは全て共有ストレージにて保管・運用する。」
という構成が紹介されていることがありますが、この方法ですと共有ストレージサーバが故障した際の復旧が困難になります。
今回紹介するのは、前回の記事で紹介した「仮想マシンの自動バックアップ」を応用した構成で、2台のXenServerにそれぞれ仮想マシンで作成したストレージサーバを1台ずつ準備し、お互いにバックアップを取得し合います。この構成で本格運用を行うというものです。
構成およびバックアップの手法について
構成
2台の物理サーバそれぞれにXenServerをインストールし、バックアップ対象となる仮想マシンの他にストレージサーバ用の仮想マシンを1台ずつ用意します。
そしてバックアップは下記のように別のXenServer内のストレージサーバ用の仮想マシンに取得するようにします。
■物理サーバ 1台目
XenServer-1ホスト :192.168.0.100
仮想マシンVM-A01 → VMStorage-B へバックアップ
仮想マシンVM-A02 → VMStorage-B へバックアップ
仮想マシンVMStorage-A :192.168.0.101
(XenServer-2用バックアップサーバ、OSはCentOS 6.6を使用)
■物理サーバ 2台目
XenServer-2ホスト :192.168.0.200
仮想マシンVM-B01 → VMStorage-A へバックアップ
仮想マシンVM-B02 → VMStorage-A へバックアップ
仮想マシンVMStorage-B :192.168.0.201
(XenServer-1用バックアップサーバ、OSはCentOS 6.6を使用)
ストレージサーバ用に別の物理サーバを準備するのではなく、XenServer内にストレージサーバを仮想マシンで作成するというのがポイントとなります。
尚、通常通りに XenServer をインストールした場合、XenServerホストにはストレージサーバとして使える程のディスク容量が割り当てられないため、
今回のようにストレージ用の仮想マシンを別途準備する必要があります。
この構成のメリット
例えばXenServer-1ホスト に障害が発生した際には、VMStorage-Bで取得している仮想マシンVM-AxxのバックアップデータをXenServer-2にインポートするだけで、すぐにXenServer-2ホスト上で仮想マシン VM-Axx を稼働させることが可能です。
この方法であればXenCenterを使って、ローカルPC内に仮想マシンのバックアップイメージを取得しておく方法と比べて遥かに早く復旧が可能となり、またXenServer 2台 と 共有ストレージサーバ 1台の3台構成よりも安全な運用が出来ます。
また、共有ストレージ用に物理サーバを別途用意する必要がないため省スペース・省エネルギーにもつながります。
バックアップの手法
第1回目と似ていますが、XenServerが2台になっていますので同じ設定を2度行います。
■バックアップ設定1 XenServer-1のバックアップ
1. NFSマウントを用いてXenServer-1ホストからVMStorage-Bのストレージを使えるようにする。
2. xeコマンドを記述したスクリプトで、【スナップショットの作成】【スナップショットから仮想マシンのエクスポート】【スナップショットの削除】を行う。
■バックアップ設定2 XenServer-2のバックアップ
3. NFSマウントを用いてXenServer-2ホストからVMStorage-Aのストレージを使えるようにする。
4. xeコマンドを記述したスクリプトで、【スナップショットの作成】【スナップショットから仮想マシンのエクスポート】【スナップショットの削除】を行う。
手順の説明
続いて手順の具体的な説明を行います。
■バックアップ設定1 XenServer-1のバックアップ
1. NFSマウントを用いてXenServer-1ホストからVMStorage-Bのストレージを使えるようにする。
■対象サーバ:192.168.0.201 (バックアップサーバ VMStorage-B)
バックアップサーバ(VMStorage-B)にrpcbindとnfsをインストールします。
1 |
# yum install rpcbind nfs-utils |
hosts.allow の設定を変更します。
1 2 3 4 5 6 |
# vi /etc/hosts.allow ALL:127.0.0.1 rpcbind:192.168.0.100 portmap:192.168.0.100 mountd:192.168.0.100 |
rpcbindを起動します。
1 |
# /etc/init.d/rpcbind start |
nfsを起動します。
1 |
# /etc/rc.d/init.d/nfs start |
ストレージ用のディレクトリを作成します。
1 |
# mkdir -p /export/common |
公開ルールの設定をおこないます。
1 2 |
# vi /etc/exports /export/common 192.168.0.100/24(rw,sync,no_root_squash) |
nfsを再起動します。
1 |
# /etc/rc.d/init.d/nfs restart |
全てのディレクトリを一度エクスポート・アンエクスポートします。
1 |
# exportfs -ra |
NFSエクスポートの状況を確認します。
1 |
# exportfs -v |
次にXenServer-1ホスト側にNFSクライアントの設定を行います。
■対象サーバ:192.168.0.100 (XenServer-1ホスト)
マウント用のディレクトリを作成します。
1 |
# mkdir /mnt/exports |
NFSマウントを実行します。
1 |
# mount -t nfs 192.168.0.201:/export/common /mnt/exports |
2. xeコマンドを記述したスクリプトで、【スナップショットの作成】【スナップショットから仮想マシンのエクスポート】【スナップショットの削除】を行う。
次に、XenServer-1ホストでバックアップ用のスクリプトを作成します。
今回はスクリプトの中でバックアップデータの保存先をマウント及びアンマウントするようにしていますが、こちらはお好みで設定してください。(サーバ起動時からずっとマウントしておく方法でも構いません。)
■対象サーバ:192.168.0.100 (XenServer-1ホスト)
スクリプトを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# cd /usr/local/sbin # vi vmexport.sh #!/bin/sh ## VM Name VMNAME=VM-A01 ## Mount network server mount -t nfs 192.168.0.201:/export/common /mnt/exports ## Snapshot Var1=`xe vm-snapshot vm=$VMNAME new-name-label="$VMNAME"_SNAPSHOT` ## Export snapshot xe template-param-set is-a-template=false uuid=$Var1 rm -f /mnt/exports/"$VMNAME".xva xe vm-export uuid=$Var1 filename=/mnt/exports/"$VMNAME".xva ## delete Snapshot xe vm-uninstall uuid="$Var1" force=true ## Unmount network server umount /mnt/exports |
作成したスクリプトに実行権限を与えます。
1 |
# chmod +x VMexport.sh |
作成したスクリプトを実行してテストを行います。
1 |
# sh -x VMexport.sh |
正しく設定が出来ていれば、バックアップサーバの /export/common 内に仮想マシンの全データが含まれているイメージファイルが出来ているはずです。
スクリプトのテストが終わりましたら最後にcronによる自動化の設定を行います。
1 |
0 2 * * * /usr/local/sbin/VMexport.sh |
バックアップ設定2 XenServer-2のバックアップについてはバックアップ設定1とほぼ同じになりますので省略します。
また仮想マシンの復元については、第1回目の記事で紹介していますのでご覧ください。
XenServer2台構成でのバックアップ設定の説明は以上です。
いかがしたでしょうか?
尚、仮想マシンのバックアップデータは、仮想マシンに割り当てられていたディスク容量そのままでなく、実際に使っているデータ容量に応じて大きくなります。
「バックアップ設定の自動化は行っていたものの、いつの間にかバックアップサーバの容量が一杯になってしまいバックアップが正常に取れていなかった。」ということのないように、バックアップサーバはバックアップ対象となる仮想マシンの台数・ディスク容量をあらかじめ考慮して準備しておく必要があります。また別途バックアップサーバの容量をチェックする仕組みを用意するのも良いかもしれませんね。
3回目となる次回はXenServerのちょっとしたテクニックについて紹介する予定です。
それでは。