从 Apigee Hybrid 1.9 开始,您可以使用 CSI(容器存储接口)快照来备份和恢复 Hybrid 数据。CSI 备份会生成磁盘快照并将其作为加密数据存储在 Cloud Storage 中。CSI 备份不需要 Google Cloud Storage 存储桶或远程服务器即可存储备份数据。
建议对托管在 Google Cloud、AWS 或 Azure 中的 Hybrid 实例使用 CSI 备份。
本页面介绍使用 Hybrid CSI 备份和恢复的步骤。如需大致了解 Hybrid 备份和恢复,请参阅 Cassandra 备份和恢复概览。
备份和恢复限制
使用 CSI 备份和恢复时,请注意以下限制:
- 配置的存储类别使用的 CSI 驱动程序必须支持 CSI 快照。如需了解驱动程序信息,请参阅此 Kubernetes CSI 驱动程序列表。
- 并非所有平台都受支持。仅支持 Google Cloud、AWS 和 Azure 平台。
- 由于卷快照限制,不支持 OpenShift Container Platform。
- 仅支持云平台。不支持本地平台。
- CSI 备份数据与非 CSI Hybrid 备份数据不兼容。非 CSI 备份不能用于 CSI 恢复,CSI 备份不能用于非 CSI 恢复。
- CSI 驱动程序安装和运行由 CSI 驱动程序供应商负责。
- 用户负责确保有足够的集群资源可用于预配 CSI 快照。
- 用户负责移除旧快照数据。
设置 CSI 备份
如需使用 CSI 安排 Hybrid 备份,请执行以下步骤:
- 如果您之前未设置 Hybrid 备份:
- 运行以下
create-service-account
命令以创建具有标准roles/storage.objectAdmin
角色的 Google Cloud 服务账号 (SA)。此 SA 角色允许您将备份数据写入 Cloud Storage。在hybrid-base-directory/hybrid-files
目录中执行以下命令:./tools/create-service-account --env non-prod --dir ./service-accounts
此命令会创建一个名为apigee-non-prod
的服务账号以用于非生产环境,并将下载的密钥文件放在./service-accounts
目录中。 如需详细了解 Google Cloud 服务账号,请参阅创建和管理服务账号。 create-service-account
命令会保存包含服务账号私钥的 JSON 文件。该文件会保存在执行命令的目录中。执行以下步骤将需要此文件的路径。
- 运行以下
- 打开您的
overrides.yaml
文件。设置以下参数,如替换文件示例所示。- 在
backup
块中设置如下所示的常规参数。如果您已为非 CSI Hybrid 备份解决方案设置这些参数,则可以为 CSI 快照使用相同的参数。如需详细了解每个值,请参阅备份属性参考表。
对于
backup
:- enabled:设置为
true
以启用计划备份。 - pullPolicy in image:设置为
Always
。 - serviceAccountPath:服务账号的路径。
- schedule:提供 cron 表达式时间表。
- enabled:设置为
- 为 CSI 专用备份设置以下参数:
- Cassandra 存储组值:已配置的 Cassandra 存储类别必须支持 CSI 快照,才能进行 CSI 备份和恢复。如需检查存储类别是否支持 CSI 快照,请运行以下命令获取可用的存储类别:
kubectl get sc
查看每个存储类别的“Provisioner”输出。使用 CSI 的预配工具名称中通常具有“.csi”部分,例如“pd.csi.storage.gke.io”。在此 Kubernetes CSI 驱动程序列表中查找预配工具名称。如果预配工具的“Other Features”列包含“SNAPSHOT”一词,则使用该预配工具的存储类别支持 CSI 快照。在存储组中添加这些参数。这两个值都是必填的。
- storageclass::支持 CSI 快照的存储类别名称。
- capacity:磁盘的容量。
- 云服务商类型:
验证 CSI 快照容量后,修改替换文件以使用 CSI 备份和恢复:
- cloudProvider:将
backup
和restore
中的cloudProvider
设置为CSI
。
- cloudProvider:将
- Cassandra 存储组值:已配置的 Cassandra 存储类别必须支持 CSI 快照,才能进行 CSI 备份和恢复。如需检查存储类别是否支持 CSI 快照,请运行以下命令获取可用的存储类别:
- 在
备份配置示例
本部分展示了示例overrides.yaml
文件的备份相关部分。cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json" cloudProvider: "CSI" schedule: "0 * * 11 *"
启动手动备份
CSI 备份会根据 overrides.yaml
文件中设置的 Cron 时间表自动生成。
如需启动手动 CSI 备份,请使用以下命令:
kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup backup-pod-name其中
backup-pod-name
是将要创建的备份 pod 的名称。
验证备份
验证备份创建成功的一种方法是使用以下命令检查 Kubernetes 集群上的卷快照:
kubectl get volumesnapshot -n apigee
输出会显示集群上的当前快照列表。CSI 备份过程会为每个 Cassandra 磁盘创建快照。生成的快照数量应与集群中的 Cassandra Pod 总数一致。
恢复备份
使用此过程恢复之前生成的 CSI 备份。如需了解有关恢复备份的一般信息以及流程概览,请参阅恢复概览页面。
如需启动 CSI 备份的恢复,请按照 Hybrid 非 CSI 单区域恢复的说明操作,但在 overrides.yaml
的 restore
块中使用以下值。请参阅备份属性参考表了解每个值的详细信息,并参阅恢复配置示例查看示例。
- enabled:设置为
true
以启用使用snapshotTimestamp
时间戳引用的备份的恢复。 - snapshotTimestamp:提供先前 CSI 备份的时间戳。
- serviceAccountPath:服务账号的路径。
- pullPolicy in image:设置为
Always
。
如需查找要恢复的 snapshotTimestamp
值,请运行以下命令以获取可用快照的列表:
kubectl get volumesnapshot -n apigee在返回的列表中,快照的名称包含时间戳:
pvc-us-west2-b-20220803004907-47beff0e306d8861在此示例中,时间戳为
20220803004907
。
恢复配置示例
本部分展示了示例overrides.yaml
文件的恢复相关部分。cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json" cloudProvider: "CSI" image: pullPolicy: Always
迁移到 CSI 备份和恢复
如果您之前没有使用过 Hybrid 备份和恢复,则可以按照设置 CSI 备份中的说明创建新的 CSI 备份,无需执行本部分中的步骤。以下步骤将指导您从非 CSI 备份和恢复解决方案迁移到 CSI 备份。
- 使用当前配置的非 CSI 备份方法生成新的备份。
- 示例备份配置中所示。
- 在
overrides.yaml
文件中应用更改:
$APIGEECTL_HOME/apigeectl apply -f YOUR_OVERRIDES_FILE
- 验证备份作业:
kubectl get cronjob -n apigee
- 备份作业完成后,验证快照已创建。生成的快照数量应与 Hybrid 实例中的 Cassandra 节点数量相同。
kubectl get volumesnapshot -n apigee