データ・レプリケーション

Cassandraは、複数のノードにレプリカを格納し、信頼性およびフォールト・トレランスを確保します。レプリカが置かれるノードは、レプリケーション・ストラテジによって決まります。

Cassandraは、複数のノードにレプリカを格納し、信頼性およびフォールト・トレランスを確保します。レプリカが置かれるノードは、レプリケーション・ストラテジによって決まります。クラスター全体のレプリカの総数を、レプリケーション係数と呼びます。レプリケーション係数1は、各行のコピーが1つしかなく、1つのノード上にあることを意味します。レプリケーション係数2は、各行のコピーが2つあり、それぞれ異なるノード上にあることを意味します。すべてのレプリカの重要性は同じで、プライマリ・レプリカやマスター・レプリカといった区別はありません。原則として、レプリケーション係数はクラスター内のノードの数を超えることはできません。ただし、レプリケーション係数を大きくした後でノードの数を増やすことができます。

2つのレプリケーション・ストラテジがあります。

  • SimpleStrategy:1つのデータ・センターのみの場合に使用します。複数のデータ・センターを予定している場合は、NetworkTopologyStrategyを使用します。
  • NetworkTopologyStrategy:将来、拡張が必要になったときに複数のデータ・センターに拡張するのがはるかに容易なため、ほとんどのデプロイに強く推奨されます。
SimpleStrategy
1つのデータ・センターのみの場合に使用します。SimpleStrategyでは、パーティショナーによって決定されたノード上に最初のレプリカが置かれます。追加のレプリカは、トポロジー(ラックやデータ・センターの場所)を考慮されずに、時計回りにリング上の次のノードにおかれます。
NetworkTopologyStrategy
複数のデータ・センターでデプロイされるクラスターがある場合(または予定している場合)はNetworkTopologyStrategyを使用します。このストラテジは、各データ・センターに置くレプリカの数を指定します。

NetworkTopologyStrategyでは、同じデータ・センター内で、リングを時計回りに進んで到達した別のラックの最初のノードにレプリカが置かれます。NetworkTopologyStrategyでレプリカが別のラックに置かれる理由は、同じラック(あるいは同様の物理的なグループ)のノードで障害が起きるときは、共用している電源、冷却機能、ネットワークなどの問題が原因でいっぺんに起こることが多いからです。

各データ・センターで構成するレプリカ数を決定するときに、最初に考慮する2項目は、(1)データ・センター間のレイテンシーを発生させることなくローカルで読み取り要求を満たすこと、および(2)障害シナリオです。複数のデータ・センターのクラスターを構成する2つの最も一般的な方法は以下のとおりです。

  • 各データ・センターに2つのレプリカ:この構成では、レプリケーション・グループごとの単一ノードの障害への耐性があり、整合性レベルONEでローカルの読み取りを可能にします。
  • 各データ・センターに3つのレプリカ:この構成では、強力な整合性レベルLOCAL_QUORUMでレプリケーション・グループごとの単一ノード障害、またはONEの整合性レベルを使用したデータ・センターごとの複数ノード障害への耐性があります。

非対称のレプリケーション・グループも可能です。たとえば、アプリケーション要求にリアルタイムで応えるために1つのデータ・センターに3つのレプリカを置き、他で解析を実行するため1つのレプリカを使用するといったことができます。

レプリケーション・ストラテジはキースペースごとに定義し、キースペースの作成時に設定します。キースペースを設定するには、「キースペースの作成」を参照してください。