medamaの日記

技術的な事をメインにしてみる。

GlusterFSを検証してみる。 (5)

さて。

少々飽きてきたので・・・。(汗)

障害テストではなくGeo-replicationについて書いてみる事にする。

 

まず。

Geo-replicationとReplicationの違いから。

マニュアルによると。

 

Replicated Volumes

・Mirrors data across nodes in a cluster.

・Provides high-availability

・Synchronous replication (each and every filemodify operation is sent across all the bricks)

クラスター内のnode間でデータをミラーする。(クラスターを越えてのデータミラーは不可。)

ハイアベイラビリティーを提供する事が前提。

同期型レプリケーション(ファイル更新操作は全てのbricksに対して行われる。)

 

Geo-replication

・Mirrors data across geographically distributed clusters

・Ensures backing up of data for disaster recovery

・Asynchronous replication (checks for the changes in files periodically and syncs them on detecting differences)

物理的ロケーションの離れた別クラスターとデータをミラーする。

ディザスタリカバリー用のバックアップデータを保証する。

非同期型レプリケーション(ファイルの変更は定期的に実施、違いを検知した時に同期を行う。)

 

重要なのは、replicationは同期型、Geo-replicationは非同期であるという事。

非同期型なのでGeo-replicationを受け持つサーバが遠く離れたり、これはまだ確かではないがGeo-replicationを受け持つサーバがダウンしてもI/Oには影響はないだろう。

 

ところで、仕様を確認すると、rsync(&SSH) を使うようだ・・・。

もしそうだとすると、これは痛い。

実際に数千万ファイルを超えるファイルサーバを管理しているがrsyncだともう同期が出来ない。

出来ないというのは誇張だが、完全同期し終わるのに24時間を超えてしまう。

rsyncの場合、ボトルネックとなるのはファイルの総サイズではなく、ファイルの総数なのだから。

rsyncは確かチェックサムもつけられるしSSHであればより確実にパケットを伝送できるはずだからこれ自体異論はないが・・・。

もし、ファイルサイズが数百万とかになりそうな場合、十分注意して設計をした方がよいと思う。

スクリプト、perlPHP等で比較的簡単に数百万単位のファイルは作成できるだろうから。

あと、個人的に商用、非商用の非同期レプリケーションアプリケーションはいろいろ試してみたけれど、正直、ファイルベースレプリケーションは信頼性に乏しい。

やはりマルチバイトなファイル名が飛び交うと途端にレプリケーションが詰まったりすることが多い。

なので、Geo-replicationをメインにGlusterFSを考えているようであれば別のブロック転送型のレプリケーションを選択することをお勧めする。

 

それを踏まえてGeo-replicationをセットアップしてみよう。

 

前提

・geo-replication master volume側の全サーバは時刻が同期していなければならない。

なのでNTPサービスを起動しておく事を推奨する。

 

# chkconfig ntpd on

# /etc/init.d/ntpd start

 

しばらくすると時刻同期は終わるでしょうという事で次に進みます。

(気になる方はntpqを叩いた後、peersで*がつけばOK)

ということなので、master volume側サーバ(3台)にてntpを常時起動させておく。

 

次にgeo-replicationを受け持つ(データを受け取る)slaveサーバを一台構築します。

必要なRPMは今までと一緒。

host名はgluster-sv4(slave サーバ)とします。

 

次はパスワードレスSSHのセットアップです。

マニュアルには

1 geo-replication start コマンドを実行するノードで以下のコマンドを入力しなさい。

# ssh-keygen -f /var/lib/glusterd/geo-replication/secret.pem

とあります。

この作業を全masterサーバ(gluster-sv1~3)に対して実施します。

ところで、キー作成時にパスワード入力を求められますが、マニュアルにもある通り、

Press Enter twice to avoid passphrase.

2回とも何も入力せずそのままEnterを入力します。

パスフレーズを設定しない。)

 

2 全slaveホスト用にマスターサーバにて以下のコマンドを実行しなさい。

# ssh-copy-id -i /var/lib/glusterd/geo-replication/secret.pem.pub user@slavehost

 

今回の場合、masterサーバはgluster-sv1~sv3 slaveサーバはgluster-sv4となりますので、以下のコマンドをgluster-sv1~3で実行します。

 

# ssh-copy-id -i /var/lib/glusterd/geo-replication/secret.pem.pub root@gluster-sv4

 

今回、作業は全てroot IDで実行しています。

権限にはご注意を。

 

(つづく)