이 페이지에서는 단일 리전에서 Cassandra를 복원하는 방법을 설명합니다.
단일 리전 배포에서 Apigee Hybrid는 단일 데이터 센터 또는 리전에 배포됩니다. 배포에 Apigee 조직이 여러 개 있으면 복원 프로세스가 모든 조직의 데이터를 복원합니다. 멀티 조직 설정의 경우 특정 조직을 복원할 수 없습니다.
백업에서 리전 복원
구성에 따라 Cassandra 백업이 Cloud Storage 또는 원격 서버에 저장될 수 있습니다. 어느 경우든 다음 단계를 수행하여 복원합니다.
- 하이브리드 버전을 확인합니다.
버전이 스토리지에 백업 파일을 만든 것과 동일한 버전인지 확인합니다.apigeectl version
- 복원할 Kubernetes 클러스터에 이전 Apigee Hybrid 설치가 없는지 확인합니다. 기존 클러스터로 복원하는 경우 다음 명령어를 사용하여 기존 Apigee Hybrid 설치를 삭제합니다.
apigeectl delete -f overrides.yaml
kubectl -n apigee get apigeedatastore,apigeeredis,apigeetelemetry,org,env,arc # The output should be empty.
apigeectl delete --all -f overrides.yaml
overrides.yaml
파일을 열고restore
속성을 원하는 값으로 설정합니다.Cloud Storage
매개변수
namespace: YOUR_RESTORE_NAMESPACE # Use the namespace as in your original cluster. cassandra: hostNetwork: false ... restore: enabled: true serviceAccountPath: "SA_JSON_FILE_PATH" dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH" cloudProvider: "GCP" # required verbatim "GCP" (all caps) snapshotTimestamp: "TIMESTAMP" ... backup: enabled: true serviceAccountPath: "SA_JSON_FILE_PATH" dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH" cloudProvider: "GCP" # required verbatim "GCP" (all caps) schedule: "SCHEDULE"
예시
namespace: apigee cassandra: hostNetwork: false ... restore: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" snapshotTimestamp: "20201001183903" ... backup: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" schedule: "0 2 * * *" ...
각 항목의 의미는 다음과 같습니다.
속성 설명 namespace
YOUR_RESTORE_NAMESPACE
복원할 네임스페이스입니다. 네임스페이스를 원래 클러스터에서와 같이 사용합니다.
cassandra:hostNetwork
hostNetwork
은 필수이며 항상false
로 설정해야 합니다.restore:enabled
복원은 기본적으로 사용 중지되어 있습니다. 이 속성을 true
로 설정해야 합니다.restore:serviceAccountPath
SA_JSON_FILE_PATH
백업용으로 만든 서비스 계정의 파일 시스템 경로입니다.
restore:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
백업 데이터가
gs://BUCKET_NAME
형식으로 저장되는 Cloud Storage 버킷 경로입니다.gs://
는 필수 항목입니다.restore:cloudProvider
GCP
cloudProvider: "GCP"
속성은 필수입니다.restore:snapshotTimestamp
TIMESTAMP
복원할 백업 스냅샷의 타임스탬프입니다. 사용할 수 있는 타임스탬프를 확인하려면
dbStorageBucket
으로 이동하여 버킷에 있는 파일을 확인합니다. 각 파일 이름에는 타임스탬프 값이 포함됩니다. 예를 들면backup_20210203213003_apigee-cassandra-default-0.tgz
입니다.여기서 20210203213003은 해당 시점에 생성된 백업을 복원하려는 경우에 사용하는
snapshotTimestamp
값입니다.backup:enabled
백업은 기본적으로 사용 중지되어 있습니다. 이 속성을 true
로 설정해야 합니다.backup:serviceAccountPath
SA_JSON_FILE_PATH
./tools/create-service-account
를 실행할 때 다운로드된 서비스 계정 JSON 파일의 파일 시스템 경로입니다.backup:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
gs://BUCKET_NAME
형식의 Cloud Storage 버킷 경로입니다.gs://
는 필수 항목입니다.backup:cloudProvider
GCP
cloudProvider: "GCP"
속성은 필수입니다.backup:schedule
SCHEDULE
백업이 시작되는 시간이며 표준 crontab 구문에 지정되어 있습니다. 기본값:
0 2 * * *
비 Cloud Storage
매개변수
namespace: YOUR_RESTORE_NAMESPACE # Use the namespace as in your original cluster. cassandra: hostNetwork: false ... restore: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) snapshotTimestamp: "TIMESTAMP" ... backup: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) schedule: "SCHEDULE"
예시
namespace: apigee cassandra: hostNetwork: false ... restore: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" snapshotTimestamp: "20201001183903" ... backup: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *" ...
각 항목의 의미는 다음과 같습니다.
속성 설명 namespace
YOUR_RESTORE_NAMESPACE
복원할 네임스페이스입니다. 네임스페이스를 원래 클러스터에서와 같이 사용합니다.
cassandra:hostNetwork
hostNetwork
은 필수이며 항상false
로 설정해야 합니다.restore:enabled
복원은 기본적으로 사용 중지되어 있습니다. 이 속성을 true
로 설정해야 합니다.restore:keyFile
PATH_TO_PRIVATE_KEY_FILE
로컬 파일 시스템의 SSH 비공개 키 파일(SSH 키 쌍 생성 단계에서 만든
ssh_key
라는 이름의 파일) 경로입니다.restore:server
BACKUP_SERVER_IP
백업 서버의 IP 주소입니다.
restore:storageDirectory
BACKUP_DIRECTORY
백업 서버의 백업 디렉터리 이름입니다. 이는
home/apigee
내의 디렉터리여야 하며, 백업 디렉터리의 이름은 백업 디렉터리 생성 단계에서 만든cassandra_backup
입니다.restore:cloudProvider
HYBRID
cloudProvider: "HYBRID"
속성은 필수입니다.restore:snapshotTimestamp
TIMESTAMP
복원할 백업 스냅샷의 타임스탬프입니다. 사용할 수 있는 타임스탬프를 확인하려면
dbStorageBucket
으로 이동하여 버킷에 있는 파일을 확인합니다. 각 파일 이름에는 타임스탬프 값이 포함됩니다. 예를 들면backup_20210203213003_apigee-cassandra-default-0.tgz
입니다.여기서 20210203213003은 해당 시점에 생성된 백업을 복원하려는 경우에 사용하는
snapshotTimestamp
값입니다.backup:enabled
백업은 기본적으로 사용 중지되어 있습니다. 이 속성을 true
로 설정해야 합니다.backup:keyFile
PATH_TO_PRIVATE_KEY_FILE
로컬 파일 시스템의 SSH 비공개 키 파일(SSH 키 쌍 생성 단계에서 만든
ssh_key
라는 이름의 파일) 경로입니다.backup:server
BACKUP_SERVER_IP
백업 서버의 IP 주소입니다.
backup:storageDirectory
BACKUP_DIRECTORY
백업 서버의 백업 디렉터리 이름입니다. 이는
home/apigee
내의 디렉터리여야 하며, 백업 디렉터리의 이름은 백업 디렉터리 생성 단계에서 만든cassandra_backup
입니다.backup:cloudProvider
HYBRID
cloudProvider: "HYBRID"
속성은 필수입니다.backup:schedule
SCHEDULE
백업이 시작되는 시간이며 표준 crontab 구문에 지정되어 있습니다. 기본값:
0 2 * * *
- 새 하이브리드 런타임 배포를 생성합니다. 그러면 새 Cassandra 클러스터가 생성되고 백업 데이터가 클러스터로 복원되기 시작합니다.
${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --restore
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
- 복원 작업 진행 상황을 확인하고
apigeeds
및 다른 모든 포드가 작동 중인지 확인합니다.apigeeds
를 확인하려면 다음 안내를 따르세요.kubectl get apigeeds -n apigee
- 다른 모든 포드를 확인하려면 다음 안내를 따르세요.
kubectl get pods -n apigee
복원과 런타임 구성요소 정상 여부 확인이 성공적으로 완료된 후 클러스터에서 백업을 구성하는 것이 좋습니다.
overrides-restore.yaml
파일에서restore
구성을 삭제합니다.backup
구성을overrides-restore.yaml
파일에 추가합니다.- 다음 명령어를 사용하여
backup
구성을 적용합니다../apigeectl apply -f ../overrides-restore.yaml