Cassandra 데이터베이스는 동적으로 생성된 영구 볼륨을 사용하여 데이터를 저장합니다. 올바른 데이터베이스 기능을 위해 Apigee에서는 사용자가 솔리드 스테이트 드라이브(SSD)로 지원되는 StorageClass 정의를 구성해야 합니다.
현재 Cassandra에 SSD가 구성되지 않은 경우 이 주제에서는 SSD를 사용하는 새 StorageClass를 만들고 이를 기본 클래스로 지정하는 방법을 설명합니다. Cassandra가 시작되면 이 기본 StorageClass를 사용합니다.
StorageClass 구성에 대해 이 주제에서 설명된 단계는 새 Cassandra 설치에만 적용될 수 있습니다. Cassandra 클래스가 이미 설치되어 있는 경우 StorageClass 정의를 구성하려면 기존 클러스터를 사용 중단해야 합니다. 설치 후 기존 Cassandra 클러스터의 StorageClass 정의 변경은 지원되지 않습니다.
Apigee에서는 데이터를 보조 리전에 보존하면서 리전 하나를 사용 중단하고 다시 설치하기 위해 리전 2개 이상에 하이브리드를 배포하는 것을 권장합니다. 또는 필요한 StorageClass 정의를 사용 중단 및 구성한 후 CSI가 아닌 하이브리드 백업을 사용하여 단일 리전 설치에서 데이터를 복원할 수 있습니다.
기본 StorageClass 변경
다음 단계에서는 StorageClass를 만들고 이것을 기본 클래스로 설정하는 방법을 설명합니다. 자세한 내용은 Kubernetes 문서의 기본 스토리지 클래스 변경을 참조하세요.
- 현재 기본 StorageClass의 이름을 가져옵니다.
kubectl get sc
예:
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h standard kubernetes.io/gce-pd Delete Immediate true 15h standard-rwo (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h standard-rwo
라는 StorageClass를 설명합니다. 유형은pd-balanced
입니다.kubectl describe sc standard-rwo
예:
kubectl describe sc standard-rwo
Name: standard-rwo IsDefaultClass: Yes Annotations: components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false Provisioner: pd.csi.storage.gke.io Parameters: type=pd-balanced AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
storageclass.yaml
라는 새 파일을 만듭니다.- 이 코드를 파일에 추가합니다. 새 클래스 이름은
apigee-sc
이며, 원하는 이름을 사용할 수 있습니다. 또한 스토리지 유형은pd-ssd
입니다.--- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: "apigee-sc" provisioner: pd.csi.storage.gke.io parameters: type: pd-ssd replication-type: none volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
- 새 StorageClass를 Kubernetes 클러스터에 적용합니다.
kubectl apply -f storageclass.yaml
- 다음 두 명령어를 실행하여 기본 StorageClass를 변경합니다.
kubectl patch storageclass standard-rwo \ -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
kubectl patch storageclass apigee-sc \ -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
- 다음 명령어를 실행하여 새 기본 StorageClass를
apigee-sc
라고 하는지 확인합니다.kubectl get sc
예:
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE apigee-sc (default) pd.csi.storage.gke.io Delete WaitForFirstConsumer true 14h premium-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h standard kubernetes.io/gce-pd Delete Immediate true 15h standard-rwo pd.csi.storage.gke.io Delete WaitForFirstConsumer true 15h
- 두 StorageClass를 모두 설명하여 IsDefaultClass의 값을 확인합니다.
kubectl describe sc apigee-sc
Name: apigee-sc IsDefaultClass: Yes Annotations: kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"apigee-sc"},"parameters":{"replication-type":"none","type":"pd-ssd"},"provisioner":"pd.csi.storage.gke.io","volumeBindingMode":"WaitForFirstConsumer"} ,storageclass.kubernetes.io/is-default-class=true Provisioner: pd.csi.storage.gke.io Parameters: replication-type=none,type=pd-ssd AllowVolumeExpansion: True MountOptions:
ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: kubectl describe sc standard-rwo
Name: standard-rwo IsDefaultClass: No Annotations: components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false Provisioner: pd.csi.storage.gke.io Parameters: type=pd-balanced AllowVolumeExpansion: True MountOptions:
ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: