秘訣は、レプリケーション ファクターを変更する代わりに、書き込み用の API を介して指定された一貫性設定を変更することです。LOCAL_QUORUM
データセンターが 1 つしか利用できない災害時の書き込みには、この設定を使用します。通常の運用中EACH_QUORUM
に、両方のデータセンターにデータのコピーがあることを確認するために使用します。読み取りは常に使用できますLOCAL_QUORUM
。
以下は、複数のデータセンターに関する Datastax ドキュメントの概要と、古いが概念的にはまだ関連のあるディザスター リカバリー (0.7)です。
LOCAL_QUORUM
と の 2 つの一貫性を使用して、ニーズに合ったレシピを作成しますEACH_QUORUM
。
ここで、「ローカル」は単一のデータセンターに対してローカルであることを意味し、「各」は各データセンターで一貫性が厳密に同じレベルで維持されていることを意味します。
2 つのデータセンターがあり、1 つが災害復旧にのみ使用されている場合、レプリケーション係数を次のように設定できます...
プライマリ書き込み/読み取りセンター用に 3 つ、フェールオーバー データ センター用に 2 つ
データが実際にディザスタ リカバリ ノードに書き込まれることがどれほど重要であるかに応じて、EACH_QUORUM または LOCAL_QUORUM のいずれかを使用できます。レプリケーション配置戦略を使用していると仮定するとNetworkTopologyStrategy (NTS)
、
LOCAL_QUORUM
on write は、クライアントがローカルで DC1 に書き込み、DC2 の復旧ノードに非同期的に書き込むのを遅らせるだけです。
EACH_QUORUM
すべてのデータがレプリケートされるようにしますが、両方の DC が操作の成功を確認するまで書き込みを遅らせます。
読み取りの場合は、 LOCAL_QUORUM を使用して回避するのが最善の方法inter-data center latency
です。
このアプローチには落とし穴があります。書き込みで EACH_QUORUM を使用することを選択した場合、潜在的な障害ポイントが増加します (DC2 がダウンしている、DC1-DC2 リンクがダウンしている、DC1 クォーラムを満たすことができない)。
おまけに、DC1 がダウンすると、有効な DC2 ディザスター リカバリーが得られます。また、2 番目のリンクでは、IP を適切にルーティングするためのカスタム スニッチ設定について説明しています。