在 RKE 集群中,集群中三个 etcd 节点中的每个 etcd 节点都会复制一份集群数据,以便在一个节点发生故障的情况下其他节点可以提供冗余和数据复制。

运行 Rancher Server 的 RKE 集群的体系结构

备份 Rancher 高可用集群的过程涉及完成多个任务。

  1. 使用 Rancher Kubernetes Engine(RKE)拍摄当前 etcd 数据库的快照。

  • 选项 A:定期快照

    在完成 Rancher 高可用安装后,建议将 RKE 配置为自动拍摄重复快照,以便始终有一个安全的还原点可用。

  • 我们建议在升级或还原另一个快照之类的事件之前拍摄一次快照。

对于所有 Rancher 高可用安装,我们建议您定期拍摄快照,以便始终有一个安全的还原点可用。

要制作定期快照,请启用 RKE 附带的 etcd-snapshot服务。该服务在 etcd 容器旁边的服务容器中运行。您可以通过向 rancher-cluster.yml 添加一些代码来启用此服务。

启用定期快照:

  1. 编辑rancher-cluster.yml配置文件;

  2. 编辑 service etcd的配置以启用自动备份。

    编辑 etcd 服务的代码以启用定期快照。从 RKE v0.2.0 开始,快照可以保存在与 S3 兼容的后端中。

    RKE v0.2.0+

    RKE v0.1.x

    1. etcd:
    2. snapshot: true # 设置true启用ETCD自动备份,设置false禁用
    3. creation: 6h0s # 快照创建间隔时间,单位小时;
    4. retention: 24 # 快照有效期,此时间后快照将被删除;
  3. 打开命令行并切换路径到 RKE 二进制文件所在目录。确保rancher-cluster.yml也在这个路径下。

结果: RKE 会在每个 etcd 节点上定时拍摄快照,并将快照将保存到每个 etcd 节点的:/opt/rke/etcd-snapshots/目录下。如果配置了 S3 存储配置,快照备份也会上传到 S3 兼容的存储后端。

选项 B:一次性快照

当您要升级 Rancher 或将其还原到以前的快照时,应该对实时映像进行快照,以使 etcd 的备份处于其最新的已知状态。

制作一次性本地快照:

  1. 打开终端,然后将目录更改为 RKE 二进制文件的位置。您的 文件必须位于同一目录中。
  2. 输入以下命令。将<SNAPSHOT.db>替换为您要用于快照的任何名称(例如 upgrade.db)。

    1. rke etcd snapshot-save --name <SNAPSHOT.db> --config rancher-cluster.yml

结果: RKE 为在每个节点上运行的 etcd 拍摄快照。该文件将保存到/opt/rke/etcd-snapshots

制作一次 S3 快照:

自 RKE v0.2.0 起可用

  1. 打开终端,然后将目录更改为 RKE 二进制文件的位置。您的 rancher-cluster.yml 文件必须位于同一目录中。

  2. 输入以下命令。将<SNAPSHOT.db>替换为您要用于快照的任何名称(例如 upgrade.db)。

结果: RKE 为在每个节点上运行的 etcd 拍摄快照。该文件将保存到/opt/rke/etcd-snapshots,同时将快照上传到 S3 兼容后端。

注意: 如果您使用的是 RKE v0.2.0,则可以直接将备份保存到与 S3 兼容的后端,然后跳过此步骤。

拍摄 etcd 快照后,请将其保存到安全的位置,以防集群遇到灾难时不受影响。这个位置应该是持久的。

作为示例,在本文档中,我们以 Amazon S3 为安全位置,以 S3cmd 为创建备份的工具。您可以决定您使用的备份位置和备份工具。

例如:

  1. root@node:~# s3cmd mb s3://rke-etcd-snapshots
  2. root@node:~# s3cmd put /opt/rke/etcd-snapshots/snapshot.db s3://rke-etcd-snapshots/