Red Hat Cluster とGFSによるストレージ共有

Red Hat Cluster は、HA用にも使えるのだが、同時にclvmdというCluster 対応のLVMデーモンを使って、ストレージの共有にも利用出来る。 この際、IPアドレスなどのリソースは設定しなくてもよい。こちらは、Webサーバーなど、LVSによる冗長化が可能なノードでも使うことができ、コンテンツのレプリケーション無しでコンテンツサーバーのスケールアウトを行うことができる。 ( http://www.jp.redhat.com/magazine/NO31/ )

GFSは、clvmd と組み合わせて、同一のデータを複数のノードから読み書きすることができるCluster File Systemだ。 同様の機能は、OCFS(Oracle File System ) でも使用できるが、yum で簡単に使用できることもあり、CentOSでは GFSを使っておいた方がよいだろう。 ww

関連するパッケージはyum でまとめてインストールできる。

# yum groupinstall "Clustering"
# yum groupinstall "Cluster Storage"

なお、CentOSのインストール時にストレージ、ストレージ仮想化を選ぶと、対応するパッケージもインストールされる。


まず、Red Hat Cluster を起動する必要があるのだが、詳細はこちらを参照。 ( http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Cluster_Administration/index.html )
筆者はConga があまり好きではないため、system-config-cluster を用いて設定した。 とはいえ、LVMの共有を行うだけなら、設定項目は、cluster名の設定と、clusterに含めるホスト名の設定だけでである。(ホスト名はDNS, /etc/hosts などで名前解決できる必要がある。)

設定を終えると、設定ファイルが /etc/cluster/cluster.conf にできるので、Cluster に含めるノード全てにコピーする。 詳細はマニュアルに譲るが、 使うポートが多いため、 iptables はオフにした。ポートがブロックされていると、サービスが上がらないので注意。 orz

この状態で、 Cluster に含めるノード全てで、

# service cman start

を実施する。 上手く上がれば、

# clustat

で全ノードが表示される。HAのサービスを使うときには、次にrgmanagerを起動するのだが、CLVMを使う時には、まず、各ノードで

# service clvmd start

を実施する。(# service gfs start の記述もあるが、これはGFSのファイルシステムをマウントするだけなので、実施しなくてもOK )
ここまでで、CLVMを使う準備は整った。


CLVMを使うには、各ノードで同じiSCSIターゲットにログインする。 ディスクが見えたところで、1つのノードでpvcreate, vgcreate, lvcreate を発行する。 この状態で、他のノードからlvdisplay を発行すると、LVが見えるのだが、筆者が試したところ、lvdisplay では見えていたのだが、/dev/iscsivg1 が見えていない状態になっていた。 (CentOS 5.3 で確認。) これは別に不具合ではなく、他のノードで、新規に作成されたVGがアクティベートされていなかったことによる。 他ノードで

# vgchange -ay iscsivg1

を実施したら、/dev/iscsivg1/iscsilv1 が作成された。 ww

ここまでで一応各ノードで同時に同じターゲットが見えていることは分かっているのだが、やはりディスク内に書き込みをして、それが反映されていないと、ディスクが共有されているかどうかは確かめられない。 実際、このLVにExt3を作成しても、LVへの変更がすぐに反映される状態にはならなかった。
このため、次回はGFSを作成し、clvmd と合わせて使ってみる。