단일 리전에서 복원

이 페이지에서는 단일 리전에서 Cassandra를 복원하는 방법을 설명합니다.

단일 리전 배포에서 Apigee Hybrid는 단일 데이터 센터 또는 리전에 배포됩니다. 배포에 Apigee 조직이 여러 개 있으면 복원 프로세스가 모든 조직의 데이터를 복원합니다. 멀티 조직 설정의 경우 특정 조직을 복원할 수 없습니다.

백업에서 리전 복원

Apigee Hybrid에 사용 중인 관리 도구에 따라 아래 안내를 선택하세요.

Helm

  1. overrides.yaml 파일에서 Cassandra 복원 세부정보를 업데이트합니다.

    namespace: YOUR_RESTORE_NAMESPACE # Use the same 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: false
      ...

    각 항목의 의미는 다음과 같습니다.

    속성 설명
    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로 설정했다면 false로 설정해야 합니다.
    를 따르세요.
  2. 시작할 초기 클러스터가 없는 경우 Helm을 위한 하이브리드 리전 사용 중단 문서에 따라 기존 Hybrid 설치를 초기 상태로 전환합니다(인증서 관리자는 설치된 상태로 두어도 무방함). 이렇게 하면 11단계의 시작 부분까지 Helm 런타임 설정 설명서를 따랐을 때와 동일한 상태가 됩니다.

  3. Apigee 네임스페이스에 남은 포드가 없는지 확인합니다.

    kubectl get pods -n apigee
            kubectl get pods -n apigee-system
  4. CSI 백업을 사용하는 경우 다음을 실행하여 복원 프로세스에 사용할 볼륨 스냅샷이 표시되는지 확인합니다.

    kubectl get volumesnapshot -n apigee
              
  5. 설치 매뉴얼의 11단계에 설명된 대로 모든 Hybrid 구성요소를 하나씩 설치합니다. datastore 설치를 위한 명령어를 실행하면 apigee-cassandra-restore 포드가 생성되지만 apigee-org 구성요소를 설치한 후에만 running 상태로 전환됩니다.

Cassandra 백업 및 복원에 대한 자세한 내용은 Cassandra 백업 개요를 참조하세요.

apigeectl

구성에 따라 Cassandra 백업이 Cloud Storage 또는 원격 서버에 저장될 수 있습니다. 어느 경우든 다음 단계를 수행하여 복원합니다.

  1. 하이브리드 버전을 확인합니다.
    apigeectl version
    버전이 스토리지에 백업 파일을 만든 버전과 같은지 확인합니다.
  2. 복원할 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
  3. overrides.yaml 파일을 열고 restore 속성을 원하는 값으로 설정합니다.

    Cloud Storage

    매개변수

    namespace: YOUR_RESTORE_NAMESPACE # Use the same 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: false
        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: false
        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로 설정했다면 false로 설정해야 합니다.
    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 same 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: false
          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: false
          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로 설정했다면 false로 설정해야 합니다.
    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 * * *

  4. 새 하이브리드 런타임 배포를 생성합니다. 그러면 새 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 및 다른 모든 포드가 작동 중인지 확인합니다.

  1. apigeeds를 확인합니다.
    kubectl get apigeeds -n apigee
  2. 다른 모든 포드를 확인합니다.
    kubectl get pods -n apigee

복원과 런타임 구성요소 정상 여부 확인이 성공적으로 완료된 후 클러스터에서 백업을 구성하는 것이 좋습니다.

  1. overrides-restore.yaml 파일에서 restore 구성을 삭제합니다.
  2. backup 구성을 overrides-restore.yaml 파일에 추가합니다.
  3. 다음 명령어를 사용하여 backup 구성을 적용합니다.

    Helm

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

    apigeectl

    ./apigeectl apply -f ../overrides.yaml