Apigee Hybrid 1.9부터는 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를 사용하여 하이브리드 백업을 예약하려면 다음 단계를 수행합니다.
- 이전에 하이브리드 백업을 설정하지 않은 경우 다음을 수행합니다.
- 다음
create-service-account
명령어를 실행하여 표준roles/storage.objectAdmin
역할이 있는 Google Cloud 서비스 계정(SA)을 만듭니다. 이 SA 역할을 사용하면 백업 데이터를 Cloud Storage에 쓸 수 있습니다.hybrid-base-directory/hybrid-files
디렉터리에서 다음 명령어를 실행합니다../tools/create-service-account --env non-prod --dir ./service-accounts
이 명령어는 비프로덕션 환경에 사용할apigee-non-prod
라는 단일 서비스 계정을 만들고 다운로드한 키 파일을./service-accounts
디렉터리에 배치합니다. Google Cloud 서비스 계정에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요. create-service-account
명령어는 서비스 계정 비공개 키가 포함된 JSON 파일을 저장합니다. 파일은 명령어가 실행되는 동일한 디렉터리에 저장됩니다. 다음 단계에서는 이 파일의 경로가 필요합니다.
- 다음
overrides.yaml
파일을 엽니다. 재정의 파일 예시에 표시된 대로 다음 매개변수를 설정합니다.- 아래
backup
블록에 표시된 일반 매개변수를 설정합니다. CSI가 아닌 하이브리드 백업 솔루션에 이러한 매개변수를 이미 설정한 경우 CSI 스냅샷에 동일한 매개변수를 사용할 수 있습니다. 각 값에 대한 자세한 내용은 백업 속성 참조 표를 참조하세요.
backup
의 경우:- 사용 설정: 예약된 백업을 사용 설정하려면
true
로 설정합니다. - 이미지의 pullPolicy:
Always
로 설정합니다. - serviceAccountPath: 서비스 계정의 경로입니다.
- 일정: 크론 표현식 일정을 제공합니다.
- 사용 설정: 예약된 백업을 사용 설정하려면
- 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:
backup
의cloudProvider
와restore
를CSI
로 설정
- CloudProvider:
- Cassandra 스토리지 그룹 값: 구성된 Cassandra 스토리지 클래스는 CSI 백업 및 복원이 작동하도록 CSI 스냅샷을 지원해야 합니다. 스토리지 클래스에서 CSI 스냅샷을 지원하는지 확인하려면 다음 명령어를 실행하여 사용 가능한 스토리지 클래스를 가져옵니다.
- 아래
백업 구성 예시
이 섹션에서는 예시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.yaml
의 restore
블록에 이러한 값을 사용하세요.
각 값에 대한 자세한 내용은 백업 속성 참조 표를 참조하고 예시를 보려면 복원 구성 예시를 참조하세요.
- 사용 설정:
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 백업으로 마이그레이션하는 과정을 안내합니다.
- 현재 구성된 CSI가 아닌 백업 방법을 사용하여 새 백업을 생성합니다.
- 백업 구성 예시에 표시된 대로 CSI 백업 재정의를 사용하도록 하이브리드
overrides.yaml
파일에서 백업 구성을 변경합니다. overrides.yaml
파일의 변경사항을 적용합니다.
$APIGEECTL_HOME/apigeectl apply -f YOUR_OVERRIDES_FILE
- 백업 작업을 확인합니다.
kubectl get cronjob -n apigee
- 백업 작업이 완료된 후 스냅샷이 생성되었는지 확인합니다. 생성된 스냅샷 수는 Hybrid 인스턴스의 Cassandra 노드 수와 동일해야 합니다.
kubectl get volumesnapshot -n apigee