分散ファイルシステム 〜 GlusterFS編|アドカレ2013 : CFn #23
『アドベントカレンダー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のボリュームが作られます。
アウトプット
キー名 | 説明 | 例 |
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で実際にクラスタを作ってみます。
スタックを作り始めてから10分くらいで完成します。
EC2の管理画面でノード用インスタンスが6台、テストクライアントが1台で来ているのが確認できます。
CloudFormationのアウトプットでテストクライアントへのログイン情報を確認できます。
テストクライアントにログインし、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をインスタンスにつけて、アウトプットで出力されているマウントコマンドを実行してください。
まとめ
テンプレートはGithubに公開してあります。改善点等気づかれたらご指摘いただけるとうれしいです。
明日はとうとう最終日、本当のテンプレートをお見せします。