v1.3.0RC1から追加されたCluster replication機能の紹介です
Cluster Replication
- NOSQL界では色んな意味で使われているCluster replicationですが、複数サーバでclusterを構成して冗長化するいわゆるclustering機能はROMAは初期から持っています
- 今回の機能はHot Standby機能となり、メインのクラスターのレプリカを用意しておくことが出来ます
- エラー時はAPIのアクセス先を切り替えるだけで復旧が可能になります
レプリカクラスター
- 構成はメインのクラスターと同様にする必要はありません
- 冗長度を低くしたり、インスタンス数の少ない低コストクラスターをレプリケーションにすることが可能です
- replicaのreplicaというように更に予備を用意しておくことも可能です
使用方法
1. メインクラスターとレプリカ用のROMAクラスターを立ち上げる
- 特に追加のconfigの設定等は必要ありません
2. レプリケーションの開始
コマンド
> switch_replication <true|false> [nid] [all]
- 1番目のオプションでreplicationの開始(true)と停止(false)を指定します
- 2番目のオプション([nid])で、レプリケーション用のクラスター情報を指定します
- フォーマットは${address}_${port No.}です
例)localhost_10001
- どれか1instanceだけ指定すればROMA側で自動的にreplica clusterのrouting情報を取得します
- フォーマットは${address}_${port No.}です
- 3番目のオプションのallは既存のデータをコピーするかを指定します
- allオプションを指定すると、replicationコマンドを実行する前の過去のデータもバックグラウンドでコピーします
- 指定しなかった場合は、コマンド実行後に変更のあったデータのみreplicationします
例
$ telnet ${address} ${port} # メインクラスターへtelnetでアクセスします
> switch_replication true 192.168.33.99_20001
- replication clusterのインスタンスが
192.168.33.99_20001
だった場合
3. ステータス確認
statコマンドでreplicationのステータスを確認することが出来ます
> stat replica
write-behind.run_replication true # replication機能が実行中かどうかを示します
write-behind.run_existing_data_replication false # 既存のデータのコピー中であることを占め島s(allオプションをつけた場合のみ)
write-behind.replica_mklhash b645bba848c7013ec7357963a1b37d4369c11b37
write-behind.replica_nodelist ["replicaA_11211", "replicaA_11212", "replicaB_11211", "repicaB_11212", "replicaC_112121", "replicaC_11212"] # replicatクラスターのインスタンス情報
END
- replicaクラスターが3server、6instanceで構成していた場合
- replicaA_11211
- replicaA_11212
- replicaB_11211
- replicaB_11212
- replicaC_11211
- replicaC_11212
参照URL
ROMA Blog: http://roma-kvs.org/blogs/blog-entry-15.html