이 주제에서는 Apigee Hybrid 프로덕션 설치를 위해 Cassandra 데이터베이스 구성요소를 구성하는 데 필요한 단계를 설명합니다.
고가용성 보장
Cassandra 클러스터에는 프로덕션 환경에서 가용성을 유지하기 위해 3개의 가용성 영역이 필요합니다. 한 영역이 다운되면 영역이 온라인 상태로 전환되는 동안 나머지 영역이 요청에 계속 응답합니다. 영역 2개 이상이 작동 중단되면 Cassandra는 최소 2개 이상의 영역이 온라인 상태가 될 때까지 요청에 응답할 수 없습니다. Apigee에서는 데이터 업데이트가 누락될 위험을 최소화하기 위해 3시간 이내에 영역을 다시 온라인으로 전환하는 것이 권장됩니다.
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
다음 명령어를 사용하여 Cassandra에 변경사항을 적용합니다.
Helm
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE.yaml
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore
replicaCount
replicaCount
값은 3
의 배수여야 합니다. 원하는 replicaCount
값을 확인하려면 다음을 고려하세요.
- 프록시에 대한 트래픽 수요를 예상합니다.
- 부하 테스트를 수행하고 CPU 사용률을 합리적으로 예측합니다.
- 리전마다 다른
replicaCount
값을 지정할 수 있습니다. - 향후 재정의 파일에서
replicaCount
를 확장할 수 있습니다.
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="{['.spec.storageClassName', '.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.cpu
및 cassandra.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 구성 안내를 따르세요.