Cassandra 복제 계수 및 일관성 수준 정보

Cassandra 복제 계수 정보

Cassandra는 안정성과 내결함성을 보장하기 위해 여러 노드에 데이터 복제본을 저장합니다. 각 Edge 키스페이스의 복제 전략은 복제본이 배치되는 노드를 결정합니다.

Cassandra 클러스터에서 키스페이스의 총 복제본 수를 키스페이스의 복제 계수라고 합니다. 복제 계수가 1이면 Cassandra 클러스터에 각 행의 사본이 하나만 있음을 의미합니다. 복제 계수가 2이면 각 행에 사본이 두 개 있고 각 사본이 다른 노드에 있다는 의미입니다. 모든 복제본이 동일하게 중요합니다. 기본 또는 마스터 복제본이 없습니다.

각 데이터 센터에 Cassandra 노드가 3개 이상 있는 프로덕션 시스템에서 Edge 키스페이스의 기본 복제 계수는 3입니다. 일반적으로 복제 인수는 클러스터의 Cassandra 노드 수를 초과하면 안 됩니다.

다음 절차에 따라 각 Edge 키스페이스의 복제 계수를 보여주는 Cassandra 스키마를 확인합니다.

  1. Cassandra 노드에 로그인합니다.
  2. 다음 명령어를 실행합니다.
    /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)에서 Cassandra 노드가 3개인 설치에서 kms 키스페이스의 기본 복제 계수는 3입니다.

클러스터에 Cassandra 노드를 추가해도 기본 복제 계수는 영향을 받지 않습니다.

예를 들어 Cassandra 노드 수를 6개로 늘렸지만 복제 계수는 3으로 유지하면 모든 Cassandra 노드에 모든 데이터의 사본이 있는지 확인할 수 없습니다. 노드가 다운되는 경우 복제 계수가 높을수록 노드의 데이터가 나머지 노드 중 하나에 존재할 가능성이 높아집니다. 복제 계수가 높을수록 데이터 쓰기 지연 시간이 길어진다는 단점이 있습니다.

Cassandra 일관성 수준 정보

Cassandra 일관성 수준은 작업이 성공한 것으로 간주되기 전에 읽기 또는 쓰기 작업을 확인해야 하는 최소 Cassandra 노드 수로 정의됩니다. 여러 Edge 키스페이스에 서로 다른 일관성 수준을 할당할 수 있습니다.

읽기 및 쓰기 작업을 위해 Cassandra에 연결할 때 메시지 프로세서 및 관리 서버 노드는 일반적으로 LOCAL_QUORUM의 Cassandra 값을 사용하여 키스페이스의 일관성 수준을 지정합니다. 그러나 일부 키스페이스는 일관성 수준 1을 사용하도록 정의됩니다.

데이터 센터의 LOCAL_QUORUM 값 계산은 다음과 같습니다.

LOCAL_QUORUM = (replication_factor/2) + 1

위에서 설명한 대로 Cassandra 노드가 3개인 Edge 프로덕션 환경의 기본 복제 계수는 3입니다. 따라서 기본값 LOCAL_QUORUM = (3/2) +1 = 2 (값은 정수로 내림됨)입니다.

LOCAL_QUORUM = 2인 경우 작업이 성공하려면 데이터 센터의 Cassandra 노드 3개 중 2개 이상이 읽기/쓰기 작업에 응답해야 합니다. 3노드 Cassandra 클러스터의 경우 클러스터가 데이터 센터당 1개의 노드가 다운되는 것을 허용할 수 있습니다.

일관성 수준을 LOCAL_QUORUM로 지정하면 Edge가 여러 데이터 센터에서 작업을 검증하는 데 필요한 지연 시간을 방지할 수 있습니다. 키스페이스에서 Cassandra QUORUM 값을 일관성 수준으로 사용한 경우 모든 데이터 센터에서 읽기/쓰기 작업을 검증해야 합니다.

에지 메시지 프로세서 또는 관리 서버 노드에서 사용하는 일관성 수준을 확인하려면 다음 안내를 따르세요.

  1. 메시지 프로세서 노드에 로그인합니다.
  2. /opt/apigee/edge-message-processor/conf 디렉터리로 변경합니다.
    cd /opt/apigee/edge-message-processor/conf
  3. 쓰기 일관성:
    grep -ri "write.consistencylevel" *
  4. 읽기 일관성:
    grep -ri "read.consistencylevel" *
  5. 관리 서버 노드에 로그인합니다.
  6. /opt/apigee/edge-management-server/conf 디렉터리로 변경합니다.
    cd /opt/apigee/edge-management-server/conf
  7. 3단계와 4단계를 반복합니다.

클러스터에 Cassandra 노드를 추가하는 경우 일관성 수준은 영향을 받지 않습니다.