GlusterFSの設定が完了したので、XenServerのSRとして設定する。
各サーバにSR用のBRICK用ディレクトリを作成。
[code]
[gluster1]# mkdir /var/brick/sr-mount
[gluster2]# mkdir /var/brick/sr-mount
[/code]
GlusterFSにSR用のボリュームを設定する。
[code]
# /usr/local/sbin/gluster volume create SR_VOL \
replica 2 \
transport tcp \
gluster1.furelo.jp:/var/brick/sr-mount \
gluster2.furelo.jp:/var/brick/sr-mount
# /usr/local/sbin/gluster volume start SR_VOL
# /usr/local/sbin/gluster volume info
[/code]
NFSマウントできればOK。
[code]
# mount -t nfs -o mountproto=tcp localhost:/SR_VOL /mnt
# umount /mnt
[/code]
ここで問題なのが、これらのメールによると、XenServerのNFS SR機能は、Portmapperからポート番号を取得せずに2049に決め打ちらしい。
http://gluster.org/pipermail/gluster-users/2010-November/005751.html
http://gluster.org/pipermail/gluster-users/2010-November/005755.html
対応策として2つの方法がある。
1.GlusterNFSのポート番号を2049に固定する。
[code]
# vi /etc/glusterd/nfs/nfs-server.vol
以下のように、option nfs.port の行を追加すればいいらしい。
volume nfs-server
type nfs/server
option nfs.port 2049
option nfs.dynamic-volumes on
option rpc-auth.addr.BACKUP_VOL.allow *
option nfs3.BACKUP_VOL.volume-id 44fb814c-f2e7-48b3-bd2b-7533e04c3703
option rpc-auth.addr.SR_VOL.allow *
option nfs3.SR_VOL.volume-id a3a74863-60c9-4929-9f0c-dcc1d49791fe
subvolumes BACKUP_VOL SR_VOL
end-volume
※ただし、Glusterの現在のバージョン(3.1.2)では、CLIで操作したときにこのファイルはデフォルトの内容に上書きされる。デーモンを再起動しても上書きされてしまうようだ。
[/code]
2.ポート転送プログラムを動かす
gluster nfsのポート番号はtcpの38467番ポートになるようなので、tcpの2049番ポートに来たパケットを中継するように設定する。
[code]
# zypper install socat
# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 3 tcp 38465 mountd
100005 1 tcp 38466 mountd
100003 3 tcp 38467 nfs
# socat TCP-LISTEN:2049,reuseaddr,fork TCP:localhost:38467 &
# vi /etc/init.d/after.local
以下の行を追加
socat TCP-LISTEN:2049,reuseaddr,fork TCP:localhost:38467 &
[/code]
XenCeneterからNew Storage -> NFS VHDを選択し、以下のパラメータで登録する。
[code]
Name: GlusterNFS virtual disk storage
Share Name: gluster2.furelo.jp:/SR_VOL
[/code]
※それぞれのサーバでCreate a new SRとする。