프로덕션용 Cassandra 구성

이 주제에서는 Apigee Hybrid 프로덕션 설치를 위해 Cassandra 데이터베이스 구성요소를 구성하는 데 필요한 단계를 설명합니다.

고가용성 보장

Cassandra 클러스터에는 프로덕션 환경에서 가용성을 유지하기 위해 3개의 가용성 영역이 필요합니다. 한 영역이 다운되면 영역이 온라인 상태로 전환되는 동안 나머지 영역이 요청에 계속 응답합니다. 영역 2개 이상이 작동 중단되면 Cassandra는 최소 2개 이상의 영역이 다시 온라인 상태가 될 때까지 요청에 응답할 수 없습니다. Apigee에서는 데이터 업데이트가 누락될 위험을 최소화하기 위해 3시간 이내에 영역을 다시 온라인으로 전환하는 것이 권장됩니다.

Cassandra 스토리지 설정 적용

재정의 파일의 Cassandra 스토리지 설정에 변경사항을 적용하려면 다음 명령어를 실행합니다.

$APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES_FILE
$APIGEECTL_HOME/apigeectl apply -f overrides/OVERRIDES_FILE

Cassandra 스토리지 설정 구성

Apigee Hybrid 프로덕션의 경우 Google에서는 재정의 파일에 다음 스토리지 및 힙 설정을 추가하고 이를 클러스터에 적용할 것을 권장합니다.

cassandra:
  ...
  replicaCount: 3
  storage:
    storageclass: your-preferred-ssd-storage #If not using default storage for your cluster
    capacity: 500Gi
  resources:
    requests:
      cpu: 7
      memory: 15Gi
  maxHeapSize: 8192M
  heapNewSize: 1200M

replicaCount

replicaCount 값은 3의 배수여야 합니다. 원하는 replicaCount 값을 확인하려면 다음을 고려하세요.

  • 프록시에 대한 트래픽 수요를 예상합니다.
  • 부하 테스트를 수행하고 CPU 사용률을 합리적으로 예측합니다.
  • 리전마다 다른 replicaCount 값을 지정할 수 있습니다.
  • 향후 재정의 파일에서 replicaCount를 확장할 수 있습니다.

현재 replicaCount 설정을 확인하려면 클러스터에서 다음 명령어를 실행합니다.

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.replicas}'
  

storageclass

프로덕션의 경우 Cassandra 스토리지는 SSD StorageClass여야 합니다. 클러스터에 기본 Kubernetes StorageClass를 사용 중이 아니면 storageclass의 값을 설정합니다. 다음 명령어를 사용하여 기본 StorageClass를 확인할 수 있습니다.

kubectl get storageclass

다음과 비슷한 결과가 출력됩니다.

NAME                     PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
premium-rwo              pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   6d23h
standard                 kubernetes.io/gce-pd    Delete          Immediate              true                   6d23h
standard-rwo (default)   pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   6d23h

기본 Kubernetes StorageClass를 변경하려면 StorageClass 구성 안내를 따르세요.

현재 storageclass 설정을 확인하려면 클러스터에서 다음 명령어를 실행합니다.

kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.metadata.annotations.volume\.beta\.kubernetes\.io/storage-class}'
  

capacity

프로덕션 설치의 경우 Google에서는 500Gi(기비바이트) 이상의 스토리지 용량을 권장합니다. 클러스터의 스토리지 요구에 맞게 스토리지 용량을 변경할 수 있습니다. 스토리지 용량을 변경하려면 Cassandra 영구 볼륨 확장을 참조하세요.

현재 용량 설정을 확인하려면 클러스터에서 다음 명령어를 실행합니다.

kubectl get pvc -n NAMESPACE cassandra-data-apigee-cassandra-default-0 -o=jsonpath='{.spec.resources.requests.storage}'
  

cpu, memory

프로덕션 설치의 경우 Google에서는 포드당 최소 7개의 CPU와 최소 15Gi(기비바이트)를 권장합니다. cassandra.resources.requests.cpucassandra.resources.requests.memory를 지정할 때는 트래픽 볼륨 및 프록시의 CPU 및 메모리 요구를 고려합니다.

현재 CPU 설정을 확인하려면 클러스터에서 다음 명령어를 실행합니다.

kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.cpu}'
  

현재 메모리 설정을 확인하려면 클러스터에서 다음 명령어를 실행합니다.

kubectl get pods -n NAMESPACE apigee-cassandra-default-0 -o=jsonpath='{.spec.containers[].resources.requests.memory}'
  

maxHeapSize, heapNewSize

이러한 속성은 cassandra 프로세스에 할당된 최대 메모리 힙과 메모리가 증가하는 양을 각각 메가바이트 단위로 결정합니다(힙 크기는 메비바이트가 아닌 메가바이트로 지정). 프로덕션 환경의 경우 Google은 다음 값을 권장합니다.

  • maxHeapSize: 8192M
  • heapNewSize: 1200M

최적 힙 크기 값은 Kubernetes 플랫폼 공급업체의 문서를 참조하세요.

현재 maxHeapSize 설정을 확인하려면 클러스터에서 다음 명령어를 실행합니다.

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="MAX_HEAP_SIZE")]}'
  

현재 heapNewSize 설정을 확인하려면 클러스터에서 다음 명령어를 실행합니다.

kubectl get sts -n NAMESPACE apigee-cassandra-default -o=jsonpath='{.spec.template.spec.containers[].env[?(@.name=="HEAP_NEWSIZE")]}'
  

이러한 속성 설정에 대한 자세한 내용은 구성 속성 참조를 참조하세요.

프로덕션 배포를 위한 SSD 스토리지 사용

Cassandra 데이터베이스의 경우 하이브리드 런타임은 동적으로 생성된 영구 볼륨만 사용하여 데이터를 저장합니다. 로컬 솔리드 스테이트 디스크(SSD) 드라이브는 지원되지 않습니다.

현재 Cassandra용으로 SSD를 구성하지 않았으면 솔리드 스테이트 드라이브(SSD)로 지원되는 StorageClass 정의를 구성하고 이를 기본 클래스로 만들어야 합니다. 자세한 단계는 StorageClass 구성을 참조하세요.

기본 Kubernetes StorageClass를 변경하려면 StorageClass 구성 안내를 따르세요.