11.1.1 クラスタを停止させないで,EADSサーバをクラスタに追加する手順(スケールアウト処理・リバランス処理)
クラスタを停止させないで,次の処理を実行するときの手順について説明します。
-
EADSサーバをクラスタに追加する(スケールアウト処理)
-
EADSサーバの位置を変更することで,各レンジに格納できるkeyの数を均等に配分し直す(リバランス処理)
スケールアウト処理を実行すると,各レンジに格納できるkeyの数が均等に配分されなくなるおそれがあります。スケールアウト処理後は,リバランス処理を実行して,各レンジに格納できるkeyの数を均等に配分し直すことを推奨します。
- 〈この項の構成〉
(1) 前提条件
スケールアウト処理およびリバランス処理を実行するための前提条件を次に示します。
スケールアウト処理を実行するための前提条件
スケールアウト処理を実行するには,次に示す条件を満たしている必要があります。
-
クラスタ内のキャッシュがすべてメモリキャッシュである
-
データの多重度が2以上である
-
クラスタ内に縮退状態のEADSサーバがない
これらの条件を満たさない場合には,クラスタを停止してから,EADSサーバを追加してください。なお,縮退したEADSサーバがある場合は,縮退したEADSサーバを復旧してから,スケールアウト処理を実行してください。
クラスタを停止してからEADSサーバを追加する手順については,「11.1.2 クラスタを停止してから,EADSサーバをクラスタに追加する手順(メモリ上のキャッシュだけを使用する場合)」および「11.1.3 クラスタを停止してから,EADSサーバをクラスタに追加する手順(ディスク上のキャッシュを使用する場合)」を参照してください。
- ポイント
-
各レンジにkeyが均等に分散している場合,各レンジに,1台以上の同じ台数のEADSサーバを追加すると,リバランス処理を実行しなくても,各レンジに格納できるkeyの数を均等にできます。
リバランス処理を実行するための前提条件
リバランス処理を実行するためには,次に示す条件を満たしている必要があります。
-
クラスタ内のキャッシュがすべてメモリキャッシュである
-
データの多重度が2以上である
-
クラスタ内に縮退状態のEADSサーバがない
-
クラスタを構成するEADSサーバ数が「データの多重度×2−1」より多い
-
クラスタ内のすべてのEADSサーバで,データを格納するメモリ容量に余裕がある
これらの条件を満たさない場合には,クラスタを停止してから,各レンジに格納できるkeyの数を均等にしてください。なお,縮退したEADSサーバがある場合は,縮退したEADSサーバを復旧してから,リバランス処理を実行してください。
クラスタを停止してから各レンジに格納できるkeyの数を均等にする手順については,「11.3.2 クラスタを停止してから,各レンジに格納できるkeyの数を均等にする手順」を参照してください。
- ポイント
-
各レンジにkeyが均等に分散している状態で,かつ各EADSサーバが担当しているレンジに差がある場合に,リバランス処理の効果が得られます。
例えば,各レンジが均等なクラスタに対して,スケールアウト処理後にリバランス処理を実行すると効果があります。
なお,キャッシュが複数ある場合は,任意のキャッシュが次の条件に該当するときは,リバランス処理の効果が得られないことがあります。
-
各レンジにkeyが均等に分散していない。
-
keyの数やグループの数が極端に少ない。
-
- ポイント
-
リバランス処理中はEADSサーバ間でのデータ転送が発生します。そのため,データあふれによる縮退を防止するために,データ総量監視機能を有効にすることを推奨します。
- 参考
-
データ総量監視機能を有効にしている場合,リバランス処理の実行前に,スケールアウト処理前のクラスタのメモリ容量を超えたデータを格納すると,リバランス処理が失敗することがあります。
また,スケールアウト処理前のクラスタのメモリ容量を超えない場合でも,クラスタ内の各レンジに格納されているkeyの数に偏りがあると,リバランス処理が中断されることがあります。
そのため,スケールアウト処理後には速やかにリバランス処理を実行してください。スケールアウト処理とリバランス処理を組み合わせて,クラスタ全体でメモリ容量を均等に増加させてから,クラスタに格納するデータの容量を増やすことを推奨します。
リバランス処理が中断された場合は,クラスタに格納するデータの容量を減らすか,またはスケールアウト処理でさらにEADSサーバを追加することを検討してください。
- 注意事項
-
データ自動削除機能を使用しているキャッシュとデータ自動削除機能を使用していないキャッシュが混在している場合,スケールアウト処理およびリバランス処理は実行できません。対象のキャッシュを削除できる場合は,データ自動削除機能を使用しているキャッシュと,データ自動削除機能を使用していないキャッシュのどちらかを削除して,キャッシュが混在しないようにしてください。そのあとで,再度スケールアウト処理およびリバランス処理を実行してください。
(2) 各レンジのデータの分散状況を確認する
eztool storeusage --replicaコマンドを実行して,各レンジのデータの分散状況を確認します。
eztool storeusage --replica
コマンド実行例
eztool storeusage --replicaコマンドの実行結果を基に,どのレンジにEADSサーバを追加するかを決めてください。
(3) クラスタ定義ファイルのバックアップを取得する(任意)
必要に応じて,クラスタ定義ファイルのバックアップを取得します。
稼働中のクラスタにEADSサーバを追加する場合,クラスタ定義ファイルは自動的にEADSサーバの追加後の情報に書き換えられます。また,リバランス処理でEADSサーバの位置を変更する際にも,変更後のEADSサーバの情報に書き換えられます。
書き換えられる前のクラスタ定義ファイルのバックアップファイルは,次に示すパスに自動的に作成されます。ただし,同名のファイルがある場合は出力されません。
<運用ディレクトリ>/conf/eads_cluster.properties.ebf
クラスタ定義ファイルのバックアップファイルが存在すると,スケールアウト処理やリバランス処理の実行時に,クラスタ定義ファイルはEADSサーバ追加・変更後の情報に上書きされます。そのため,スケールアウト処理やリバランス処理の実行後に,ユーザがクラスタ定義ファイルを編集し,再度スケールアウト処理やリバランス処理を実行すると,編集した内容が消えてしまいます。編集したクラスタ定義ファイルのバックアップが必要な場合は,スケールアウト処理やリバランス処理の実行前に,手動でバックアップを取得してください。
(4) クラスタ内の全EADSサーバに異常がないことを確認する
eztool statusコマンドを実行して,クラスタ内に縮退状態(isolated)または停止状態(-----------)のEADSサーバがないことを確認します。
eztool status
コマンド実行例
クラスタ内に縮退状態または停止状態のEADSサーバが存在する場合は,EADSサーバを復旧してください。
復旧の手順については,「12.2.1 縮退状態が発生した場合」を参照してください。
(5) 追加するEADSサーバのインストールおよびセットアップを行う
追加するEADSサーバのインストールおよびセットアップを行います。
インストールおよびセットアップの手順については,「5. インストールおよびセットアップを行う(EADSサーバ)」を参照してください。
ただし,クラスタ定義ファイルはEADSサーバ追加時に自動で作成されるため,作成する必要はありません(追加するEADSサーバにクラスタ定義ファイルがあっても読み込まれません)。
(6) EADSサーバをクラスタに追加する
追加するEADSサーバでezstartコマンドまたはezserverコマンドを実行して,EADSサーバをクラスタに追加します。
次のどれかの方法で,EADSサーバをクラスタに追加します。
-
EADSサーバIDを指定してEADSサーバをクラスタに追加する場合
-
追加するEADSサーバで,ezstart -aiコマンドを実行する
-
追加するEADSサーバで,ezserver -aiコマンドを実行する
-
-
EADSサーバの位置(ハッシュ値)を指定してEADSサーバをクラスタに追加する場合
-
追加するEADSサーバで,ezstart -apコマンドを実行する
-
追加するEADSサーバで,ezserver -apコマンドを実行する
-
EADSサーバIDを指定してEADSサーバをクラスタに追加する場合(ezstart -aiコマンドを実行する)
ezstart -ai <EADSサーバID>
EADSサーバIDを指定してEADSサーバをクラスタに追加する場合(ezserver -aiコマンドを実行する)
ezserver -ai <EADSサーバID>
EADSサーバの位置を指定してEADSサーバをクラスタに追加する場合(ezstart -apコマンドを実行する)
ezstart -ap <EADSサーバの位置(ハッシュ値)>
EADSサーバの位置を指定してEADSサーバをクラスタに追加する場合(ezserver -apコマンドを実行する)
ezserver -ap <EADSサーバの位置(ハッシュ値)>
EADSサーバの追加後に,何らかの要因でクラスタ定義ファイルが書き換えられなかった場合,エラーメッセージが表示されます。この場合は,eztool listconfコマンドを実行して最新のパラメタの値を確認し,手動でクラスタ定義ファイルに反映してください。
(7) 追加したEADSサーバがクラスタに参加していることを確認する
eztool status -vコマンドで,追加したEADSサーバがクラスタに参加していることを確認します。
eztool status -v
コマンド実行例
クラスタに参加している場合,Cluster欄にonlineが表示されます。
Position欄,およびKeyCount欄の値を参照すると,各EADSサーバの位置,および各レンジに格納できるkeyの数に偏りがあるかどうかを確認できます。レンジに格納できるkeyの数に偏りがある場合は,リバランス処理を実行して,偏りを解消してください。
複数台のEADSサーバを追加する場合は,追加する各EADSサーバに対して,「11.1.1(5) 追加するEADSサーバのインストールおよびセットアップを行う」以降の手順を実行してください。
(8) EADSサーバの位置を変更して,各レンジに格納できるkeyの数を均等にする(リバランス処理)
任意のEADSサーバでeztool rebalanceコマンドを実行して,各レンジに格納できるkeyの数を均等にします。
eztool rebalance
コマンド実行例
コマンドを実行すると,各EADSサーバの位置がコンシステント・ハッシングの円周上に均等に配置し直されて,各レンジに格納できるkeyの数が均等になります。
(9) リバランス処理の結果を確認する
eztool status -vコマンドを実行して,リバランス処理の結果を確認します。
eztool status -v
コマンド実行例
Position欄,およびKeyCount欄の値を参照すると,各EADSサーバの位置の偏り,および各レンジに格納できるkeyの数の偏りが解消されていることがわかります。