Cassandra 복제 요인 및 일관성 수준 정보

Private Cloud용 Edge v4.18.01

Cassandra 복제 인수 정보

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

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

각 데이터 센터에 3개 이상의 Cassandra 노드가 있는 프로덕션 시스템에서 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에 연결할 때 메시지 프로세서 및 관리 서버 노드는 일반적으로 Cassandra 값 LOCAL_QUORUM를 사용하여 키스페이스의 일관성 수준을 지정합니다. 그러나 일부 키스페이스는 일관성 수준 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 노드를 추가해도 일관성 수준은 영향을 받지 않습니다.