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

数据保护

提供者

了解 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 \
      k8s.gcr.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` 文件夹是否已填充 mMember 文件夹。以下是 etcdctl snapshot restore 命令的示例:

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

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

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

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

使用 ONTAP 快照恢复日期

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

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

  • 默认情况下, Snapshot 目录处于隐藏状态。这有助于最大程度地兼容使用 ontap-NASontap-nas-经济 驱动程序配置的卷。使用 ontap-nasontap-nas-economy 驱动程序时,请启用 ` .snapshot` 目录,以使应用程序能够直接从快照恢复数据。

  • 使用 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 之间设置对等关系。

  • 使用 ` 子类型 dp-destination` 选项创建目标 SVM 。

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

  • 使用 ` -identity-preserve true` 选项创建从目标 SVM 到源 SVM 的 SnapMirror 复制,以确保将源 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 mMember files 复制到 ` /var/lib/etcd` 下。

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

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

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

注 对于应用程序永久性卷,激活目标 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 mMember files 复制到 ` /var/lib/etcd` 下。

  4. 通过运行 kubeadm init 命令和 ` -ignore-prefly-errors=DirAvailable-var-lib/etcd` 标志来创建 Kubernetes 集群。主机名应与源 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 选择特定快照并手动将卷回滚到快照。此操作将还原自创建快照以来对卷所做的任何更改。