Cassandra 영구 볼륨 확장

이 프로세스를 수행하면 더 많은 스토리지를 제공하기 위해 새 노드를 만들지 않고도 Apigee Hybrid Cassandra 데이터베이스에서 사용하는 영구 볼륨을 확장하여 스토리지 추가 요구사항을 충족할 수 있습니다.

개요

Apigee Hybrid cassandra 구성요소는 영구 볼륨을 사용하여 데이터를 저장합니다. 영구 볼륨의 크기는 설치 및 초기 구성 중에 정의됩니다. 이 초기 스토리지 크기의 값은 변경할 수 없습니다. 따라서 클러스터에 추가된 새 노드는 동일한 영구 볼륨 크기를 사용합니다.

기존 영구 볼륨은 영구 볼륨 신청에서 직접 크기를 변경하여 늘릴 수 있지만 새 노드는 이보다 작은 초기 영구 볼륨 크기를 계속 사용합니다.

하이브리드 Cassandra 데이터베이스가 저장용량 한도에 가까워지면 이 절차에 따라 기존 영구 볼륨을 확장하고 새 노드에서도 영구 볼륨을 확장하도록 할 수 있습니다.

Cassandra 영구 볼륨 확장

  1. 볼륨 크기를 원하는 크기로 업데이트합니다.
    kubectl -n apigee edit pvc
  2. 업데이트된 볼륨 용량을 확인합니다.
     kubectl get pvc -n apigee
    NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-default-0   Bound    pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4   100Gi      RWO            standard       21m
    cassandra-data-apigee-cassandra-default-1   Bound    pvc-6be911fc-91f7-465d-a02e-933428ee10b2   100Gi      RWO            standard       20m
    cassandra-data-apigee-cassandra-default-2   Bound    pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404   100Gi      RWO            standard       19m
  3. apigee-system 네임스페이스의 apigee-controller-manager 배포에서 복제본을 0으로 설정합니다.
    1. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           28m
    2. kubectl edit deployments -n apigee-system apigee-controller-manager
    3. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   0/0     0            0           30m
  4. 새 스토리지 크기로 statefulset를 백업, 삭제, 재생성합니다. 다음 명령어는 현재 Cassandra 구성을 캡처하는 데 사용할 수 있는 apigee-cassandra-default.yaml 구성 파일을 만듭니다. 그런 다음 이 구성을 수정하여 적용합니다.
    1. kubectl -n apigee get sts apigee-cassandra-default -o yaml > apigee-cassandra-default.yaml
    2. kubectl -n apigee delete sts --cascade=false apigee-cassandra-default
    3. delete 작업이 완료되었는지 확인합니다.
      kubectl get sts -n apigee

      출력은 다음과 같이 표시됩니다.

      No resources found in apigee namespace.
    4. apigee-cassandra-default.yaml 파일의 스토리지 크기를 새 스토리지 크기로 업데이트합니다. overrides.yaml에 적용하려는 크기와 일치해야 합니다. 예를 들면 다음과 같습니다.
           resources:
              requests:
                storage: 100Gi
    5. 업데이트된 스토리지 크기로 statefulset 구성을 다시 적용합니다.
      kubectl apply -f apigee-cassandra-default.yaml
    6. statefulset가 올바르게 다시 생성되었는지 확인합니다.
      kubectl get sts -n apigee

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

      NAME                       READY   AGE
      apigee-cassandra-default   3/3     6m56s
  5. 재정의 파일을 pvc를 수정할 때 지정한 새 볼륨 크기로 업데이트합니다.
    cassandra:
      storage:
        capacity: 100Gi
  6. 클러스터에 업데이트된 구성을 적용합니다.
    ../apigeectl apply --datastore -f overrides/overrides.yaml
    Parsing file: config/values.yaml
    Parsing file: overrides/overrides.yaml
    cleansing older AD's (v1alpha1) istio resources...
    
    Invoking "kubectl apply" with YAML config...
    
    apigeedatastore.apigee.cloud.google.com/apigee-cassandra unchanged
  7. 컨트롤러 배포 복제본을 이전 상태(`1`)로 업데이트합니다.
    kubectl edit deployments -n apigee-system apigee-controller-manager
  8. 새로 만든 STS에 업데이트된 저장용량 크기가 있는지 확인합니다.
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  9. C* pod 데이터 볼륨이 새 크기로 업데이트되었는지 확인합니다.

    kubectl exec -n apigee -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
    /dev/sdb         99G   69M   99G   1% /opt/apigee/data