简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

数据保护

贡献者

了解 NetApp 存储平台提供的数据保护和可恢复性选项。Astra Trident 可以配置可利用其中某些功能的卷。对于具有持久性要求的每个应用程序,您都应制定一个数据保护和恢复策略。

备份 etcd 集群数据

Astra Trident会将其元数据存储在Kubernetes集群中 etcd 数据库。定期备份 etcd 集群数据对于在发生灾难时恢复Kubernetes集群非常重要。

步骤
  1. etcdctl snapshot save 命令用于为创建的时间点快照 etcd 集群:

    sudo docker run --rm -v /backup:/backup \
      --network host \
      -v /etc/kubernetes/pki/etcd:/etc/kubernetes/pki/etcd \
      --env ETCDCTL_API=3 \
      registry.k8s.io/etcd-amd64:3.2.18 \
      etcdctl --endpoints=https://127.0.0.1:2379 \
      --cacert=/etc/kubernetes/pki/etcd/ca.crt \
      --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
      --key=/etc/kubernetes/pki/etcd/healthcheck-client.key \
      snapshot save /backup/etcd-snapshot.db

    此命令可通过旋转etcd容器来创建etcd快照、并将其保存在中 /backup 目录。

  2. 发生灾难时,您可以使用 etcd 快照启动 Kubernetes 集群。使用 etcdctl snapshot restore 命令以还原创建到的特定快照 /var/lib/etcd 文件夹。还原后、确认是否存在 /var/lib/etcd 文件夹中已填充 member 文件夹。以下是的示例 etcdctl snapshot restore 命令:

    etcdctl snapshot restore '/backup/etcd-snapshot-latest.db' ; mv /default.etcd/member/ /var/lib/etcd/
  3. 在初始化 Kubernetes 集群之前,请复制所有必要的证书。

  4. 使用创建集群 --ignore-preflight-errors=DirAvailable—​var-lib-etcd 标志。

  5. 集群启动后,请确保 Kube-system Pod 已启动。

  6. 使用 kubectl get crd 用于验证Trident创建的自定义资源是否存在的命令、并检索Trident对象以确保所有数据可用。

使用 ONTAP 快照恢复日期

快照通过为应用程序数据提供时间点恢复选项发挥着重要作用。但是,快照本身并不是备份,它们无法防止存储系统故障或其他灾难。但是,在大多数情况下,它们是一种方便,快速和轻松的数据恢复方式。了解如何使用 ONTAP 快照技术为卷创建备份以及如何还原这些备份。

  • 如果未在后端定义快照策略、则默认使用 none 策略。这会导致 ONTAP 不会自动创建快照。但是,存储管理员可以通过 ONTAP 管理界面手动创建快照或更改快照策略。这不会影响 Trident 操作。

  • 默认情况下, Snapshot 目录处于隐藏状态。这有助于最大程度地提高使用配置的卷的兼容性 ontap-nasontap-nas-economy 驱动程序。启用 .snapshot 目录 ontap-nasontap-nas-economy 支持应用程序直接从快照恢复数据的驱动程序。

  • 使用将卷还原到先前快照中记录的状态 volume snapshot restore ONTAP 命令行界面命令。还原快照副本时,还原操作会覆盖现有卷配置。创建 Snapshot 副本后对卷中数据所做的任何更改都将丢失。

cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive

使用 ONTAP 复制数据

复制数据在防止存储阵列故障导致的数据丢失方面发挥着重要作用。

备注 要了解有关 ONTAP 复制技术的详细信息,请参见 "ONTAP 文档"

SnapMirror Storage Virtual Machine ( SVM )复制

您可以使用 "SnapMirror" 复制完整的 SVM ,其中包括其配置设置及其卷。发生灾难时,您可以激活 SnapMirror 目标 SVM 以开始提供数据。系统还原后,您可以切换回主系统。

Astra Trident 无法自行配置复制关系,因此存储管理员可以使用 ONTAP 的 SnapMirror SVM 复制功能将卷自动复制到灾难恢复( Disaster Recovery , DR )目标。

如果您计划使用 SnapMirror SVM 复制功能或当前正在使用此功能,请考虑以下事项:

  • 您应为每个 SVM 创建一个单独的后端,此后端已启用 SVM-DR 。

  • 您应配置存储类,以便在需要时不选择复制的后端。这一点对于避免将不需要复制关系保护的卷配置到支持 SVM-DR 的后端非常重要。

  • 应用程序管理员应了解与复制数据相关的额外成本和复杂性,在利用数据复制之前,应确定恢复计划。

  • 在激活 SnapMirror 目标 SVM 之前,请停止所有计划的 SnapMirror 传输,中止所有正在进行的 SnapMirror 传输,中断复制关系,停止源 SVM ,然后启动 SnapMirror 目标 SVM 。

  • Astra Trident 不会自动检测 SVM 故障。因此、发生故障时、管理员应运行 tridentctl backend update 用于触发Trident故障转移到新后端的命令。

下面简要介绍了 SVM 设置步骤:

  • 在源和目标集群以及 SVM 之间设置对等关系。

  • 使用创建目标SVM -subtype dp-destination 选项

  • 创建复制作业计划以确保按所需时间间隔进行复制。

  • 使用创建从目标SVM到源SVM的SnapMirror复制 -identity-preserve true 选项、以确保源SVM配置和源SVM接口复制到目标。从目标 SVM 初始化 SnapMirror SVM 复制关系。

显示了设置 SVM 所涉及的步骤。

Trident 的灾难恢复工作流

Astra Trident 19.07 及更高版本使用 Kubernetes CRD 存储和管理其自身状态。它使用Kubernetes集群 etcd 以存储其元数据。这里我们假设Kubernetes etcd 数据文件和证书存储在NetApp FlexVolume上。此 FlexVolume 驻留在 SVM 中, SVM 与二级站点的目标 SVM 具有 SnapMirror SVM-DR 关系。

以下步骤介绍如何在发生灾难时使用 Astra Trident 恢复单个主 Kubernetes 集群:

  1. 如果源 SVM 发生故障,请激活 SnapMirror 目标 SVM 。为此,您应停止计划的 SnapMirror 传输,中止正在进行的 SnapMirror 传输,中断复制关系,停止源 SVM 并启动目标 SVM 。

  2. 从目标SVM挂载包含Kubernetes的卷 etcd 将设置为主节点的主机上的数据文件和证书。

  3. 复制下与Kubernetes集群相关的所有必需证书 /etc/kubernetes/pki 和etcd member 下的文件 /var/lib/etcd

  4. 使用创建Kubernetes集群 kubeadm init 命令 --ignore-preflight-errors=DirAvailable—​var-lib-etcd 标志。Kubernetes 节点使用的主机名应与源 Kubernetes 集群相同。

  5. 运行 kubectl get crd 用于验证是否已启动所有Trident自定义资源的命令、并检索Trident对象以验证所有数据是否可用。

  6. 运行以更新所有必需的后端、以反映新的目标SVM名称 ./tridentctl update backend <backend-name> -f <backend-json-file> -n <namespace> 命令:

备注 对于应用程序永久性卷,激活目标 SVM 后,由 Trident 配置的所有卷将开始提供数据。按照上述步骤在目标端设置 Kubernetes 集群后,所有部署和 Pod 均会启动,容器化应用程序应正常运行。

SnapMirror 卷复制

ONTAP SnapMirror 卷复制是一项灾难恢复功能,可用于在卷级别从主存储故障转移到目标存储。SnapMirror 通过同步快照在二级存储上创建主存储的卷副本或镜像。

下面简要介绍了 ONTAP SnapMirror 卷复制设置步骤:

  • 在卷所在的集群与从卷提供数据的 SVM 之间设置对等关系。

  • 创建一个 SnapMirror 策略,用于控制关系的行为并指定该关系的配置属性。

  • 使用在目标卷和源卷之间创建 SnapMirror 关系[snapmirror create 命令^)并分配相应的SnapMirror策略。

  • 创建 SnapMirror 关系后,初始化此关系,以便完成从源卷到目标卷的基线传输。

显示了 SnapMirror 卷复制设置。

Trident 的 SnapMirror 卷灾难恢复工作流

以下步骤介绍如何使用 Astra Trident 恢复单个主 Kubernetes 集群。

  1. 发生灾难时,停止所有计划的 SnapMirror 传输并中止所有正在进行的 SnapMirror 传输。中断目标卷和源卷之间的复制关系,使目标卷变为读 / 写卷。

  2. 从目标SVM挂载包含Kubernetes的卷 etcd 主机上的数据文件和证书、该主机将设置为主节点。

  3. 复制下与Kubernetes集群相关的所有必需证书 /etc/kubernetes/pki 和etcd member 下的文件 /var/lib/etcd

  4. 运行创建Kubernetes集群 kubeadm init 命令 --ignore-preflight-errors=DirAvailable—​var-lib-etcd 标志。主机名应与源 Kubernetes 集群相同。

  5. 运行 kubectl get crd 用于验证是否已启动所有Trident自定义资源并检索Trident对象的命令、以确保所有数据均可用。

  6. 清理先前的后端并在 Trident 上创建新的后端。指定目标 SVM 的新管理和数据 LIF ,新 SVM 名称和密码。

应用程序永久性卷的灾难恢复工作流

以下步骤介绍了在发生灾难时如何为容器化工作负载提供 SnapMirror 目标卷:

  1. 停止所有计划的 SnapMirror 传输并中止所有正在进行的 SnapMirror 传输。中断目标卷和源卷之间的复制关系,使目标卷变为读 / 写卷。清理使用与源 SVM 上的卷绑定的 PVC 的部署。

  2. 按照上述步骤在目标端设置 Kubernetes 集群后,请从 Kubernetes 集群中清理部署, PVC 和 PV 。

  3. 通过指定目标 SVM 的新管理和数据 LIF ,新 SVM 名称和密码,在 Trident 上创建新的后端。

  4. 使用 Trident 导入功能将所需卷作为 PV 导入,并绑定到新 PVC 。

  5. 使用新创建的 PVC 重新部署应用程序部署。

使用 Element 快照恢复数据

通过为 Element 卷设置快照计划并确保按所需间隔创建快照来备份此卷上的数据。您应使用 Element UI 或 API 设置快照计划。目前、无法通过为卷设置快照计划 solidfire-san 驱动程序。

如果发生数据损坏,您可以使用 Element UI 或 API 选择特定快照并手动将卷回滚到快照。此操作将还原自创建快照以来对卷所做的任何更改。