分散ファイルシステム 〜 GlusterFS編|アドカレ2013 : CFn #23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

『アドベントカレンダー2013:AWS CloudFormationビッグバンテンプレート』、本日は23日目です。

昨日は武川さんのFTP+S3編でした。FTPサーバの構築って面倒なのでうれしいですね。

GlusterFS

GlusterFSについては『EC2でGlusterFSを使ってみた』というエントリで以前紹介致しました。

以前のエントリではファイルをノード間で分散配置するボリュームタイプの紹介でしたが、今回のテンプレートでは分散配置と複製配置を組み合わせたボリュームを作成します。

NRIネットコム様のサイトで紹介されている構成です。

公開テンプレート

パラメータ

パラメータ名 入力 デフォルト 制限
DistributionNum 分散数。 1 1から9
ReplicaNum 複製数。1の場合は複製無し。 2 1から9
VolumeSize Brickとして利用するEBSボリュームのサイズ。単位はGB。 5 5から1024
VpcID 利用するVPCのID。 vpc-xxxxxx -
Subnet01 パブリックサブネットのID。 subnet-xxxxxx -
Subnet02 パブリックサブネットのID。 subnet-xxxxxx -
AvailabilityZone01 サブネットが所属するアベイラビリティゾーン。 ap-northeast-1a -
AvailabilityZone02 サブネットが所属するアベイラビリティゾーン。 ap-northeast-1c -
InstanceType ノードのインスタンスタイプ。 t1.micro -
KeyName SSH KeyPairの名前 - -
SSHFrom SSHでアクセスする際のアクセス元IP。 0.0.0.0/0 -
InstanceType Gitlabインスタンスのインスタンスタイプ m1.small -

サブネットとアベイラビリティゾーンは2つ指定してください。

(DistributionNum × ReplicaNum)台のノードからなるGlusterFSのクラスタが作られます。

ノードとは別に、クラスタ化コマンド実行用のインスタンスが1台(t1.micro)起動します。
これはクラスタを利用するテストクライアントとしても利用します。
クラスタ完成後は必要ありませんので、terminateしても大丈夫です。

作られるボリュームの大きさは(DistributionNum × VolumeSize)GBになります。それぞれ最大値は9個、1024GBなので最大9TBのボリュームが作られます。

GlusterFSを作成

アウトプット

キー名 説明
HowToMountVolume 完成したGlusterFSボリュームのマウント方法。
ボリュームを利用したいインスタンスで、GlusterFSのクライアントをインストールし、マウントする。
mount -t glusterfs 172.16.102.86:/vol01 /your/mountpoint
SSHToTestClient テストクライアントへの接続方法。 ssh -i /path/to/your.pem -l ec2-user xxx.xxx.xxx.xxx

デモ

分散数が3、複製数が2、ELBのサイズが10GBで実際にクラスタを作ってみます。

スクリーンショット 2013-12-23 9.52.58

スタックを作り始めてから10分くらいで完成します。

EC2の管理画面でノード用インスタンスが6台、テストクライアントが1台で来ているのが確認できます。

スクリーンショット 2013-12-23 14.33.44

CloudFormationのアウトプットでテストクライアントへのログイン情報を確認できます。

スクリーンショット 2013-12-23 11.53.47

テストクライアントにログインし、GlusterFSボリュームの情報を見てみます。

[ec2-user@ip-172-16-102-13 ~]$ sudo gluster volume info

Volume Name: vol01
Type: Distributed-Replicate
Volume ID: 5413973b-1822-4f84-86c1-9e99b566e73c
Status: Started
Number of Bricks: 3 x 2 = 6
Transport-type: tcp
Bricks:
Brick1: 172.16.102.228:/bricks/vol01
Brick2: 172.16.102.227:/bricks/vol01
Brick3: 172.16.102.226:/bricks/vol01
Brick4: 172.16.101.161:/bricks/vol01
Brick5: 172.16.101.159:/bricks/vol01
Brick6: 172.16.101.160:/bricks/vol01

[ec2-user@ip-172-16-102-13 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G 1023M  6.8G  13% /
tmpfs                 298M     0  298M   0% /dev/shm
172.16.102.228:/vol01
30G  452M   28G   2% /mnt/glusterfs/vol01

3分散 × 2複製のボリュームが出来ていることが確認できました。ボリュームのサイズも10GB × 3分散で約30GBになっています。

このテストクライアントは利用しないので、消しても問題ありません。他のインスタンスからGlusterFSボリュームをマウントしたい場合は、クラスタへのアクセスが許可されたセキュリティグループ、GlusterClientSecurityGroupをインスタンスにつけて、アウトプットで出力されているマウントコマンドを実行してください。

スクリーンショット 2013-12-23 14.29.23

まとめ

テンプレートはGithubに公開してあります。改善点等気づかれたらご指摘いただけるとうれしいです。

明日はとうとう最終日、本当のテンプレートをお見せします。