2013-09-04

GlusterFSでサーバのIPが変わってしまった場合の対処方法

GlusterFSでreplicaモードでVolumeを動作させていた際
1つのサーバがダウンしてしまい同じIPで起動できない場合の対処方法

まずは、peerに新サーバIPを追加
$ gluster peer probe 10.153.57.98
Probe successful

次に、Volume名をlogsとして、replace-brickしちゃえば置き換えられるかと思ったのですが怒られちゃいました(´・ω・`)
$ gluster volume replace-brick logs <故サーバIP>:/brick <新サーバIP>:/brick start
brick: <故サーバIP>:/brick does not exist in volume: logs

そこで、既存Volumeを削除して同じ名前で再作成するというアプローチをとってみました
$ gluster volume stop logs
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
Stopping volume logs has been unsuccessful

ロックが掛かっていたりするとVolumeを停止できないそうなので、glusterdを再起動してみます
$ service glusterd stop
glusterd を停止中:        [  OK  ]
$ service glusterd start
glusterd を起動中:        [  OK  ]

そして、Volume停止をリトライ
$ gluster volume stop logs
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
Stopping volume logs has been successful

今度は成功!
続いて、既存Volumeの削除
$ gluster volume delete logs
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
Deleting volume logs has been successful

故サーバIPをpeerから削除
$ gluster peer detach 10.153.57.194
Detach successful

あとは、Brickとして利用していたディレクトリからGFS関連の情報を削除
$ rm -rf /brick/.glusterfs

そして、Volume作成
$ gluster volume create logs replica 2 <既存サーバIP>:/brick <新サーバIP>:/brick
/brick or a prefix of it is already part of a volume
怒られちゃいました(´・ω・`)
attributeも変更しないといけないようなので変更
$ setfattr -x trusted.glusterfs.volume-id /brick
$ setfattr -x trusted.gfid /brick

Volume作成リトライ
$ gluster volume create logs replica 2 <既存サーバIP>:/brick <新サーバIP>:/brick
Creation of volume logs has been successful. Please start the volume to access data.

今度はうまくいきました!
あとは、Volumeをstart
$ gluster volume start logs
Starting volume logs has been successful

Volumeの情報を確認
gluster volume info logs
 
Volume Name: logs
Type: Replicate
Volume ID: 28fcf9b5-c4d3-4a41-9161-56fd3a1f2eac
Status: Started
Number of Bricks: 1x2=2
Transport-type: tcp
Bricks:
Brick1: <既存サーバIP>:/brick
Brick2: <新サーバIP>:/brick

0 件のコメント:

コメントを投稿