Cassandra CSI 백업 및 복원

CSI(컨테이너 스토리지 인터페이스) 스냅샷을 사용하여 하이브리드 데이터를 백업하고 복원할 수 있습니다. CSI 백업은 디스크 스냅샷을 생성하고 이를 클라우드 스토리지에 암호화된 데이터로 저장합니다. CSI 백업에서 백업 데이터를 저장하는 데 Google Cloud Storage 버킷이나 원격 서버가 필요하지 않습니다.

Google Cloud, AWS 또는 Azure에서 호스팅되는 하이브리드 인스턴스에서 CSI 백업을 사용하는 것이 좋습니다.

이 페이지에서는 하이브리드 CSI 백업 및 복원을 사용하는 단계를 설명합니다. 전반적인 하이브리드 백업 및 복원 개요는 Cassandra 백업 및 복원 개요를 참조하세요.

백업 및 복원 제한사항

CSI 백업 및 복원을 사용할 때 다음 제한사항에 유의하세요.

  • 구성된 스토리지 클래스에서 사용하는 CSI 드라이버는 CSI 스냅샷을 지원해야 합니다. 드라이버 정보는 이 Kubernetes CSI 드라이버 목록을 참조하세요.
  • 일부 플랫폼은 지원되지 않습니다. Google Cloud, AWS, Azure 플랫폼만 지원됩니다.
  • 볼륨 스냅샷 제한사항으로 인해 OpenShift Container Platform은 지원되지 않습니다.
  • 클라우드 플랫폼만 지원됩니다. 온프렘 플랫폼은 지원되지 않습니다.
  • CSI 백업 데이터와 CSI가 아닌 하이브리드 백업 데이터는 호환되지 않습니다. CSI가 아닌 백업을 CSI 복원과 함께 사용할 수 없으며 CSI 백업을 CSI가 아닌 복원과 함께 사용할 수 없습니다.
  • CSI 드라이버 공급업체에서 CSI 드라이버 설치 및 기능을 결정합니다.
  • 사용자는 CSI 스냅샷을 프로비저닝하는 데 적합한 클러스터 리소스를 사용할 수 있는지 확인할 책임이 있습니다.
  • 사용자는 이전 스냅샷 데이터를 제거할 책임이 있습니다.

CSI 백업 설정

CSI를 사용하여 하이브리드 백업을 예약하려면 다음 단계를 수행합니다.

  1. 이전에 하이브리드 백업을 설정하지 않은 경우 다음을 수행합니다.
    1. 다음 create-service-account 명령어를 실행하여 표준 roles/storage.objectAdmin 역할이 있는 Google Cloud 서비스 계정(SA)을 만듭니다. 이 SA 역할을 사용하면 백업 데이터를 Cloud Storage에 쓸 수 있습니다. 관리 도구에 적합한 디렉터리에서 다음 명령어를 실행합니다.
      • Helm 차트: $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
      • apigeectl: HYBRID_BASE_DIRECTORY/hybrid-files/
      ./tools/create-service-account --env non-prod --dir ./service-accounts

      이 명령어는 비프로덕션 환경에 사용할 apigee-non-prod라는 단일 서비스 계정을 만들고 다운로드한 키 파일을 ./service-accounts 디렉터리에 배치합니다.

      Google Cloud 서비스 계정에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

    2. create-service-account 명령어는 서비스 계정 비공개 키가 포함된 JSON 파일을 저장합니다. 파일은 명령어가 실행되는 동일한 디렉터리에 저장됩니다. 다음 단계에서는 이 파일의 경로가 필요합니다.
  2. overrides.yaml 파일을 엽니다. 재정의 파일 예시에 표시된 대로 다음 매개변수를 설정합니다.

    1. 아래 backup 블록에 표시된 일반 매개변수를 설정합니다. CSI가 아닌 하이브리드 백업 솔루션에 이러한 매개변수를 이미 설정한 경우 CSI 스냅샷에 동일한 매개변수를 사용할 수 있습니다. 각 값에 대한 자세한 내용은 백업 속성 참조 표를 참조하세요.

      backup의 경우:

      • 사용 설정: 예약된 백업을 사용 설정하려면 true로 설정합니다.
      • 이미지의 pullPolicy: Always로 설정합니다.
      • serviceAccountPath: 서비스 계정의 경로입니다.
      • 일정: 크론 표현식 일정을 제공합니다.
    2. CSI 관련 백업을 위해 다음 매개변수를 설정합니다.
      • Cassandra 스토리지 그룹 값: 구성된 Cassandra 스토리지 클래스는 CSI 백업 및 복원이 작동하도록 CSI 스냅샷을 지원해야 합니다. 스토리지 클래스에서 CSI 스냅샷을 지원하는지 확인하려면 다음 명령어를 실행하여 사용 가능한 스토리지 클래스를 가져옵니다.
        kubectl get sc
        각 스토리지 클래스에 대한 '프로비저닝 도구' 출력을 확인합니다. CSI를 사용하는 프로비저닝 도구에는 일반적으로 '.csi'가 있습니다. "pd.csi.storage.gke.io"와 같은 이름의 일부입니다. 이 Kubernetes CSI 드라이버 목록에서 프로비저닝 도구 이름을 찾으세요. 프로비저닝 도구의 '기타 기능' 열에 'SNAPSHOT'이라는 단어가 포함된 경우에는 프로비저닝 도구를 사용하는 스토리지 클래스에서 CSI 스냅샷을 지원합니다.

        스토리지 그룹에 이러한 매개변수를 추가합니다. 두 값 모두 필수입니다.

        • storageclass: CSI 스냅샷이 사용 설정된 스토리지 클래스 이름입니다.
        • 용량: 디스크의 용량
      • 클라우드 제공업체 유형:

        CSI 스냅샷 기능이 확인되면 CSI 백업과 복원을 사용하도록 재정의 파일을 수정합니다.

        • CloudProvider: backupcloudProviderrestoreCSI로 설정

백업 구성 예시

이 섹션에서는 예시 overrides.yaml 파일의 백업 관련 부분을 보여줍니다.
cassandra:
  hostNetwork: false
  replicaCount: 3
   storage:
    storageclass: standard-rwo
    capacity: 100Gi
  image:
     pullPolicy: Always

  backup:
   enabled: true
   image:
     pullPolicy: Always
   serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json"
   cloudProvider: "CSI"
   schedule: "0 * * 11 *"

수동 백업 실행

CSI 백업은 overrides.yaml 파일에 설정된 크론 일정에 따라 자동으로 생성됩니다.

수동 CSI 백업을 시작하려면 다음 명령어를 사용합니다.

kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup backup-pod-name
여기서 backup-pod-name은 생성될 백업 포드의 이름입니다.

백업 확인

백업이 성공적으로 생성되었는지 확인하는 한 가지 방법은 다음 명령어를 사용하여 Kubernetes 클러스터에서 볼륨 스냅샷을 확인하는 것입니다.

kubectl get volumesnapshot -n apigee

출력에 클러스터의 현재 스냅샷 목록이 표시됩니다. CSI 백업 프로세스는 각 Cassandra 디스크의 스냅샷을 만듭니다. 생성된 스냅샷 수는 클러스터의 Cassandra 포드 총개수와 일치해야 합니다.

백업 복원

이 프로세스를 사용하여 이전에 생성된 CSI 백업을 복원합니다. 백업 복원 및 프로세스 개요에 대한 일반적인 내용은 복원 개요 페이지를 참조하세요.

CSI 백업 복원을 시작하려면 하이브리드 비-CSI 단일 리전 복원 안내를 따르되 overrides.yamlrestore 블록에 이러한 값을 사용하세요. 각 값에 대한 자세한 내용은 백업 속성 참조 표를 참조하고 예시를 보려면 복원 구성 예시를 참조하세요.

  • 사용 설정: snapshotTimestamp 타임스탬프로 참조되는 백업에 복원을 사용 설정하려면 true로 설정합니다.
  • snapshotTimestamp: 이전 CSI 백업의 타임스탬프를 제공합니다.
  • serviceAccountPath: 서비스 계정의 경로입니다.
  • 이미지의 pullPolicy: Always로 설정합니다.

복원할 snapshotTimestamp 값을 찾으려면 다음 명령어를 실행하여 사용 가능한 스냅샷 목록을 가져옵니다.

kubectl get volumesnapshot -n apigee
반환된 목록에 있는 스냅샷 이름에는 타임스탬프가 포함됩니다.
pvc-us-west2-b-20220803004907-47beff0e306d8861
이 예시에서 타임스탬프는 20220803004907입니다.

복원 구성 예시

이 섹션에서는 예시 overrides.yaml 파일의 복원 관련 부분을 보여줍니다.
cassandra:
  hostNetwork: false
  replicaCount: 3
   storage:
    storageclass: standard-rwo
    capacity: 100Gi
  image:
     pullPolicy: Always

  restore:
    enabled: true
    snapshotTimestamp: "20220908222130"
    serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json"
    cloudProvider: "CSI"
    image:
      pullPolicy: Always

CSI 백업 및 복원으로 마이그레이션

이전에 하이브리드 백업 및 복원을 사용하지 않은 경우 CSI 백업 설정의 안내에 따라 이 섹션의 단계 없이 새 CSI 백업을 만들 수 있습니다. 다음 단계에서는 CSI가 아닌 백업 및 복원 솔루션에서 CSI 백업으로 마이그레이션하는 과정을 안내합니다.

  1. 현재 구성된 CSI가 아닌 백업 방법을 사용하여 새 백업을 생성합니다.
  2. 백업 구성 예시에 표시된 대로 CSI 백업 재정의를 사용하도록 하이브리드 overrides.yaml 파일에서 백업 구성을 변경합니다.
  3. overrides.yaml 파일의 변경사항을 적용합니다.

    Helm

    helm upgrade datastore apigee-datastore/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    apigeectl

    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml
  4. 백업 작업을 확인합니다.
    kubectl get cronjob -n apigee
  5. 백업 작업이 완료된 후 스냅샷이 생성되었는지 확인합니다. 생성된 스냅샷 수는 Hybrid 인스턴스의 Cassandra 노드 수와 동일해야 합니다.
    kubectl get volumesnapshot -n apigee