2012年8月1日水曜日

TIPS of GlusterFS installation on RHEL6/CentOS6

久々にハマった・・・
ただ単にfuseのインストールを忘れて作業してただけなんですが(´・ω・`)

# yum install fuse fuse-libs

パッケージは以下から
http://download.gluster.org/pub/gluster/glusterfs/

パッケージバージョンは最新版を確認して読み替えが必要。

■RHEL
yum install -y \
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/RHEL/glusterfs-3.3.0-1.el6.x86_64.rpm \
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/RHEL/glusterfs-fuse-3.3.0-1.el6.x86_64.rpm \
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/RHEL/glusterfs-server-3.3.0-1.el6.x86_64.rpm

■CentOS
# yum install -y \
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/CentOS/glusterfs-3.3.0-1.el6.x86_64.rpm \
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/CentOS/glusterfs-fuse-3.3.0-1.el6.x86_64.rpm \
http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.0/CentOS/glusterfs-server-3.3.0-1.el6.x86_64.rpm

# chkconfig glusterd on
# /etc/init.d/glusterd


後は適当に mkfs.ext4 -I 512 /dev/xxxx したデバイスをuser_xattr付きでマウントしてブリックを作成する。
# gluster peer probe nodeXX
# gluster volume create vol01 compute1:/gluster/brick01 compute2:/gluster/brick01 compute3:/gluster/brick01
# gluster volume start vol01

■ネイティブマウント
# mount -t glusterfs nodename:/vol01 /mnt/xxxx

■NFSマウント
NFSを利用する場合、Glusterサーバ側でrpcbindが必要になります。
server# yum install rpcbind
server# /etc/init.d/rpcbind start
server# /etc/init.d/glusterd restart

client# mount -t nfs -o mountvers=3 nodename:/vol01 /mnt/yyy

* 8/9 NFSで利用する場合の手順を追加

4 件のコメント:

  1. 初めまして、いつもブログを参考にさせて頂いてます。

    自分もGlusterFSに興味がありまして、構築に挑戦しているのですが、

    クライアントマシンからNFSでのマウントがどうも上手くいかずに悩んでおります。

    色々文献を調べますと、glusterfsクライアント(?)がNFSサーバ機能を持っているということで、

    サーバ側にはこのブログの手順のみで、そのままクライアントマシンからNFSマウントできるように思うのですが・・・。


    構成は以下となっております。
    192.168.1.100 client
    192.168.1.101 server1
    192.168.1.102 server2

    server1とserver2で組んだvolumeをclientにNFSマウントします。

    clientでの手順は、クリーンインストールから、
    # yum install nfs-utils
    # /etc/init.d/rpcbind start
    # /etc/init.d/rpcidmapd start
    # /etc/init.d/nfslock start
    # /etc/init.d/netfs start
    # chkconfig rpcbind on
    # chkconfig rpcidmapd on
    # chkconfig nfslock on
    # chkconfig netfs on
    # mount -t nfs -o mountvers=3 server1:/vol01 /mnt/vol01/

    以上のようにしておりますが、

    mount.nfs: Connection timed out

    となってマウントされません。

    server側の構築手順はこちらの記事を参考に同様の手順を踏んでおります。

    iptables、selinuxは全てoffの状態です。

    尚、clientにGlusterFSインストールしてのネイティブマウントはOKです。

    何か手順が足りないのだとは思いますが、お知恵を拝借できればと思います。

    ご迷惑でしたらコメントは削除してしまってください。

    宜しくお願いいたします。

    返信削除
  2. ご覧いただきありがとうございます。

    NFSを利用する場合、Glusterサーバ側でglusterdの他に、ポートマップするためのrpcbindが必要になります。
    これはRHEL6系であればyum install rpcbindでインストール可能です。

    注意が必要なのが、rpcbindは他のプロセスからの要求によりポートを割当てるので、glusterdよりも先に起動している必要があります。

    クライアント側の手順は問題ないと思います。
    nfs-utilsでインストールされるNFS関連デーモンは、起動順序が面倒なので再起動した方が確実です。

    またnfs-utilsに付属する便利なコマンドとして、

    showmount -e hostname

    とすると、hostnameで指定したサーバで提供されているNFSのExport状態を確認できます。
    このコマンドはrpcを使っているので、これがうまく行けばマウントもうまく行くはずです。

    返信削除
  3. お返事ありがとうございました。

    アドバイスを頂きました通り、rpcbindのインストールで上手く動作させることができました。

    ありがとうございました。

    公式ドキュメントの一番先頭に、予め入れておくアプリケーションとして記載がありました、失礼しました^^;


    Glusterで構築したストレージに対して、クライアントから一通りのマウント方法は試してみましたが、

    ・ネイティブマウント(Linux系OSがクライアントの場合限定?)
    レプリカ・分散・ストライプ等の動作は問題なし。
    マウント先に指定したサーバがダウンしても、自動でフェイルオーバーされる。

    ・NFSマウント(Windows系・Linuux系OSのどちらがクライアントでもOK)
    レプリカ・分散・ストライプ等の動作は問題なし。
    マウント先のサーバがダウンした際、Gluster系のプログラムのみでは自動でフェイルオーバーされない。

    ・CIFSマウント(基本的にはWindows系OSがクライアントの場合)
    クライアント(Windows)から見てターゲットになるGlusterボリュームを、
    クラスターを構成するサーバ自身の内部で一度ネイティブマウントした後に、
    そのディレクトリをsambaを使ってエクスポートするという仕組みになるでしょうか。
    ボリュームをネイティブマウントしたディテク取りに読み書きが発生すれば、
    当然構成するサーバ群にレプリカ・分散・ストライプ等の動作は行われますが、
    クライアント(Windows)が見にいっている(samba)サーバがダウンした場合、
    やはり自動ではフェイルオーバーされませんよね。


    Windowsから使うとなると、やはり万能とはいかないですね。(当然か)
    公式ドキュメントは親切だと思いますが、仕様に関しては少し不透明なところが多い気がします。

    返信削除
  4. 無事うまく行ったようでよかったです。

    私はほとんどネイティブクライアントしか使わないので、NFS/Sambaについては詳しくないですが、

    SambaについてはCTDB+Clustered SAMBAという組み合わせで動かせるはずです。
    この組み合わせGluster用と云うわけでは無く、元々はGFS(Global Filesystem)のようなクラスターファイルシステム上で動かすことを目的に作られました。

    私はGlusterとの組み合わせ試したことがありませんが、調べてみると動かせるようです。

    CTDB and GlusterFS
    http://download.gluster.com/pub/gluster/documentation/Gluster_CTDB_setup.v1.pdf

    RHEL6.1 を使い倒す Resilient Storage(Clustered Samba)
    http://aikotobaha.blogspot.jp/2011/07/rhel61-resilient-storageclustered-samba.html

    RHEL6.1 を使い倒す Resilient Storage(GFS2)
    http://aikotobaha.blogspot.jp/2011/07/rhel61-resilient-storagegfs2.html

    このあたりが参考になるのでは?と思います。

    NFSについては、GlusterのストレージノードのNIC に仮想IPを割り当て、その仮想IPに対して、hardマウントしてやれば、ノードダウン時に仮想IPを付け替えることでアクセスを継続できるのでは?と思います。
    クラスタソフトと組み合わせる事で、フェイルオーバーを自動化できると思います。

    まずは仮想IPの付け替えでうまく切り替わるか試してみてはいかがでしょうか?

    Glusterはネイティブクライアントが一番いいとは思います・・・

    返信削除