DS201学習記録:Cassandraのレプリケーションについて

DS201コースの学習記録。Cassandraのレプリケーションファクタとレプリケーション戦略(SimpleStrategy、NetworkTopologyStrategy)を解説します。

DS201: Foundations of Apache Cassandra™ and DataStax Enterprise の学習記録です。

レプリケーション (Replication) とは

Cassandraは、高い可用性と耐障害性を実現するために、データを複数のノードに複製する**レプリケーション(Replication)**という仕組みを採用しています。これにより、一部のノードに障害が発生してもデータの喪失やサービスの停止を防ぎ、継続的な運用を可能にします。

レプリケーションファクタ (Replication Factor, RF)

**レプリケーションファクタ(RF)**は、各データセットがクラスター内で何回複製されるかを指定するパラメータです。RFの値は、キースペース(Keyspace)ごとに設定します。

RF耐障害性ストレージ書き込みコスト
1なし(ノード障害でデータ喪失)1倍低い
21ノード障害まで耐える2倍中程度
32ノード障害まで耐える3倍高い

本番環境ではRF = 3が一般的な推奨値です。これにより、2ノードが同時にダウンしてもデータを失わずに運用を継続できます。

CQLでのRF設定

キースペース作成時にRFを指定します。

-- SimpleStrategy でRF=3のキースペースを作成
CREATE KEYSPACE my_keyspace
WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': 3
};

-- NetworkTopologyStrategy でデータセンターごとにRFを指定
CREATE KEYSPACE production_keyspace
WITH replication = {
  'class': 'NetworkTopologyStrategy',
  'dc1': 3,
  'dc2': 2
};

既存のキースペースのRFを変更する場合はALTER KEYSPACEを使います。

ALTER KEYSPACE my_keyspace
WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': 2
};

RF変更後はnodetool repairを実行して、既存データのレプリケーションを更新する必要があります。

レプリケーション戦略 (Replication Strategy)

Cassandraには、データの複製方法を決定するレプリケーション戦略がいくつかあります。

SimpleStrategy

単一のデータセンターで構成されるクラスター向けです。パーティショナーによって決定された担当ノードから、リング上で時計回りに次のノードへ順番にレプリカを配置します。

  • 開発・テスト環境に適している
  • ラックやデータセンターのトポロジーを考慮しない
  • 複数データセンター構成では使用すべきでない

NetworkTopologyStrategy

複数のデータセンターやラックで構成されるクラスター向けです。データセンターごとに異なるRFを設定でき、ラックのトポロジーを考慮してレプリカを異なるラックに分散配置します。

  • 本番環境では常にこの戦略が推奨される(単一DC構成でも将来の拡張に備えて)
  • データセンターごとにRFを独立して設定可能
  • ラック障害時のデータ保全性が高い

戦略の選択基準

条件推奨戦略
開発・テスト(単一ノード)SimpleStrategy
本番環境(単一DC)NetworkTopologyStrategy
本番環境(複数DC)NetworkTopologyStrategy

レプリケーションとConsistency Levelの関係

レプリケーション戦略とRFは、Consistency Levelと密接に関連しています。例えば、RF=3のクラスターでQUORUM(過半数)を使用すると、読み書きともに2ノードからの応答が必要になります。

強い一貫性を保証するためのルール:

\[ W + R > RF \]

ここで、\(W\)は書き込みConsistency Levelで応答が必要なノード数、\(R\)は読み取りConsistency Levelで応答が必要なノード数です。

DS201シリーズ

この記事はDS201学習記録シリーズの一部です。