Ruby
KVS
nosql
Database
roma
ROMADay 14

エラー時の備えその1(Clustre Replication / Hot Standby)

More than 1 year has passed since last update.

v1.3.0RC1から追加されたCluster replication機能の紹介です
7d4a631b-2e17-abd6-66c1-ff60b4e3e22b.png

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情報を取得します
  • 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