冗長性の回復
リカバリは、問題が発生した時や計画的なメンテナンスでプロセスを停止した時に、ROMAの輪が欠損したデータを他のプロセスに再配布することです。
事前準備
- 変数
- $HOST1, $HOST2: ROMAプロセスを削除する予定のサーバを指定します。
- $PORT1, $PORT2 : ROMAプロセスを削除する予定のポート番号を指定します。
作業手順
リカバリする前に確認する項目
- stats コマンドtelnetでアクティブなROMAプロセスに接続します。その後次のコマンドを入力します:
stats routing.nodes
routing.nodes.length 2
routing.nodes ["localhost_11211", "localhost_11213"]
- 値が0であることを確認します。
stats routing.short_vnodes
routing.short_vnodes 118
- 注意: 値が0の場合、recover コマンドを実行する必要がありません。
ROMAプロセスの冗長性のリカバリ
- recover コマンド
- telnetでROMAプロセスに接続します。その後次のコマンドを入力します:
recover
{"localhost_11213"=>"STARTED", "localhost_11214"=>"STARTED"}
リカバリする時に確認する項目
- リカバリの起動を確認します。
- ログファイル
全てのROMA プロセスを確認します。
roma$ ls ${HOST1}_${PORT1}.log*
- プロセスが次のメッセージを出力していることを確認します。
DEBUG -- : asyncev_start_recover_process [nil]
例:
D, [2012-05-17T21:31:52.935978 #30105] DEBUG -- : asyncev_start_recover_process [nil]
- リカ張りの終了を確認します。
- ログファイル
全てのROMA プロセスを確認します。
roma$ ls ${HOST1}_${PORT1}.log*
- プロセスが次のメッセージを出力していることを確認します。
INFO -- : acquired_recover_process has done.
例:
I, [2012-05-17T22:17:36.637855 #30105] INFO -- : acquired_recover_process has done.
- stats コマンドtelnetでアクティブなROMAプロセスに接続します。その後次のコマンドを入力します:
- ステータスが'false'であることを確認します。
stats stats.run_recover
stats.run_recover false
- 値が0であることを確認します。
stats routing.short_vnodes
routing.short_vnodes 0