GlusterFS のインストール・クライアント設定

1.GlusterFSとは

GlusterFSとは分散ファイルシステムを実現するサーバソフトウェア。Gluster Inc. によって開発され、2011年9月Redhat社が買収し現在はOSS版と商用版が存在する。GlusterFSを利用することで、複数のサーバのファイルシステムを集約して1つのファイルシステムとして利用できる。VIP,マスターやスレーブといった概念はない。基本的にすべてのノードは同格として扱われる。

VIPを使用しないアーキテクチャ

クライアントはGlusterクラスタのいずれかのノードに対して、GlusterFileSystemのマウントを行うが、仮にマウント先のノードがダウンしている場合、マウントは失敗する。ただしマウントオプションで接続失敗した場合に違うマウント先を設定できるオプションがあるので、それを利用することで接続先がダウンしたときに、フェイルオーバーが可能。
 

2.GlusterFS用語等々

用語 説明
ストレージプール(Storage Pool) GlusterFSクラスタに参加するサーバグループのことを指します。
ブリック(Brick)
個々のサーバのファイルシステムを指します。ノード、GlusterFSに利用される。GlusterFSは各ノードの1つのブリックにつき1つのポートが使用されます。
ボリューム
ブリックを論理的に束ねたものです。GlusterFSストレージをクライアントから利用する場合には、このボリュームをマウントして利用します。
ボリュームタイプ

ボリュームにデータを作成する時の方式です。ボリューム作成時に選択できます。

Distributed 1つのファイルを1つのブリックに保存します。
Replicated 1つのファイルを他のブリックにも複製して保存します。可用性高。
Striped 1つのファイルを分割して複数のブリックに保存します。

3.インストール手順(Server)

今回はサーバ二台&クライアント一台構成でやってみました。
・gluster01.tagutagu.com 10.24.96.141
・gluster02.tagutagu.com 10.24.96.142

CentOSから提供されているリポジトリを使用します。

[root@gluster01 ~]# yum install centos-release-gluster
[root@gluster01 ~]# yum install glusterfs-server
[root@gluster01 ~]# chkconfig glusterd on
[root@gluster01 ~]# /etc/init.d/glusterd start
Starting glusterd:
Glusterクラスタ(ストレージプール) にサーバ追加を追加します。
[root@gluster01 ~]# yum install centos-release-gluster
[root@gluster01 ~]# yum install glusterfs-server
[root@gluster01 ~]# chkconfig glusterd on
ストレージプールに参加しているサーバを確認します。
[root@gluster01 ~]# gluster peer status
Number of Peers: 1

Hostname: 10.24.96.142
Uuid: d38b2abf-c6eb-45d0-a07e-5a72a4a2c72f
State: Peer in Cluster (Disconnected)
接続できないホストが存在する場合はdisconnectとなります。
[root@gluster01 ~]# gluster peer status
Number of Peers: 1

Hostname: 10.24.96.142
Uuid: d38b2abf-c6eb-45d0-a07e-5a72a4a2c72f
State: Peer in Cluster (Disconnected)
各サーバでブリック用ディレクトリを作成します。
[root@gluster01 ~]# ls /gluster_fs/
gs01
[root@gluster02 ~]# ls /gluster_fs/
gs01
各サーバで名前解決用にhostsファイルを編集します。
[root@gluster01 ~]# echo "10.24.96.141 gluster01.tagutagu.com" >> /etc/hosts
[root@gluster01 ~]# echo "10.24.96.142 gluster02.tagutagu.com" >> /etc/hosts

[root@gluster02 ~]# echo "10.24.96.141 gluster01.tagutagu.com" >> /etc/hosts
[root@gluster02 ~]# echo "10.24.96.142 gluster02.tagutagu.com" >> /etc/hosts
いずれかのサーバでGluster volumeを作成し、ボリュームを起動。
書式 Gluster volume create <NEW-VOLNAME> [stripe <COUNT>] [replica <COUNT> [arbiter <COUNT>]] [disperse [<COUNT>]] [disperse-data <COUNT>] [redundancy <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK>?<vg_name>... [force]

基本はルートパーティションと同じデバイス上にはボリュームのブリックは作成できないみたい。今回は強制実行(force)で実行してしまいました。

※ルートパーティションをブリックにした構成でやると怒られる
[root@gluster01 ~]# gluster volume create gs01 replica 2 gluster01.tagutagu.com:/gluster_fs/gs01 gluster02.t
agutagu.com:/gluster_fs/gs01
volume create: gs01: failed: The brick gluster01.tagutagu.com:/gluster_fs/gs01 is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want to override this behavior.
[root@gluster01 ~]# gluster volume create gs01 replica 2 gluster01.tagutagu.com:/gluster_fs/gs01 gluster02.tagutagu.com:/gluster_fs/gs01 force
volume create: gs01: success: please start the volume to access data

[root@gluster01 ~]# gluster volume start gs01
volume start: gs01: success

[root@gluster01 ~]# gluster volume info

Volume Name: gs01
Type: Replicate
Volume ID: e25ba5a0-4310-4929-919c-9150f3b91dc5
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster01.tagutagu.com:/gluster_fs/gs01
Brick2: gluster02.tagutagu.com:/gluster_fs/gs01
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on
またボリュームを作り直す場合などキャッシュが完全に消えない場合がある、以下のメッセージで怒られたらキャッシュを消してみると吉。
https://qiita.com/kawaz/items/afc5659f14b586190f23
# gluster volume create test-volume01 replica 2 server01:/data/test01 server02:/data/test01
volume create: test-volume01: failed: /data/test01 is already part of a volume


 

4.GlusterFSをNFSで使用するための設定

初期状態ではクライアントからNFSマウントすることができなかったため、必要箇所を修正します。GlusterFSには、CentOS標準とは異なるNFSサーバ機能がふくまれています。デフォルトでは無効化されているので各サーバで有効化しておきます。

[root@gluster01 ~]# gluster volume set gs01 nfs.disable off
[root@gluster02 ~]# gluster volume set gs01 nfs.disable off
NFSに必要なrpcbindの起動、rpcbind起動に伴いGlusterFSを再起動します。
[root@gluster01 ~]# /etc/init.d/rpcbind start
[root@gluster01 ~]# /etc/init.d/glusterd restart
[root@gluster02 ~]# /etc/init.d/rpcbind start
[root@gluster02 ~]# /etc/init.d/glusterd restart

 

5.クライアント設定

クライアント側も各GlusterFSサーバを名前解決可能な状態にしておく必要があります。(直接接続しないサーバについても)hostsを編集しておきます。

■マウントできない
[root@mms ~]# mount -t glusterfs 10.24.96.141:/gs01 /data
Mount failed. Please check the log file for more details.

[root@mms ~]# echo "10.24.96.141 gluster01.tagutagu.com" >> /etc/hosts
[root@mms ~]# echo "10.24.96.142 gluster02.tagutagu.com" >> /etc/hosts

クライアントからGlusterFileSystemをマウントするには、2つの方法があります。

GlusterFSクライアントとしてマウント

必要なパッケージをインストールし、マウントタイプをglusterfsを指定します。

[root@mms ~]# yum install centos-release-gluster
[root@mms ~]# yum install glusterfs-fuse
[root@mms ~]# mount -t glusterfs 10.24.96.141:/gs01 /data
NFSクライアントとしてマウント
[root@mms ~]# mount -t nfs  gluster01.tagutagu.com:/gs01 /data
また、一回こんなエラーに遭遇。ClientのGluster logに、なにやらGluster Volume側のキャッシュサイズがでかすぎるよ、とのこと。
[2018-01-25 10:26:39.786792] E [MSGID: 127002] 
[quick-read.c:838:check_cache_size_ok] 0-test-volume01-quick-read: Cache size 8246611968 is greater than the max size of 8238444544
Gluster Server側で言われたとおりにオプションを変えたら解決した。
gluster volume set test-volume01 performance.cache-size 8238444544
以上です。

Copyright © 2021 たぐたぐ.com. All rights reserved.