CentOS 5
Sponsored Link

ドメインのマイグレーション2009/04/20

  複数のホスト間でドメイン ( ゲストOS ) の移行が簡単に行えるマイグレーション機能を使ってみます。 前節で作成したイメージファイルのゲストOSをマイグレーションしてみます。 ホストの負荷が高くなっている場合、負荷の低いホストへ退避させるといった用途向きでしょうか。 退避させた後、ゆっくりメンテナンスをするといったこともできますね。

ということで、これには最低でも2台のホストが必要になります。3台あれば、1台をドメインデータを格納する専用NFSサーバ、 残りの2台をプライマリホストとセカンダリホストとして、可用性のあるシステムを構築できますが、 さすがに3台はきついので、以下は2台での例です。

事前準備として2台目のマシンに1台目のマシンの環境と同じものを用意します。 さらに、すでにある1台目のホスト(ここの例では 192.168.0.17)でNFSサーバーを稼動させておき、 2台目のホスト(ここの例では 192.168.0.105)でゲストOSのイメージファイルが入っている ディレクトリをマウントできるようにしておきます。 構築方法はNFSサーバーの項を参照ください。

[1] 1台目のホストでの作業
[root@ns ~]#
vi /etc/exports


/home 192.168.0.0/24(rw,sync,no_root_squash)
# 以下を追記

/var/xen 192.168.0.0/24(rw,sync,no_root_squash)


[root@ns ~]#
/etc/rc.d/init.d/nfs restart

Shutting down NFS mountd:     [  OK  ]
Shutting down NFS daemon:     [  OK  ]
Shutting down NFS quotas:     [  OK  ]
Shutting down NFS services:     [  OK  ]
Starting nfs services:     [  OK  ]
Starting nfs quotas:     [  OK  ]
Starting nfs daemon:     [  OK  ]
Starting nfs mountd:     [  OK  ]
[root@ns ~]#
vi /etc/xen/xend-config.sxp


# 21行目:行頭の#を削除しyesに変更

(xend-relocation-server
yes
)

# 33行目:行頭の#を削除

(xend-relocation-port 8002)

# 58行目:行頭の#を削除

(xend-relocation-hosts-allow '')

# 59行目:コメント化

#
(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')

[root@ns ~]#
/etc/rc.d/init.d/xend restart

restart xend:     [  OK  ]
[2] 2台目のホストでの作業
[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host2     0     510     2     r-----     12.6

[root@ns ~]#
mkdir /var/xen

[root@ns ~]#
mount -t nfs 192.168.0.17:/var/xen /var/xen

[root@ns ~]#
vi /etc/xen/xend-config.sxp


# 21行目:行頭の#を削除しyesに変更

(xend-relocation-server
yes
)

# 33行目:行頭の#を削除

(xend-relocation-port 8002)

# 58行目:行頭の#を削除

(xend-relocation-hosts-allow '')

# 59行目:コメント化

#
(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')

[root@ns ~]#
/etc/rc.d/init.d/xend restart

restart xend:     [  OK  ]
[3] 再び1台目に戻ってゲストOS 'rx7' のマイグレーションを実行
[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host     0     510     2     r-----     34.6
lan     3     511     2     r-----     10.8
rx7     4     511     2     r-----     13.9
mail     2     511     2     r-----     19.4
www     1     511     2     r-----     12.3
[root@ns ~]#
xm migrate rx7 192.168.0.105
 
# マイグレーション

[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host     0     510     2     r-----     34.6
lan     3     511     2     r-----     10.8
mail     2     511     2     r-----     19.4
www     1     511     2     r-----     12.3
# 以上のようにrx7はいなくなりました
[4] 2台目にいってゲストOS 'rx7' が来てるか確認してみます。
[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host2     0     510     2     r-----     34.6
rx7     2     511     2     r-----     0.1
# 以上のようにrx7がしっかりときています
  マイグレーション自体は成功しましたが、コンソールを rx7 に切り替えてみると、 以下のようなエラーメッセージが出ていました。どうやらCPUが違うのでダメなようです。 ログインして一応動作させることはできますが、なんか気持ちわるいのでもうしません。 どうやらこれをやるには2台のホスト間でCPUまでも合わせる必要があるようです。 ということで、rx7には再び元のところへ戻ってもらいます。
BUG: soft lockup detected on CPU#1!
[<c043ea7f>] softlockup_tick+0x98/0xa6
[<c0408b7d>] timer_interrupt+0x504/0x557
[<c043ecb3>] handle_IRQ_event+0x27/0x51
[<c043ed70>] __do_IRQ+0x93/0xe8
[<c040672b>] do_IRQ+0x93/0xae
[<c053a095>] evtchn_do_upcall+0x64/0x9b
[<c0404ec5>] hypervisor_callback+0x3d/0x48
[<c0407fd1>] raw_safe_halt+0x8c/0xaf
[<c0402bca>] xen_idle+0x22/0x2e
[<c0402ce9>] cpu_idle+0x91/0xab
=======================
[root@ns ~]#
xm migrate rx7 192.168.0.17

[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host2     0     510     2     r-----     36.3
[5] 上記のマイグレーションは移動する過程でドメインの停止があるため、ネットワークコネクションも切断されてしまいます。 これを回避するために「ライブマイグレーション」というものがあります。こちらは無停止で行えます。 例えば、あるユーザーがあるゲストOSにあるクライアントからSSH接続をして作業していた場合でも、 ライブマイグレーションでは、相手はゲストOSが移動していることは分からないでしょう。とても便利です。 実行は「--live」オプションをつけるだけです。ということで、通常はこちらを使うことになるでしょう。
//////////// 1台目側 ////////////

[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host     0     510     2     r-----     34.6
lan     3     511     2     r-----     10.8
rx7     4     511     2     r-----     13.9
mail     2     511     2     r-----     19.4
www     1     511     2     r-----     12.3

[root@ns ~]#
xm migrate --live rx7 192.168.0.105

[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host     0     510     2     r-----     34.6
lan     3     511     2     r-----     10.8
mail     2     511     2     r-----     19.4
www     1     511     2     r-----     12.3

//////////// 2台目側 ////////////

[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host2     0     510     2     r-----     34.6
rx7     2     511     2     r-----     0.1
[root@ns ~]#
xm migrate --live rx7 192.168.0.17

[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host2     0     510     2     r-----     51.6

//////////// 1台目側 ////////////

[root@ns ~]#
xm list

Name     ID     Mem(MiB)     VCPUs     State     Time(s)
Host     0     510     2     r-----     34.6
lan     3     511     2     r-----     10.8
rx7     4     511     2     r-----     13.9
mail     2     511     2     r-----     19.4
www     1     511     2     r-----     12.3
関連コンテンツ