원격 서버에서 백업 예약

이 페이지에서는 Cloud Storage 없이 Cassandra에 대해 백업을 예약하는 방법을 보여줍니다. 이 방법의 경우 Cloud Storage 버킷 대신 사용자가 지정한 원격 서버에 백업이 저장됩니다. Apigee는 SSH를 사용해서 원격 서버와 통신합니다.

백업을 cron 작업으로 예약해야 합니다. 백업 일정이 하이브리드 클러스터에 적용되면 런타임 영역의 일정에 따라 Kubernetes 백업 작업이 주기적으로 실행됩니다. 노드의 모든 데이터를 수집하고, 데이터의 아카이브(압축) 파일을 만들고, 아카이브를 overrides.yaml 파일에 지정된 서버로 전송하는 하이브리드 클러스터에서 각 Cassandra 노드에서 백업 스크립트를 트리거합니다.

다음 단계에서는 SSH 키 쌍 만들기와 같은 특정 작업을 완료하기 위한 일반적인 예시가 포함되어 있습니다. 설치에 적합한 방법을 사용합니다.

절차는 다음과 같습니다.

서버 및 SSH 설정

  1. 백업 서버 선택: 백업에 적절한 스토리지가 있는 Linux 또는 Unix 서버를 선택하고 Apigee Hybrid 런타임 영역에서 SSH를 통해 액세스할 수 있는지 확인합니다.
  2. SSH 서버 구성: SSH 서버를 설치하거나 기존 SSH 서버가 안전한지 확인합니다.
  3. SSH 키 쌍 만들기: 암호 없이 SSH 키 쌍을 생성합니다. 예를 들면 다음과 같습니다.
    ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
      Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key
      Enter passphrase (empty for no passphrase):
      Enter same passphrase again:
      Your identification has been saved in ssh_key
      Your public key has been saved in ssh_key.pub
      The key fingerprint is:
      SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com
      The key's randomart image is:
      +---[RSA 4096]----+
      |          +.  ++X|
      |     .   . o.=.*+|
      |    . o . . o==o |
      |   . . . =oo+o...|
      |  .     S +E oo .|
      |   . .   .. . o .|
      |    . . .  . o.. |
      |     .  ...o ++. |
      |      .. .. +o+. |
      +----[SHA256]-----+

    여기서 exampleuser@example.com은 문자열입니다. ssh-keygen 명령어에서 -C 뒤에 오는 모든 문자열은 새로 만든 ssh 키에 포함된 주석이 됩니다. 입력 문자열은 어떤 문자열이든 가능합니다. exampleuser@example.com 형식의 계정 이름을 사용하면 키와 함께 사용될 계정을 빠르게 식별할 수 있습니다.

    이 명령어는 비공개 키 파일(예: `ssh_key.rsa`)과 공개 키 파일(예: `ssh_key.pub`)이라는 두 개의 SSH 키 파일을 생성합니다.

    런타임 영역에서 액세스할 수 있는 위치에 비공개 키를 저장합니다.

  4. 사용자 계정 추가: 백업 서버에서 /home/apigee 아래에 홈 디렉터리가 있는 apigee라는 사용자를 만듭니다. 새 apigee 사용자가 /home에 홈 디렉터리를 가지고 있는지 확인합니다.
  5. .ssh 디렉터리 설정: 백업 서버의 /home/apigee/.ssh.ssh 디렉터리를 만듭니다. 예를 들면 다음과 같습니다.
    cd /home/apigee
          mkdir .ssh
          cd .ssh
          vi authorized_keys
  6. 공개 키 설치: 공개 키를 /home/apigee/ 디렉터리의 authorized_keys 파일에 배치합니다. 백업 디렉터리는 apigee 사용자가 액세스할 수 있는 디렉터리면 모두 됩니다.ssh public key 파일의 콘텐츠를 파일에 붙여넣습니다.
  7. SSH 액세스 확인: 로컬 머신 또는 클러스터 노드에서 연결을 테스트합니다.
  8. ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP

백업 일정 및 위치 설정

overrides.yaml 파일에서 백업 일정 및 대상을 설정합니다.

  1. overrides.yaml 파일에 다음 매개변수를 추가합니다.

    매개변수

    cassandra:
      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"

    cassandra:
      backup:
        enabled: true
        keyFile: "private.key" # path relative to apigee-datastore path
        server: "34.56.78.90"
        storageDirectory: "/home/apigee/cassbackup"
        cloudProvider: "HYBRID"
        schedule: "0 2 * * *"

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

    속성 설명
    backup:enabled 백업은 기본적으로 사용 중지되어 있습니다. 이 속성을 true로 설정해야 합니다.
    backup:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    로컬 파일 시스템의 SSH 비공개 키 파일(SSH 키 쌍 생성 단계에서 만든 ssh_key라는 이름의 파일) 경로입니다. 이 경로는 apigee-datastore 차트 디렉터리를 기준으로 합니다.

    backup:server

    BACKUP_SERVER_IP

    백업 서버의 IP 주소입니다.

    backup:storageDirectory

    BACKUP_DIRECTORY

    백업 서버의 백업 디렉터리 이름입니다. 이는 home/apigee 내의 디렉터리여야 하며, 백업 디렉터리의 이름은 백업 디렉터리 생성 단계에서 만든 cassandra_backup입니다.

    backup:cloudProvider

    GCP/HYBRID

    Cloud Storage 백업의 경우 속성을 GCP로 설정합니다. 예를 들면 cloudProvider: "GCP"입니다.

    원격 서버 백업의 경우 속성을 HYBRID로 설정합니다. 예를 들면 cloudProvider: "HYBRID"입니다.

    backup:schedule

    SCHEDULE

    백업이 시작되는 시간이며 표준 crontab 구문에 지정되어 있습니다. 시간은 Kubernetes 클러스터의 현지 시간대로 표시됩니다. 기본값: 0 2 * * *

  2. 백업 구성을 클러스터의 스토리지 범위에 적용합니다.
    helm upgrade datastore apigee-datastore/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    여기서 OVERRIDES_FILE은 방금 수정한 재정의 파일의 경로입니다.

  3. 백업 작업을 확인합니다. 예를 들면 다음과 같습니다.
    kubectl get cronjob -n apigee
    NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    apigee-cassandra-backup   33 * * * *   False     0        <none>          94s

문제 해결

  1. Cassandra 포드에서 연결을 테스트합니다. Cassandra 포드가 SSH를 사용하여 백업 서버에 연결할 수 있는지 확인해야 합니다.
    1. Cassandra 포드의 셸에 로그인합니다. 예를 들면 다음과 같습니다.
      kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash

      여기서 APIGEE_CASSANDRA_DEFAULT_0은 Casandra 포드의 이름입니다. 이를 연결하려는 포드의 이름으로 변경하세요.

    2. Cassandra 포드와 서버 IP 주소를 마운트한 비공개 SSH 키를 사용하여 SSH를 통해 백업 서버에 연결합니다.
      ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
  2. Cassandra 포드에서 원격 서버에 액세스하는 데 문제가 있는 경우 원격 서버의 SSH 구성을 다시 확인하고 데이터 스토어 업그레이드가 성공했는지 확인하세요.
  3. Cassandra 포드에 로그인한 상태에서 다음 명령어를 실행하여 Cassandra가 올바른 비공개 키를 사용하는지 확인하고 생성한 비공개 키와 출력을 비교할 수 있습니다.
    cat /var/secrets/keys/key