ROMADay 14

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

More than 3 years have 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