备份和恢复 CLI

使用 CLI 备份和恢复群集

您可以使用 CLI 来创建和恢复群集的备份。您还可以选择备份和恢复 DC/OS 群集内运行的 ZooKeeper 状态。

先决条件

重要信息:查看备份和恢复的部分。

备份群集

备份存储在管理节点的本地文件系统上。备份状态由在群集中运行的服务维护,并通过直接使用此服务来初始化备份/恢复操作。

  1. 创建备份并对其分配一个有意义的标签。标签有以下限制:

    • 长度必须介于 3 到 25 个字符之间。
    • 不能以 开始。.
    • 必须由以下字符组成:[A-Za-z0-9_.-]。
  2. 验证您的备份是否已创建。

    1. dcos backup list

    或使用以下命令将搜索结果限制为您创建备份时使用的标签。

    1. dcos backup list [label]

    备份最初将过渡到 STATUS_BACKING_UP 状态,并且最终应进入 STATUS_READY.状态。如果出现错误,它将显示一个 状态。STATUS_ERROR. 使用 dcos backup show <backup-id> 找出在备份过程中 Marathon 出错的原因。

  3. 在后续命令中使用由 dcos backup list 产生的 ID 引用您的备份。备份 ID 类似于 <backup-label>-ea6b49f5-79a8-4767-ae78-3f874c90e3da.

删除不需要的备份。

    恢复群集

    1. 从所选备份中恢复。

      1. dcos backup restore <backup-id>
    2. 监控恢复操作的状态。

      1. dcos backup show <backup-id>

      JSON 输出的restores.component_status.marathon参数将显示 STATUS_RESTORING,然后显示 .

    ZooKeeper 备份和恢复

    该部分介绍备份和恢复 DC/OS 群集内运行的 ZooKeeper 状态的过程。

    备份 Zookeeper 将允许您将群集返回到已知的良好状态。因此,我们强烈建议您定期备份 Zookeeper 状态,为最坏情况做准备。执行维护操作时,例如升级或降级,在开始维护之前,您可能希望备份 Zookeeper 状态。

    重要信息: 从备份恢复 Zookeeper 应该是恢复 DC/OS 群集的最后方法。仅在确认群集遭受永久数据丢失(包括 Zookeeper 状态)后才适用。

    DC/OS 内的 Zookeeper 群集是在成员节点之间提供分布式一致性的系统。Zookeeper 的实例在每个管理节点上运行,这些实例服务于整个群集。只有当群集中的所有节点看到并同意某个值时,Zookeeper 状态才能继续进行。这意味着,任何一个 Zookeeper 节点的状态将包含到某个时间点之前的整个状态信息。因此,备份一个 ZOOKEEPER 节点足以合理地接近 Zookeeper 群集备份的最新状态。创建备份需要时间,因此,备份结束时的实时系统最有可能不再反映当前状态。但是,将捕获程序开始时可用的数据。

    • 确保有足够的磁盘空间以在特定管理节点上临时存储 Zookeeper 备份。
    • 任何 shell 命令都必须以有特权的 Linux 用户身份发出。
    1. 通过 Exhibitor systemd 单元仅停止一个特定管理节点上的 Zookeeper 实例。

      1. systemctl stop dcos-exhibitor
    2. 通过提供的 DC/OS Zookeeper 备份脚本在同一管理节点上创建 ZooKeeper 备份。

      1. systemctl start dcos-exhibitor
    3. 将已创建的 Zookeeper 备份 tar 存档从该管理节点下载到 DC/OS 群集之外的安全位置。

    4. 从管理节点上删除 Zookeeper 备份 tar 存档。

    您可以从单个 ZooKeeper 节点备份中恢复,该备份已物理地复制到群集中的所有 ZooKeeper 节点上。 这样可以确保所有节点都从记录的相同状态返回操作,直到备份过程完成为止。恢复要求停止所有 Zookeeper 节点,这意味着仅当中断可容忍或正在进行时,这才是一个选择。

    1. 将之前创建的单个 Zookeeper 备份 tar 存档复制到每个管理节点的文件系统里。

    2. 通过 Exhibitor systemd 单元停止每个管理节点上的 Zookeeper 实例。

      1. systemctl stop dcos-exhibitor
    3. 通过提供的 DC/OS Zookeeper 恢复脚本在每个管理节点上启动恢复程序。

      1. /opt/mesosphere/bin/dcos-shell dcos-zk restore <backup-tar-archive-path> -v
    4. 在每个管理节点上重新启动先前停止的 Zookeeper 实例。

    5. 通过 Exhibitor 群集状态 API 端点监控 DC/OS 群集的 Exhibitor 状态(无需身份认证)。

      1. [
      2. {
      3. "code": 3,
      4. "description": "serving",
      5. "hostname": "172.31.12.169",
      6. "isLeader": true
      7. {
      8. "code": 3,
      9. "description": "serving",
      10. "hostname": "172.31.13.255",
      11. "isLeader": false
      12. },
      13. {
      14. "code": 3,
      15. "description": "serving",
      16. "hostname": "172.31.17.144",
      17. "isLeader": false
      18. }
      19. ]

    当所有实例都处于 状态且领导者已选举时,则恢复程序成功。

    • 在当前表单中备份 Zookeeper 状态需要停止一个 ZooKeeper 节点。在您使用 3 个管理节点的情况下,这显著降低了进行备份时 DC/OS 群集管理节点中断的容忍度,而在使用 5 个管理节点时对恢复力的影响较小。