[GFARM LOGO] 文書集 > ユーザーズマニュアル > メタデータ冗長化 - チュートリアル

メタデータ冗長化 - チュートリアル

English | 日本語

この文書では、メタデータサーバを1:1構成で冗長化する方法を説明します。

1. インストール

ここではマスターgfmdを起動するホストをhost-a、スレーブgfmdを起動するホストをhost-bとします。 host-a / host-bのそれぞれにおいて、Gfarmのインストールを行います。 インストールはINSTALLドキュメントを参照してください。

2. セットアップ

2.1 マスターメタデータサーバの設定

メタデータサーバ間の接続で利用される権限である_gfarmmdユーザを作成します。

# useradd -c "Gfarm gfmd" -m _gfarmmd
メタデータサーバのセットアップをrootユーザで行います。 メタデータ冗長化を有効にするため,SETUP.ja で解説されている config-gfarm実行の手順において、オプションに-rを追加してください。

# config-gfarm -r

host-bをスレーブとして登録します。
gfmdhost コマンドは、 Gfarm のシステム管理者 (gfarmadm グループ権限を持つユーザー) が実行します。 config-gfarm の -A オプションで指定したユーザが、 デフォルトの Gfarm システム管理者です。

$ gfmdhost -c host-b
$ gfmdhost -l
+ master -     m (default)    host-a 601
- slave  sync  c (default)    host-b 601
gfarm2.confにmetadb_server_listを追加して、全てのメタデータサーバのホスト名とポート番号の一覧を記述します。

metadb_server_list host-a:601 host-b:601
rootユーザでメタデータをダンプします。
config-gfarm の際に、--prefix オプションや -l オプションを指定していた場合は、 gfdump.postgresql に対しても同じオプションを与えてください。

# gfdump.postgresql -d -f gfarm-pgsql.dmp

メタデータサーバ間の接続で利用される_gfarmmdユーザの共有鍵を作成します。

# su _gfarmmd
$ gfkey -f -p 31536000

2.2 スレーブメタデータサーバの設定

メタデータサーバ間の接続で利用される_gfarmmdユーザを作成し、 マスターメタデータサーバから共有鍵をコピーします。

# useradd -c "Gfarm gfmd" -m _gfarmmd
マスターメタデータサーバから共有鍵(~_gfarmmd/.gfarm_shared_key)をコピー
次にスレーブメタデータサーバのセットアップをrootユーザで行います。 メタデータ冗長化を有効にするため config-gfarmに-rオプションをつけます。

# config-gfarm -r
rootユーザでメタデータをリストアします。
config-gfarm の際に、--prefix オプションや -l オプションを指定していた場合は、 gfdump.postgresql に対しても同じオプションを与えてください。

# gfdump.postgresql -r -f gfarm-pgsql.dmp

マスターメタデータサーバでmetadb_server_listを追加した gfarm2.confを、スレーブメタデータサーバにコピーします。 これは、スレーブメタデータサーバ上で gfmdhost コマンドのような Gfarm クライアントを利用することがあるためです。

2.3 gfsdおよびクライアント

マスターメタデータサーバでmetadb_server_listを追加した gfarm2.confを、ファイルシステムノードやクライアントノードにコピーします。

以降の設定はSETUPドキュメントを参照してください。

既に設定されている場合は、gfsdを再起動します。 再起動のためにはrootユーザで、次のコマンドを実行します。

各gfsdホスト:
# /etc/init.d/gfsd restart

ここまでの手順でマスタースレーブで冗長化されたメタデータサーバの構成が完了しました。

2.4 動作確認

gfmdhost -lでスレーブメタデータサーバが接続されていることを確認してください。

$ gfmdhost -l
+ master -     m (default)    host-a 601
+ slave  sync  c (default)    host-b 601

rootユーザでgfjournalを実行し、 スレーブメタデータサーバに更新が伝達されているか確認してください。

# gfjournal /var/gfarm-metadata/journal/0000000000.gmj
records  seqnum(min/max)            record length(min/max/ave)
     11            63/          73          24/    118/     43

更新操作を行い、マスターおよびスレーブメタデータサーバで、 seqnumのmaxが等しければ更新が伝達されています。

3. スレーブgfmdをマスターgfmdに昇格する

これからは、マスターgfmdに障害が発生し、 スレーブgfmdをマスターgfmdに昇格する手順を説明します。

先にhost-aのgfmdを停止していることを確認します。 起動している場合は、host-aにおいてrootユーザで、次のコマンドで停止させます。

host-a:
# /etc/init.d/gfmd stop

host-bにおいてrootユーザで、次のコマンドを実行します。

host-b:
# kill -USR1 <gfmdのプロセスID>
なお、別途配布している gfarm_zabbix パッケージには、 マスターgfmdの障害を検知し、自動的にスレーブを昇格させる機能が 含まれています。

4. 元のマスターgfmdを起動する

元のマスターgfmdが障害から回復し、 スレーブgfmdとして復活させる手順を説明します。

4.1 スレーブとしての起動

host-aにおいてrootユーザで、次のコマンドを実行します。

host-a:
# /etc/init.d/gfmd slavestart

4.2 動作確認

gfmdhost -lでスレーブメタデータサーバとして接続されていることを確認してください。

$ gfmdhost -l
+ slave  sync  c (default)    host-a 601
+ master -     m (default)    host-b 601

ここで「+」と表示されている場合は、 スレーブメタデータサーバとして正しく動作しており、完了です。

ここで「x」と表示されている場合は、 「4.3 手動での同期」へ進みます。

4.3 手動での同期

x」と表示されていた場合は、host-a が停止中に 発生したメタデータの更新量が多過ぎたため、自動更新ができなかったことを 意味します。
この場合、以下の手順で、host-bのデータベースをhost-aにコピーする必要が あります。

host-b の rootユーザでメタデータをダンプします。

# gfdump.postgresql -d -f gfarm-pgsql.dmp


host-a の rootユーザでメタデータをリストアします。

# gfdump.postgresql -r -f gfarm-pgsql.dmp


次に「4.2 動作確認」からやり直します。


Gfarm File System <gfarmfs at gmail.com>