不使用 Google Cloud 進行備份與復原

本節將說明如何使用 SSH 和檔案系統,而非 Google Cloud,設定 Cassandra 資料庫的備份和復原作業。另請參閱:

如果沒有 Google Cloud 服務,如何備份及還原 Cassandra?

如果備份時不使用 Cloud Services,系統會將 Cassandra 資料庫備份到您指定伺服器檔案系統中的壓縮檔。備份作業會按照您在覆寫檔案中指定的排程進行。與伺服器的連線是透過安全的 SSH。

設定不使用雲端服務的備份:

下列步驟包含完成特定工作的常見範例,例如建立 SSH 金鑰組。請使用適合安裝作業的方法。

這項程序包含下列部分:

設定伺服器和 SSH

  1. 為備份作業指定 Linux 或 Unix 伺服器。這個伺服器必須可透過 SSH 從 Apigee Hybrid 執行階段層存取。儲存空間必須足以容納備份項目。
  2. 在伺服器上設定 SSH 伺服器,或確保伺服器已設定安全的 SSH 伺服器。
  3. 建立 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]-----+
  4. 在備份伺服器上建立名為「apigee」的使用者帳戶。請確認新的「apigee」使用者在 /home 下方有主目錄。
  5. 在備份伺服器上,於新的 /home/apigee 目錄中建立「ssh」目錄。
  6. 將公開金鑰 (上一個範例中的 ssh_key.pub) 複製到新 /home/apigee/ssh 目錄中名為「authorized_keys」的檔案。例如:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. 在備份伺服器上,於 /home/apigee/ 目錄中建立備份目錄。備份目錄可以是任何目錄,只要「apigee」使用者有權存取即可。例如:
    cd /home/apigee
    mkdir cassandra-backup
  8. 測試連線。請務必確認 Cassandra Pod 可以透過 SSH 連線至備份伺服器:
    1. 登入 Cassandra pod 的殼層。例如:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash

      其中 apigee-cassandra-default-0 是 Cassandra Pod 的名稱。將此值變更為要從中連線的 Pod 名稱。

    2. 使用伺服器 IP 位址,透過 SSH 連線至備份伺服器:
      ssh 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: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
         server: "34.56.78.90"
         storageDirectory: "/home/apigee/cassbackup"
         cloudProvider: "HYBRID"
         schedule: "0 2 * * *"
    

    其中:

    屬性 說明
    backup:enabled 備份功能預設為停用。您必須將這項屬性設為 true
    path-to-private-key-file 本機檔案系統中安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中,該檔案名為 ssh_key)。
    backup-server-ip 備份伺服器的 IP 位址。
    backup-directory 備份伺服器上的備份目錄名稱。這必須是 home/apigee 內的目錄 (備份目錄在建立備份目錄的步驟中命名為 cassandra_backup)。
    HYBRID cloudProvider: "HYBRID" 屬性為必填欄位。
    schedule 備份開始時間,以標準 crontab 語法指定。預設值:0 2 * * *

    注意:請避免在將備份設定套用至叢集後不久,就排定備份作業。套用備份設定後,Kubernetes 會重新建立 Cassandra 節點。如果備份作業在節點重新啟動前開始 (可能需要幾分鐘),備份作業就會失敗。

  2. 使用 apigeectl 將備份設定套用至叢集的儲存空間範圍:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-file

    其中 your-overrides-file 是指您剛編輯的覆寫檔案路徑。

設定還原作業

還原作業會從您指定時間戳記的備份檔案中擷取資料,並還原至具有相同 Pod 數量的全新 Cassandra 叢集。新叢集的命名空間必須與執行階段平面叢集不同。

如要還原 Cassandra 備份,請按照下列步驟操作:

  1. 建立具有新命名空間的 Kubernetes 叢集。您無法使用與原始混合式安裝相同的叢集/命名空間。
  2. 在根混合式安裝目錄中,建立新的 overrides-restore.yaml 檔案。
  3. 將原始 overrides.yaml 檔案中的完整 Cassandra 設定複製到新檔案。
  4. 在 overrides-restore.yaml 檔案中新增下列參數:

    參數

    namespace: restore-namespace
    
    cassandra:
      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: "backup-to-restore"
    

    範例

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

    其中:

    屬性 說明
    restore-namespace 新 Cassandra 叢集的新命名空間名稱。 請勿使用原始叢集所用的命名空間。
    restore:enabled 還原功能預設為停用。您必須將這項屬性設為 true
    path-to-private-key-file 本機檔案系統中安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中,該檔案名為 ssh_key)。
    backup-server-ip 備份伺服器的 IP 位址。
    backup-directory 備份伺服器上的備份目錄名稱。這必須是 home/apigee 內的目錄 (備份目錄在建立備份目錄的步驟中命名為 cassandra_backup)。
    HYBRID cloudProvider: "HYBRID" 屬性為必填欄位。
    backup-to-restore 要還原的特定備份,以標準 crontab 語法指定 (不允許使用萬用字元)。
  5. 使用 apigeectl 將備份設定套用至叢集的儲存空間範圍:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-restore-file

    其中 your-overrides-restore-file 是指您剛編輯的 overrides-restore.yaml 檔案路徑。