今回は、インスタンスが落ちた場合の復旧方法を見てみます。
Gatewayインスタンスが落ちた場合
gatewayインスタンスを落とします。
ブリックである/mnt/sgwをみてみると
# ls -l /mnt/sgw ls: reading directory /mnt/sgw: 入力/出力エラーです 合計 16 -rw-r--r-- 2 root root 27 3月 1 13:24 2013 1.txt -rw-r--r-- 2 root root 27 3月 1 13:24 2013 4.txt
IOエラーがでます。
Glusterボリュームのマウントポイントをみてみると
# ls -lrt /mnt/gv 合計 24 -rw-r--r-- 1 root root 27 3月 1 13:51 2013 1.txt -rw-r--r-- 1 root root 27 3月 1 13:51 2013 2.txt -rw-r--r-- 1 root root 27 3月 1 13:51 2013 3.txt -rw-r--r-- 1 root root 27 3月 1 13:51 2013 4.txt -rw-r--r-- 1 root root 27 3月 1 13:51 2013 5.txt -rw-r--r-- 1 root root 27 3月 1 13:52 2013 6.txt -rw-r--r-- 1 root root 27 3月 1 13:52 2013 7.txt -rw-r--r-- 1 root root 27 3月 1 13:52 2013 8.txt -rw-r--r-- 1 root root 27 3月 1 13:52 2013 9.txt -rw-r--r-- 1 root root 27 3月 1 13:52 2013 10.txt -rw-r--r-- 1 root root 27 3月 1 13:52 2013 11.txt -rw-r--r-- 1 root root 27 3月 1 13:53 2013 12.txt -rw-r--r-- 1 root root 27 3月 1 13:53 2013 13.txt -rw-r--r-- 1 root root 27 3月 1 13:53 2013 14.txt -rw-r--r-- 1 root root 27 3月 1 13:53 2013 15.txt
# cat /mnt/gv/* ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ
正しくレプリケーションされています。
gatewayインスタンスを復帰させます。
インスタンスが立ち上がったら、一度10.0.1.8のglusterfsを解除して、iSCSIボリュームを再マウントします。
# ps -ax | grep gluster Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ 24350 ? Ssl 0:00 /usr/sbin/glusterd -p /var/run/glusterd.pid 24371 ? Ssl 0:00 /usr/sbin/glusterfsd -s localhost --volfile-id gv0.10.0.1.8.mnt-sgw -p /var/lib/glusterd/vols/gv0/run/10.0.1.8-mnt-sgw.pid -S /tmp/6f580d4f3eab1dcb22c5aef9d7fb2275.socket --brick-name /mnt/sgw -l /var/log/glusterfs/bricks/mnt-sgw.log --xlator-option *-posix.glusterd-uuid=4f2e8dff-1b51-423e-8ac0-b0e892bd2e0d --brick-port 24013 --xlator-option gv0-server.listen-port=24013 24377 ? Ssl 0:00 /usr/sbin/glusterfs -s localhost --volfile-id gluster/nfs -p /var/lib/glusterd/nfs/run/nfs.pid -l /var/log/glusterfs/nfs.log -S /tmp/f34a5ad241dbfecb7dcb5f2c14aab1f4.socket 24383 ? Ssl 0:00 /usr/sbin/glusterfs -s localhost --volfile-id gluster/glustershd -p /var/lib/glusterd/glustershd/run/glustershd.pid -l /var/log/glusterfs/glustershd.log -S /tmp/c019293c2e261dcab94469694dc5674e.socket --xlator-option *replicate*.node-uuid=4f2e8dff-1b51-423e-8ac0-b0e892bd2e0d 24393 pts/1 S+ 0:00 grep gluster # kill -9 24350 24371 24377 24383 # umount /mnt/sgw # umount /mnt/gv # iscsiadm --mode discovery --type sendtargets --portal 10.0.1.5:3260 # iscsiadm --mode node --targetname iqn.1997-05.com.amazon:memorycraft-sgw1 --portal 10.0.1.5:3260,1 --logout # iscsiadm --mode node --targetname iqn.1997-05.com.amazon:memorycraft-sgw1 --portal 10.0.1.5:3260,1 --login # mount /dev/sda /mnt/sgw # /etc/init.d/glusterd start # mount -t glusterfs 10.0.1.8:/gv0 /mnt/gv
ここでブリック(GlusterFSを構成するディレクトリ)である/mnt/sgwをみてみると、
# ls -l /mnt/sgw 合計 112 -rw-r--r-- 2 root root 0 3月 1 13:51 2013 1.txt -rw-r--r-- 2 root root 0 3月 1 13:52 2013 10.txt -rw-r--r-- 2 root root 0 3月 1 13:52 2013 11.txt -rw-r--r-- 2 root root 27 3月 1 14:07 2013 12.txt -rw-r--r-- 2 root root 0 3月 1 13:53 2013 13.txt -rw-r--r-- 2 root root 27 3月 1 14:07 2013 14.txt ....略.... -rw-r--r-- 2 root root 0 3月 1 14:00 2013 58.txt -rw-r--r-- 2 root root 0 3月 1 13:52 2013 6.txt -rw-r--r-- 2 root root 27 3月 1 14:07 2013 7.txt -rw-r--r-- 2 root root 0 3月 1 13:52 2013 8.txt -rw-r--r-- 2 root root 0 3月 1 13:52 2013 9.txt
ファイルの内容は同期されましたが、ファイルサイズが0のままです。
これをマウントポイントから読み出しを行うと即座に完全同期できます。
# find /mnt/gv -type f -exec dd if='{}' of=/dev/null bs=1M \; > /dev/null 2>&1
# ls -l /mnt/sgw -rw-r--r-- 2 root root 27 3月 1 14:12 2013 1.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 10.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 11.txt -rw-r--r-- 2 root root 27 3月 1 14:07 2013 12.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 13.txt -rw-r--r-- 2 root root 27 3月 1 14:07 2013 14.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 15.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 16.txt ...略..... -rw-r--r-- 2 root root 27 3月 1 14:12 2013 56.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 57.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 58.txt -rw-r--r-- 2 root root 27 3月 1 14:14 2013 59.txt -rw-r--r-- 2 root root 27 3月 1 14:12 2013 6.txt -rw-r--r-- 2 root root 27 3月 1 14:14 2013 60.txt
これで同期が復旧しました。
その後も投入されつづけたファイルが同期されているのがわかります。
イニシエータインスタンスが落ちた場合
10.0.1.8をstopしてみます。
10.0.1.9では投入が反映され続けられています。
# ls -lrt /mnt/gv .....略...... -rw-r--r-- 1 root root 27 3月 1 17:37 2013 562.txt -rw-r--r-- 1 root root 27 3月 1 17:37 2013 563.txt -rw-r--r-- 1 root root 27 3月 1 17:37 2013 564.txt -rw-r--r-- 1 root root 27 3月 1 17:37 2013 565.txt -rw-r--r-- 1 root root 27 3月 1 17:38 2013 566.txt -rw-r--r-- 1 root root 27 3月 1 17:38 2013 567.txt -rw-r--r-- 1 root root 27 3月 1 17:39 2013 568.txt -rw-r--r-- 1 root root 27 3月 1 17:39 2013 569.txt -rw-r--r-- 1 root root 27 3月 1 17:39 2013 570.txt -rw-r--r-- 1 root root 27 3月 1 17:39 2013 571.txt -rw-r--r-- 1 root root 27 3月 1 17:39 2013 572.txt -rw-r--r-- 1 root root 27 3月 1 17:39 2013 573.txt -rw-r--r-- 1 root root 27 3月 1 17:40 2013 574.txt -rw-r--r-- 1 root root 27 3月 1 17:40 2013 575.txt -rw-r--r-- 1 root root 27 3月 1 17:40 2013 576.txt -rw-r--r-- 1 root root 27 3月 1 17:40 2013 577.txt -rw-r--r-- 1 root root 27 3月 1 17:40 2013 578.txt -rw-r--r-- 1 root root 27 3月 1 17:40 2013 579.txt -rw-r--r-- 1 root root 27 3月 1 17:41 2013 580.txt -rw-r--r-- 1 root root 27 3月 1 17:41 2013 581.txt
10.0.1.8をstartします。
SSHで入り、ブリックと、Glusterボリュームをマウントしなおします。
# df -h Filesystem Size Used Avail Use% マウント位置 /dev/xvde1 6.0G 2.6G 3.1G 46% / none 3.7G 0 3.7G 0% /dev/shm # mount /dev/sda /mnt/sgw # mount -t glusterfs 10.0.1.8:/gv0 /mnt/gv # ls -lrt /mnt/gv .....略...... -rw-r--r-- 1 root root 27 3月 1 20:34 2013 1602.txt -rw-r--r-- 1 root root 27 3月 1 20:34 2013 1603.txt -rw-r--r-- 1 root root 27 3月 1 20:34 2013 1604.txt -rw-r--r-- 1 root root 27 3月 1 20:34 2013 1605.txt -rw-r--r-- 1 root root 27 3月 1 20:35 2013 1606.txt -rw-r--r-- 1 root root 27 3月 1 20:35 2013 1607.txt -rw-r--r-- 1 root root 27 3月 1 20:35 2013 1608.txt -rw-r--r-- 1 root root 27 3月 1 20:35 2013 1609.txt -rw-r--r-- 1 root root 27 3月 1 20:35 2013 1610.txt -rw-r--r-- 1 root root 27 3月 1 20:35 2013 1611.txt -rw-r--r-- 1 root root 27 3月 1 20:36 2013 1612.txt # ls -lrt /mnt/sgw .....略..... rw-r--r-- 2 root root 27 3月 1 20:34 2013 1602.txt -rw-r--r-- 2 root root 27 3月 1 20:34 2013 1603.txt -rw-r--r-- 2 root root 27 3月 1 20:34 2013 1604.txt -rw-r--r-- 2 root root 27 3月 1 20:34 2013 1605.txt -rw-r--r-- 2 root root 27 3月 1 20:35 2013 1606.txt -rw-r--r-- 2 root root 27 3月 1 20:35 2013 1607.txt -rw-r--r-- 2 root root 27 3月 1 20:35 2013 1608.txt -rw-r--r-- 2 root root 27 3月 1 20:35 2013 1609.txt -rw-r--r-- 2 root root 27 3月 1 20:35 2013 1610.txt -rw-r--r-- 2 root root 27 3月 1 20:35 2013 1611.txt -rw-r--r-- 2 root root 27 3月 1 20:36 2013 1612.txt
マウントポイントに復帰され、投入が反映されています。
起動時に自動でマウントするにはfstabに以下のように設定します。
# cat /etc/fstab /dev/sda /mnt/sgw ext4 _netdev 0 0 10.0.1.8:/gv0 /mnt/gv glusterfs defaults,_netdev 0 0
以上です。