단일 리전에서 복원

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

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

백업에서 리전 복원

구성에 따라 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 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 * * *

  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
  5. 복원 작업 진행 상황을 확인하고 apigeeds 및 다른 모든 포드가 작동 중인지 확인합니다.
    • apigeeds를 확인하려면 다음 안내를 따르세요.
      kubectl get apigeeds -n apigee
    • 다른 모든 포드를 확인하려면 다음 안내를 따르세요.
      kubectl get pods -n apigee

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

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