Cassandra のレプリケーション係数について
Cassandra は複数のノードにデータレプリカを保存し、信頼性とフォールト トレランスを確保します。 Edge キースペースごとのレプリケーション戦略によって、レプリカを配置するノードが決まります あります。
Cassandra クラスタ全体のキースペースのレプリカの合計数は、 キースペースのレプリケーション係数。レプリケーション係数が 1 の場合は、 行のコピーを作成します。レプリケーション係数が 2 の場合は、2 つの コピー(各コピーは異なるノード上に存在する)すべてのレプリカは等しく重要です。 プライマリ レプリカとマスター レプリカはありません。
各データセンターに 3 つ以上の Cassandra ノードがある本番環境システムでは、デフォルトの Edge キースペースのレプリケーション係数は 3 です。原則として、レプリケーション係数は クラスタ内の Cassandra ノードの数を超えないようにしてください。
次の手順に沿って、各 Edge キースペースのレプリケーション係数を示す Cassandra スキーマを表示します。
- Cassandra ノードにログインします。
- 次のコマンドを実行します。
/opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u
cassuser
-pcasspass
] -e "select keyspace_name, replication from system_schema.keyspaces;"ここで、
$(hostname -i)
は Cassandra ノードの IP アドレスに解決されます。$(hostname -i)
をノードの IP アドレスに置き換えることもできます。cassuser
: Cassandra 認証を有効にしている場合は、Cassandra のユーザー名を渡します。これはオプションであり、Cassandra 認証を有効にしていない場合は省略できます。casspass
: Cassandra 認証を有効にしている場合は、Cassandra のパスワードを渡します。これはオプションであり、Cassandra 認証を有効にしていない場合は省略できます。
次のような出力が表示されます。各行は 1 つのキースペースを表します。
keyspace_name | replication kms | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} apprepo | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
データセンター 1 の dc-1 では、3 つの Cassandra ノードがあるインストールの kms キースペースのデフォルトのレプリケーション係数が 3 であることがわかります。Cassandra 内部の特定のキースペース(system、system_schema など)では、レプリケーション戦略とレプリケーション係数が異なる場合があります。これは意図的なシステム動作です。
Cassandra ノードをクラスタに追加しても、デフォルトのレプリケーション係数は 表示されます。
Cassandra の整合性レベルについて
Cassandra の整合性レベルは、アプリケーションに必要な Cassandra ノードの最小数として 読み取りまたは書き込みオペレーションが成功したとみなす前に確認応答を送ります。 Edge キースペースごとに異なる整合性レベルを割り当てることができます。
読み取り / 書き込みオペレーションのために Cassandra に接続する場合、Message Processor および Management
サーバーノードでは通常、Cassandra の値 LOCAL_QUORUM
を使用して、
キースペースの整合性レベルを指定します。ただし、一部のキースペースは
整合性レベル 1 にします
データセンターの LOCAL_QUORUM
の値は次のように計算されます。
LOCAL_QUORUM = (replication_factor/2) + 1
前述のように、Cloud KMS を使用する Edge 本番環境のデフォルトのレプリケーション係数は、
3 つの Cassandra ノードがあります。したがって、LOCAL_QUORUM
のデフォルト値 =
(3/2)+1 = 2(値は整数に切り捨てられます)となります。
LOCAL_QUORUM
= 2 の場合、データ内の 3 つの Cassandra ノードのうち少なくとも 2 つ
オペレーションが成功するには、センターが読み取り/書き込みオペレーションに応答する必要があります。3 ノードの場合
そのため、データセンターごとに 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 "consistency.level" *
- Management Server ノードにログインします。
/opt/apigee/edge-management-server/conf
ディレクトリに移動します。cd /opt/apigee/edge-management-server/conf
- 手順 3 を繰り返します。
Cassandra ノードをクラスタに追加しても、整合性レベルに影響はありません。