Edge for Private Cloud v. 4.17.05
Cassandra のレプリケーション係数について
Cassandra は、信頼性とフォールト トレランスを確保するために、複数のノードにデータレプリカを保存します。各 Edge キースペースのレプリケーション戦略によって、レプリカが配置されるノードが決まります。
Cassandra クラスタ全体のキースペースのレプリカの合計数は、キースペースのレプリケーション係数と呼ばれます。レプリケーション係数が 1 の場合、Cassandra クラスタ内の各行のコピーは 1 つだけです。レプリケーション係数が 2 の場合、各行のコピーが 2 つあり、各コピーは異なるノードに存在します。すべてのレプリカが等しく重要であり、プライマリ レプリカやマスター レプリカはありません。
各データセンターに 3 つ以上の Cassandra ノードがある本番環境システムでは、Edge キースペースのデフォルトのレプリケーション係数は 3 です。原則として、レプリケーション係数はクラスタ内の Cassandra ノード数を超えないようにしてください。
次の手順で Cassandra スキーマを表示します。これにより、各 Edge キースペースのレプリケーション係数が表示されます。
- Cassandra ノードにログインします。
- 次のコマンドを実行します。
> /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"
ここで、$(hostname -i) は Cassandra ノードの IP アドレスに解決されます。または、$(hostname -i) をノードの IP アドレスに置き換えることもできます。
各キースペースについて、次の形式で出力が表示されます。
create keyspace kms
with placement_strategy = 'NetworkTopologyStrategy'
and strategy_options = {dc-1 : 3}
and durable_writes = true;データセンター 1(dc-1)の場合、3 つの Cassandra ノードを使用したインストールでは、kms キースペースのデフォルトのレプリケーション係数は 3 です。
クラスタに Cassandra ノードを追加しても、デフォルトのレプリケーション係数は影響を受けません。
たとえば、Cassandra ノードの数を 6 に増やしても、レプリケーション係数を 3 のままにすると、すべての Cassandra ノードにすべてのデータのコピーがあるとは限りません。ノードがダウンした場合、レプリケーション係数が高いほど、ノード上のデータが残りのノードのいずれかに存在する可能性が高くなります。レプリケーション係数を高くすることのデメリットは、データ書き込みのレイテンシが増加することです。
Cassandra の整合性レベルについて
Cassandra の整合性レベルは、読み取りまたは書き込みオペレーションが成功したと見なされる前に、オペレーションを認識する必要がある Cassandra ノードの最小数として定義されます。異なる整合性レベルを異なる Edge キースペースに割り当てることができます。
読み取りオペレーションと書き込みオペレーションのために Cassandra に接続する場合、Message Processor ノードと Management Server ノードは通常、Cassandra の LOCAL_QUORUM 値を使用して、キースペースの整合性レベルを指定します。ただし、一部のキースペースは、整合性レベル 1 を使用するように定義されています。
データセンターの LOCAL_QUORUM の値は、次のように計算されます。
LOCAL_QUORUM = (replication_factor/2) + 1
上述のように、3 つの Cassandra ノードがある Edge 本番環境のデフォルトのレプリケーション係数は 3 です。したがって、LOCAL_QUORUM のデフォルト値は (3/2) +1 = 2 です(値は整数に切り捨てられます)。
LOCAL_QUORUM = 2 の場合、オペレーションが成功するには、データセンター内の 3 つの Cassandra ノードのうち少なくとも 2 つが読み取り/書き込みオペレーションに応答する必要があります。3 ノードの Cassandra クラスタの場合、クラスタはデータセンターごとに 1 つのノードの停止を許容できます。
整合性レベルを LOCAL_QUORUM として指定することで、Edge は複数のデータセンターにわたるオペレーションの検証に必要なレイテンシを回避します。キースペースで Cassandra の QUORUM 値を整合性レベルとして使用した場合、読み取り/書き込みオペレーションはすべてのデータセンターで検証される必要があります。
Edge Message Processor ノードまたは Management Server ノードで使用されている整合性レベルを確認するには:
- Message Processor ノードにログインします。
- /opt/apigee/edge-message-processor/conf ディレクトリに移動します。
> cd /opt/apigee/edge-message-processor/conf - 書き込みの整合性の場合:
> grep -ri "write.consistencylevel" * - 読み取りの整合性の場合:
> grep -ri "read.consistencylevel" * - Management Server ノードにログインします。
- /opt/apigee/edge-management-server/conf ディレクトリに移動します。
> cd /opt/apigee/edge-management-server/conf - ステップ 3 と 4 を繰り返します。
クラスタに Cassandra ノードを追加しても、整合性レベルは影響を受けません。