9.8. 使用 OADP 为托管集群进行自动灾难恢复
在裸机或 Amazon Web Services (AWS) 平台上托管的集群中,您可以使用 OpenShift API 进行数据保护(OADP) Operator 自动执行一些备份和恢复步骤。
这个过程涉及以下步骤:
- 配置 OADP
- 定义数据保护应用程序(DPA)
- 备份数据平面工作负载
- 备份 control plane 工作负载
- 使用 OADP 恢复托管集群
9.8.1. 先决条件 复制链接链接已复制到粘贴板!
您必须在管理集群中满足以下先决条件:
- 已安装 OADP Operator。
- 您创建了存储类。
-
您可以使用
cluster-admin
权限访问集群。 - 您可以通过目录源访问 OADP 订阅。
- 您可以访问与 OADP 兼容的云存储供应商,如 S3、Microsoft Azure、Google Cloud Platform 或 MinIO。
- 在断开连接的环境中,您可以访问与 OADP 兼容的自托管存储供应商,如 Red Hat OpenShift Data Foundation 或 MinIO。
- 您的托管的 control plane pod 已启动并运行。
9.8.2. 配置 OADP 复制链接链接已复制到粘贴板!
如果您的托管集群位于 AWS 上,请按照"使用 Multicloud Object Gateway 配置 OpenShift API for Data Protection" 中的步骤来配置 OADP。
如果您的托管集群位于裸机平台上,请按照"配置 OpenShift API for Data Protection with AWS S3 兼容存储"中的步骤来配置 OADP。
9.8.3. 使用 DPA 自动化备份和恢复过程 复制链接链接已复制到粘贴板!
您可以使用数据保护应用程序(DPA)自动化备份和恢复过程的一部分。使用 DPA 时,暂停并重启资源协调的步骤是自动的。DPA 定义包括备份位置和 Velero pod 配置的信息。
您可以通过定义 DataProtectionApplication
对象来创建 DPA。
流程
如果使用裸机平台,您可以完成以下步骤来创建 DPA:
创建类似以下示例的清单文件:
例 9.3.
dpa.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPA 对象:
oc create -f dpa.yaml
$ oc create -f dpa.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
DataProtectionApplication
对象后,会在openshift-adp
命名空间中创建新的velero
部署和node-agent
pod。
如果使用 Amazon Web Services (AWS),您可以完成以下步骤来创建 DPA:
创建类似以下示例的清单文件:
例 9.4.
dpa.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 DPA 资源:
oc create -f dpa.yaml
$ oc create -f dpa.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
DataProtectionApplication
对象后,会在openshift-adp
命名空间中创建新的velero
部署和node-agent
pod。
后续步骤
- 备份数据平面工作负载。
9.8.4. 备份数据平面工作负载 复制链接链接已复制到粘贴板!
要使用 OADP Operator 备份数据平面工作负载,请参阅"恢复应用程序"。如果 data plane 工作负载不重要,您可以跳过这个过程。
9.8.5. 备份 control plane 工作负载 复制链接链接已复制到粘贴板!
您可以通过创建 Backup
自定义资源 (CR) 来备份 control plane 工作负载。
要监控并观察备份过程,请参阅"保留备份和恢复进程"。
流程
创建定义
Backup
CR 的 YAML 文件:例 9.5.
backup-control-plane.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
backup_resource_name
替换为您的Backup
资源的名称。 - 2
- 选择特定命名空间来备份对象。您必须包含托管集群命名空间和托管的 control plane 命名空间。
- 3
- 将
<hosted_cluster_namespace>
替换为托管集群命名空间的名称,如clusters
。 - 4
- 将
<hosted_control_plane_namespace>
替换为托管的 control plane 命名空间的名称,如cluster-hosted
。 - 5
- 您必须在单独的命名空间中创建
infraenv
资源。不要在备份过程中删除infraenv
资源。 - 6 7
- 启用 CSI 卷快照,并自动将 control plane 工作负载上传到云存储中。
- 8
- 将持久性卷 (PV) 的
fs-backup
备份方法设置为默认。当您使用 Container Storage Interface (CSI) 卷快照和fs-backup
方法的组合时,此设置很有用。
注意如果要使用 CSI 卷快照,您必须在 PV 中添加
backup.velero.io/backup-volumes-excludes=<pv_name>
注解。运行以下命令来应用
Backup
CR:oc apply -f backup-control-plane.yaml
$ oc apply -f backup-control-plane.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证
status.phase
的值是否为Completed
:oc get backups.velero.io <backup_resource_name> -n openshift-adp \ -o jsonpath='{.status.phase}'
$ oc get backups.velero.io <backup_resource_name> -n openshift-adp \ -o jsonpath='{.status.phase}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 使用 OADP 恢复托管集群。
9.8.6. 使用 OADP 恢复托管集群 复制链接链接已复制到粘贴板!
您可以通过创建 Restore
自定义资源(CR)来恢复托管集群。
-
如果您使用原位升级,则
InfraEnv
资源不需要备用节点。您需要从新的管理集群重新置备 worker 节点。 -
如果使用替换更新,则需要一些备用节点才能让
InfraEnv
资源部署 worker 节点。
备份托管集群后,您必须销毁它来启动恢复过程。要启动节点置备,您必须在删除托管集群前备份数据平面中的工作负载。
要监控并观察备份过程,请参阅"保留备份和恢复进程"。
流程
运行以下命令,验证托管的 control plane 命名空间中没有 pod 和持久性卷声明 (PVC):
oc get pod pvc -n <hosted_control_plane_namespace>
$ oc get pod pvc -n <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出
No resources found
No resources found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义
Restore
CR 的 YAML 文件:restore-hosted-cluster.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要您必须在单独的命名空间中创建
InfraEnv
资源。不要在恢复过程中删除InfraEnv
资源。InfraEnv
资源对于重新置备新节点是必需的。运行以下命令来应用
Restore
CR:oc apply -f restore-hosted-cluster.yaml
$ oc apply -f restore-hosted-cluster.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
status.phase
的值是否为Completed
:oc get hostedcluster <hosted_cluster_name> -n <hosted_cluster_namespace> \ -o jsonpath='{.status.phase}'
$ oc get hostedcluster <hosted_cluster_name> -n <hosted_cluster_namespace> \ -o jsonpath='{.status.phase}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.8.7. 观察备份和恢复过程 复制链接链接已复制到粘贴板!
当使用 OpenShift API for Data Protection (OADP) 来备份和恢复托管集群时,您可以监控并观察进程。
流程
运行以下命令观察备份过程:
watch "oc get backups.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
$ watch "oc get backups.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令观察恢复过程:
watch "oc get restores.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
$ watch "oc get restores.velero.io -n openshift-adp <backup_resource_name> -o jsonpath='{.status}'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令观察 Velero 日志:
oc logs -n openshift-adp -ldeploy=velero -f
$ oc logs -n openshift-adp -ldeploy=velero -f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,观察所有 OADP 对象的进度:
watch "echo BackupRepositories:;echo;oc get backuprepositories.velero.io -A;echo; echo BackupStorageLocations: ;echo; oc get backupstoragelocations.velero.io -A;echo;echo DataUploads: ;echo;oc get datauploads.velero.io -A;echo;echo DataDownloads: ;echo;oc get datadownloads.velero.io -n openshift-adp; echo;echo VolumeSnapshotLocations: ;echo;oc get volumesnapshotlocations.velero.io -A;echo;echo Backups:;echo;oc get backup -A; echo;echo Restores:;echo;oc get restore -A"
$ watch "echo BackupRepositories:;echo;oc get backuprepositories.velero.io -A;echo; echo BackupStorageLocations: ;echo; oc get backupstoragelocations.velero.io -A;echo;echo DataUploads: ;echo;oc get datauploads.velero.io -A;echo;echo DataDownloads: ;echo;oc get datadownloads.velero.io -n openshift-adp; echo;echo VolumeSnapshotLocations: ;echo;oc get volumesnapshotlocations.velero.io -A;echo;echo Backups:;echo;oc get backup -A; echo;echo Restores:;echo;oc get restore -A"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.8.8. 使用 velero CLI 描述备份和恢复资源 复制链接链接已复制到粘贴板!
当使用 OpenShift API 进行数据保护时,您可以使用 velero
命令行界面 (CLI) 获取 Backup
和 Restore
资源的更多详情。
流程
运行以下命令,创建一个别名,以便从容器中使用
velero
CLI:alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取
Restore
自定义资源 (CR) 的详情:velero restore describe <restore_resource_name> --details
$ velero restore describe <restore_resource_name> --details
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<restore_resource_name>
替换为Restore
资源的名称。
运行以下命令,获取
Backup
CR 的详情:velero restore describe <backup_resource_name> --details
$ velero restore describe <backup_resource_name> --details
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<backup_resource_name>
替换为Backup
资源的名称。