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

Cassandra 복제 인수 정보

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

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

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

각 Edge 키스페이스의 복제 계수를 보여주는 Cassandra 스키마를 보려면 다음 절차를 따르세요.

  1. Cassandra 노드에 로그인합니다.
  2. 다음 명령어를 실행합니다.
    /opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u cassuser -p casspass] -e "select keyspace_name, replication from system_schema.keyspaces;"

    여기서 $(hostname -i)는 Cassandra 노드의 IP 주소로 확인됩니다. 또는 $(hostname -i)를 노드의 IP 주소로 바꿀 수 있습니다.

    cassuser: Cassandra 인증을 사용 설정한 경우 Cassandra 사용자 이름을 전달합니다. 이는 선택사항이며 Cassandra 인증을 사용 설정하지 않은 경우 건너뛸 수 있습니다.

    casspass: Cassandra 인증을 사용 설정한 경우 Cassandra 비밀번호를 전달합니다. 이는 선택사항이며 Cassandra 인증을 사용 설정하지 않은 경우 건너뛸 수 있습니다.

아래와 같은 출력이 표시됩니다. 여기서 각 행은 하나의 키스페이스를 나타냅니다.

  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의 경우 Cassandra 노드가 3개인 설치 시 kms 키스페이스의 기본 복제 인수는 3인 것을 확인할 수 있습니다. Cassandra 내부의 특정 키스페이스 (예: system, system_schema)의 경우 복제 전략과 복제 인수가 다를 수 있습니다. 이는 의도적인 시스템 동작입니다.

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

Cassandra 일관성 수준 정보

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

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

데이터 센터의 LOCAL_QUORUM 값을 계산하는 방법은 다음과 같습니다.

LOCAL_QUORUM = (replication_factor/2) + 1

위에 설명된 대로 3개의 Cassandra 노드가 있는 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 "consistency.level" *
  4. 관리 서버 노드에 로그인합니다.
  5. /opt/apigee/edge-management-server/conf 디렉터리로 변경합니다.
    cd /opt/apigee/edge-management-server/conf
  6. 3단계를 반복합니다.

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