URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

GlusterFS (Red Hat Storage) で非同期レプリケーションの設定

 今まではネットの情報を参考に緩い感じでやっていたのですが、基本に立ち返って推奨の方法を。
 なかなか人から教わる機会がなかったもので、試行錯誤だけだと結構抜けてしまうところが多いです。

 環境は古めですが、Red Hat Storege 2.0(RHEL 6.2 + GlusterFS 3.3)を想定。
 設定のポイントは以下のような感じでしょうか。

  • "root"ユーザーは使わず、受信側では一般ユーザーを作成
  • 必要なコマンド(gsyncd)以外の実行権は与えない

①送信側ボリュームと受信側ボリュームは作成済みと想定(それぞれ"source_vol", "dest_vol")

 受信側で一般ユーザー/グループを作成します。
 ここでは"repuser", "repgroup"とします。

【受信側で実行】
# groupadd repgroup
# useradd -G repgroup repuser
# passwd repuser

②送信側でSSH秘密鍵を作成します。
 この時、秘密鍵の既定のパスは決まっているのでそこに作成。

【送信側で実行】
# ssh-keygen -f /var/lib/glusterd/geo-replication/secret.pem

③秘密鍵と一緒にできた公開鍵(secret.pem.pub)を実行コマンドを制限するためのオプションを追加し、受信側サーバで使うユーザーのauthorized_keysに登録します。

【送信側で実行】
# sed -i 's/^/command="\/usr\/libexec\/glusterfs\/gsyncd" /' /var/lib/glusterd/geo-replication/secret.pem.pub
# ssh-copy-id -i /var/lib/glusterd/geo-replication/secret.pem.pub

④受信側で一般ユーザーがGlusterFSのボリュームを扱うための設定を実施
 "/etc/glusterfs/glusterd.vol"ファイル中に以下のオプションを追記
 (ユーザー名"repuser", ボリューム名"dest_vol"に注意)

option mountbroker-root /var/mountbroker-root option mountbroker-geo-replication.repuser dest_vol option geo-replication-log-group repgroup

⑤前述の設定で記載した"mountbroker-root"のマウントポイントを作成してサービスを再起動。

【受信側で実行】
# mkdir -p /var/mountbroker-root
# service glusterd restart

⑥ここまでで準備は完了。
 あとは送信側からgeo-replicationを実行します。

【送信側で実行】
# gluster volume geo-replication source_vol repuser@target_host::dest_vol start

 受信側のボリュームにファイルが送られており、"gluster volume georeplication ~ status"コマンドやログファイルにエラーが出ていなければ成功。