読取り専用レプリカ・ノードの喪失
フェイルオーバーでは、レプリカ・ノードが実行されているマシンの問題によってレプリカ・ノードが失われることがよくあります。このような喪失は、ハード・ドライブの障害と同じくらい一般的な問題が原因で発生する可能性があります。
この場合、影響を受けるシャードは、そのレプリカを使用しているもののみです。デフォルトでは、シャードに対する影響として、読取りスループット容量が減少します。シャード自体は通常の操作を続行できます。ただし、1つのレプリケーション・ノードが失われると、読取りリクエストの処理能力が、1つのホスト・マシンがストアに提供する読取りスループットの容量分低下します。このような読取りスループット容量の減少に気付くかどうかは、シャードで発生している読取り負荷の大きさによって決まります。シャードの読取り負荷が低ければ、レプリカが失われても、パフォーマンスの低下がわずかである場合もあります。
こうしたわずかなパフォーマンスの低下は、1つのホスト・マシンに含まれているレプリケーション・ノードが1つのみであることを前提としています。複数のレプリケーション・ノードを1つのホストで実行するようにストアを構成した場合は、失われるスループット容量がそれに応じて増加します。複数のレプリケーション・ノードを実行しているマシンが失われた場合、そのマシン上のすべてのレプリケーション・ノードが同じシャードに属する可能性は低いため、複数のシャードのスループット容量に影響します。この場合も、ストレージ・ノードの喪失によるパフォーマンスの低下に気付くかどうかは、影響を受ける個々のシャードで発生している読取り負荷の大きさによって決まります。
このシナリオでは、1つの例外を除いて、シャードは書込みリクエストの処理を続行し、書込みスループット容量は変わらないままその処理を続行できる場合もあります。マスター自体は影響を受けないため、書込みの実行とシャード内の残りのレプリカへのそれらのレプリケートを続行できます。次の場合は、書込みスループット容量が減少することがあります。
-
1つのレプリカの喪失によって残りのレプリカが飽和状態になるような大きい読取り負荷がシャードにある。かつ
-
マスターが、書込みコミットを終了する前に受信確認を要求する。
このシナリオでは、マスターがレプリカによるコミットの受信確認を絶えず待機しているか、マスター自体が読取りリクエストに応答するリソースを消費しているため、書込みパフォーマンス容量が低下することがあります。どちらの場合も、書込みスループットの低下が見られる可能性がありますが、低下の度合いは、シャードの読取り/書込み負荷が実際にどの程度大きいかによって異なります。この場合も、シャードの書込み負荷が低いために書込みスループットの低下に気付かない可能性があります。
また、1つの読取り専用レプリカが失われると、そのシャードにおけるすべての書込み操作がDurabilityException
例外で失敗することがあります。これは、プライマリ・ゾーン内のシャードのすべてのレプリカからの受信確認を必要とする永続性保証を使用している場合に発生します。この場合、そのレプリカがオンラインに戻るか、それほど厳格でない永続性保証を使用するまで、そのシャードにおける書込みは失敗します。
プライマリ・ゾーン内のすべてのレプリカからの受信確認を必要とする永続性保証を使用すると、(書込みがシャード内のすべてのマシンに確実にレプリケートされるようになるため)可能なかぎり最も強力なデータ永続性が提供されます。その一方で、単一のハードウェア障害によってシャード全体の書込み機能が失われる可能性があります。そのため、必ず、永続性要件と可用性要件のバランスを考慮し、それに応じてストアおよび関連するコードを構成してください。