はじめに
Amazon EC2では、Red Hat Enterprise Linux 6(RHEL6)のAMIを時間課金で利用することができます。(利用者は、Red Hatからサブスクリプションを購入する必要はありません。)
AWS環境専用のyumリポジトリが用意されているので、yumコマンドで最新のアップデートパッケージも適用可能です。現在、提供されているAMIは、RHEL6.1ですが、yum updateするとRHEL6.2になります。
RHEL6では、EPELリポジトリからGlusterFSが簡単に導入できるので、これを使って、RHELonEC2でGlusterFSを利用してみます。
事前準備
TCP 22, 111, 24007-24020をオープンしたセキュリティグループ「GlusterFS」を作成します。
RHEL6.1のインスタンスを起動してログインした後に、次を実行します。
# yum -y localinstall http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm # yum -y install glusterfs-server glusterfs-fuse # chkconfig glusterd on # chkconfig iptables off # cat <<EOF >>/etc/rc.local mkfs.ext4 /dev/xvdj mkfs.ext4 /dev/xvdk mkdir -p /brick01 mkdir -p /brick02 mount /dev/xvdj /brick01 mount /dev/xvdk /brick02 EOF
なお、上記のmkfs.ext4コマンドに下記のオプションを指定しておくとと、ファイルシステム作成時間が短縮されます。
mkfs.ext4 -E lazy_itable_init=1 /dev/xvdj mkfs.ext4 -E lazy_itable_init=1 /dev/xvdk
最後にこのインスタンスからAMIを作成しておきます。
クラスタNode起動
先に作成したAMIから、
・m1.large、セキュリティグループ「GlusterFS」、タグ「Name:GlusterNode」
のインスタンスを好きな数だけ立ち上げます。起動するとEphemeralディスクのフォーマットが走るので、終わるまで気長に待ちます。(以下の例では、10インスタンス起動しています。)
※インスタンスにログインして、/brick01, /brick02がマウントされていればフォーマットは完了しています。あるいは、AWS管理コンソールのモニタでDiks Writesを見ていると終わったのが分かります。
500GBx2をフォーマットしているのでそれなりに時間がかかっていますが、先の「-E lazy_itable_init=1」を使うと短時間で完了するようになります。(これは、inodeテーブルをファイルシステム作成後にバックグラウンドで作成するオプションです。)
Amazon EC2 API Toolsを入れた端末から次を実行すると、peer probeとvolume createのコマンドが表示されます。
$ ec2-describe-instances -F tag:Name=GlusterNode -F instance-state-name="running" | grep "INSTANCE" | awk '{print "gluster peer probe " $15}' $ echo -n "gluster volume create vol01 "; ec2-describe-instances -F tag:Name=GlusterNode -F instance-state-name="running" | grep "INSTANCE" | awk '{print $15 ":/brick01 " $15 ":/brick02"}' | paste -s -d " "
表示されるコマンドはこんな感じです。
gluster peer probe 10.150.119.187 gluster peer probe 10.161.7.0 gluster peer probe 10.150.145.57 gluster peer probe 10.152.18.49 gluster peer probe 10.152.105.189 gluster peer probe 10.152.50.158 gluster peer probe 10.160.5.103 gluster peer probe 10.152.57.127 gluster peer probe 10.150.90.45 gluster peer probe 10.152.23.242 gluster volume create vol01 10.150.119.187:/brick01 10.150.119.187:/brick02 10.161.7.0:/brick01 10.161.7.0:/brick02 10.150.145.57:/brick01 10.150.145.57:/brick02 10.152.18.49:/brick01 10.152.18.49:/brick02 10.152.105.189:/brick01 10.152.105.189:/brick02 10.152.50.158:/brick01 10.152.50.158:/brick02 10.160.5.103:/brick01 10.160.5.103:/brick02 10.152.57.127:/brick01 10.152.57.127:/brick02 10.150.90.45:/brick01 10.150.90.45:/brick02 10.152.23.242:/brick01 10.152.23.242:/brick02
どれか1つのインスタンスにログインして、これをコピペで実行します。
これでボリュームができたので、開始してマウントしてみます。
[root@ip-10-150-119-187 ~]# gluster volume start vol01 Starting volume vol01 has been successful [root@ip-10-150-119-187 ~]# mkdir /mnt/vol01 [root@ip-10-150-119-187 ~]# mount -t glusterfs localhost:/vol01 /mnt/vol01 [root@ip-10-150-119-187 ~]# df -h Filesystem Size Used Avail Use% マウント位置 /dev/xvde1 5.7G 2.0G 3.7G 35% / none 3.7G 0 3.7G 0% /dev/shm /dev/xvdj 414G 199M 393G 1% /brick01 /dev/xvdk 414G 199M 393G 1% /brick02 localhost:/vol01 8.1T 3.9G 7.7T 1% /mnt/vol01
8TBのファイルシステムがあっという間に用意できました。(^^/