在远程服务器中安排备份

本页面介绍如何在不使用 Cloud Storage 的情况下为 Cassandra 计划备份。在此方法中,备份会存储在您指定的远程服务器上,而不是 Cloud Storage 存储桶中。Apigee 使用 SSH 与远程服务器通信。

您必须将备份安排为 cron 作业。将备份时间表应用于 Hybrid 集群后,系统会根据运行时平面中的时间表定期执行 Kubernetes 备份作业。该作业会与 Hybrid 集群中的每个 Cassandra pod 进行交互,以收集所有数据,创建数据的归档(压缩)文件,并将归档文件发送到 overrides.yaml 文件中指定的服务器。

以下步骤包括完成特定任务(例如创建 SSH 密钥对)的常见示例。使用适合您的安装的方法。

该流程包括以下几个部分:

设置服务器和 SSH

  1. 为您的备份指定 Linux 或 Unix 服务器。此服务器必须可从 Apigee Hybrid 运行时层面通过 SSH 访问。它必须有足够的存储空间来存储备份。
  2. 在服务器上设置 SSH 服务器,或确保该服务器已配置安全的 SSH 服务器。
  3. 创建 SSH 密钥对并将私钥文件存储在可从 Hybrid 运行时层面访问的路径中。您必须对密钥对使用空白密码,否则备份将失败。例如:
    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 形式的账号名称时,您可以快速识别哪个账号附带密钥。

  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

设置备份的时间表和目标位置

您可以在 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

    HYBRID

    对于远程服务器备份,请将此属性设置为 HYBRID

    backup:schedule

    SCHEDULE

    备份的开始时间,使用标准 crontab 语法指定。时间采用 Kubernetes 集群的本地时区。默认值:0 2 * * *

  2. 将备份配置应用于集群的存储范围:
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    其中,OVERRIDES_FILE 是您刚刚修改的替换文件的路径。

  3. 验证备份作业。例如:
    kubectl get cronjob -n APIGEE_NAMESPACE
    NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    apigee-cassandra-backup   33 * * * *   False     0        <none>          94s