昨年、Linux女子部の勉強会で学んだGlusterFSを試してみました。
分散ストレージGlusterFS。手軽に始めてみたいけど、2ノード以上用意しないといけないので、敷居が高く感じちゃいますよね。
そこで、AWS。これだったらスラッと作れちゃいます。検証してみたい方は、ぜひお試しあれ。
以下の記事を参考にしています。また、個人のブログで発信している情報となるため、実施については自己責任でお願いします。
構成
今回はVPC内で作ってみました。(EC2でもOK)
- GlusterFS サーバー:Amazon Linux 4台(4ノード)
- GlusterFS クライアント:RHEL 6.4
- ノードのブリックはEBSをアタッチ
手順
- /etc/hostsで各サーバの名前解決ができるようにする
-
192.168.20.11 gluster1
192.168.20.12 gluster2
192.168.20.13 gluster3
192.168.20.14 gluster4 - 使用するセキュリティグループで以下の必要なポートを許可
- 22,111,24007〜(24008 + 使用する最大ブリック数), 38465〜38468
以下4ノード同じ作業
- 同一アベイラビリティーゾーンにGlusterFSサーバー用のAmazon Linux (64bit/t1.micro)を起動(4ノード分)
- 同一アベイラビリティーゾーンにEBSボリュームを4ブリック分作成(/dev/sdf)
- 作成したEBSボリュームをGlusterFSサーバーにアタッチ
- XFSでフォーマット、iノードは 512バイトに指定
- XFSファイルシステムを使用するため、xfsprogsをインストール。そしてXFSでフォーマットする(iノードは 512バイト指定)。
-
# yum install xfsprogs -y
# mkfs.xfs -i size=512 /dev/sdf - EBSボリュームを/dataにマウント
-
# mkdir /data
# mount /dev/sdf /data - オートマウント設定
- 最後の行に追記します。
-
# vi /etc/fstab
/dev/sdf /data xfs defaults 0 0 - /data のマウント確認
-
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 1.1G 6.8G 13% /
tmpfs 298M 0 298M 0% /dev/shm
/dev/xvdf 1.0T 33M 1.0T 1% /data - ノードに /data がマウントされていることを確認します。今回はEBSボリュームを1TB用意して検証していますが、そこは各自調整してください~
- GlusterFSをインストール
-
# yum --enablerepo=epel install glusterfs-server glusterfs-geo-replication -y
# chkconfig glusterd on
# service glusterd start
※補足
EPELが用意されていますが、Amazon Elastic Compute Cloud ユーザーガイド (API Version 2012-08-15)の以下の注意事項の通り、サードパーティー製のパッケージはAWSではサポートされていません。
Extra Packages for Enterprise Linux(EPEL)リポジトリへのアクセスが設定されますが、デフォルトでは有効になりません。EPEL は、Amazon Linux AMI リポジトリのパッケージのほか、サードパーティ製のパッケージを提供します。サードパーティ製パッケージは Amazon Web Services ではサポートされていません。
ということで商用目的での利用は、RedHat Storageの選択になるかと思われます。
以下、gluster1のみで作業
- クラスタ構成のためpeerを設定し、peerの状態を表示する
-
# gluster peer probe gluster2
# gluster peer probe gluster3
# gluster peer probe gluster4
# gluster peer status
Number of Peers: 3
Hostname: gluster3
Uuid: 1542ed84-127e-4725-a616-15231b964668
State: Peer in Cluster (Connected)
Hostname: gluster4
Uuid: ecd7b933-314a-4460-af25-2861b70e143a
State: Peer in Cluster (Connected)
Hostname: gluster2
Uuid: 3842e961-2513-4746-915c-fa1042548bec
State: Peer in Cluster (Connected) - ボリューム「vol01」を作成し、起動する
-
# gluster vol create vol01 \
gluster1:/data/brick01 \
gluster2:/data/brick01 \
gluster3:/data/brick01 \
gluster4:/data/brick01
Creation of volume vol01 has been successful.
Please start the volume to access data.
# gluster vol start vol01
Starting volume vol01 has been successful - ボリューム「vol01」の構成情報を確認
-
# gluster vol info
Volume Name: vol01
Type: Distribute
Volume ID: d3f8f937-e4b5-474f-a5dc-935c09b1d0d3
Status: Started
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: gluster1:/data/brick01
Brick2: gluster2:/data/brick01
Brick3: gluster3:/data/brick01
Brick4: gluster4:/data/brick01 - ボリュームのステータスを確認
-
# gluster vol status
Status of volume: vol01
Gluster process Port Online Pid
--------------------------------------------------------------------------
Brick gluster1:/data/brick01 24009 Y 1374
Brick gluster2:/data/brick01 24009 Y 23591
Brick gluster3:/data/brick01 24009 Y 23423
Brick gluster4:/data/brick01 24009 Y 23469
NFS Server on localhost 38467 Y 1380
NFS Server on gluster3 38467 Y 23429
NFS Server on gluster2 38467 Y 23597
NFS Server on gluster4 38467 Y 23475
ボリューム「vol01」のできあがり。
クライアントの設定
ボリュームにアクセスするためのクライアントを作ります。
- GlusterFSクライアントとして、EC2インスタンスのRHEL6.4を起動(t1.micro/64bit)
- /etc/hostsで各サーバの名前解決ができるようにする
-
192.168.20.1 client1
192.168.20.11 gluster1
192.168.20.12 gluster2
192.168.20.13 gluster3
192.168.20.14 gluster4 - クライアント用のパッケージをインストール
# yum install -y http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/RHEL/epel-6/x86_64/glusterfs-3.3.1-1.el6.x86_64.rpm \ http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/RHEL/epel-6/x86_64/glusterfs-fuse-3.3.1-1.el6.x86_64.rpm
- GlusterFSのボリュームをマウント
-
# mkdir /mnt/vol01
# mount -t glusterfs gluster1:/vol01 /mnt/vol01
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvde1 6.9G 2.1G 4.8G 31% /
none 296M 0 296M 0% /dev/shm
gluster1:/vol01 4.0T 130M 4.0T 1% /mnt/vol01 - glusterfsのボリュームが4ノード分(1TBx4ブリック)の合計で4TBになっていることが確認できます。
GlusterFSボリュームのオートマウント設定ですが、以下のように指定するとよかですばい。
# chkconfig --add netfs
# chkconfig netfs on
netfsをchkconfigの対象に入れ、/etc/fstab に以下を追記します。
# vi /etc/fstab
glusterfs1:/vol01 /mnt/vol01 glusterfs defaults,_netdev 0 0
GlusterFS 導入編おしまい!後半へ続く・・・(いつか書きます)