Etcd 备份与恢复
在本节中,你将学习如何创建 RKE2 集群数据的备份以及如何使用备份恢复集群。
注意:/var/lib/rancher/rke2
是 RKE2 的默认数据目录,但是你可以通过 data-dir
参数自行进行配置。
创建快照
快照是默认启动的。
快照目录默认为 /var/lib/rancher/rke2/server/db/snapshots
。
要配置快照间隔或保留快照的数量,请参阅选项。
在 RKE2 中,快照会存储在每个 etcd 节点上。如果你有多个 etcd 或 etcd + control plane 节点,你将拥有本地 etcd 快照的多个副本。
你可以在 RKE2 运行时使用 etcd-snapshot
子命令手动执行快照。例如:rke2 etcd-snapshot save --name pre-upgrade-snapshot
。
集群重置
RKE2 启用了一项功能,可以通过传递 --cluster-reset
标志将集群重置为一个成员集群。将此标志传递给 RKE2 server 时,它将使用相同的数据目录重置集群,数据 etcd 的目录存在于 /var/lib/rancher/rke2/server/db/etcd
中,这个标志可以在集群丢失仲裁时传递。
要传递重置标志,首先你需要停止 RKE2 服务(如果 RKE2 是通过 systemd 启用的):
systemctl stop rke2-server
rke2 server --cluster-reset
结果:日志中的一条消息表示 RKE2 可以在没有标志的情况下重新启动。再次启动 RKE2,它应该将 RKE2 作为一个成员集群启动。
将快照恢复到现有节点
使用备份恢复 RKE2 时,旧的数据目录将被移动到 /var/lib/rancher/rke2/server/db/etcd-old-%date%/
。然后 RKE2 将尝试通过创建一个新的数据目录来恢复快照,并使用一个具有一个 etcd 成员的新 RKE2 集群启动 etcd。
- 如果通过 systemd 启用,则必须在所有 Server 节点上停止 RKE2 服务。使用以下命令执行此操作:
systemctl stop rke2-server
- 接下来,使用以下命令在第一个 Server 节点上启动快照恢复:
rke2 server \
--cluster-reset \
--cluster-reset-restore-path=<PATH-TO-SNAPSHOT>
- 恢复完成后,在第一个 Server 节点上启动 rke2-server 服务,如下所示:
systemctl start rke2-server
- 删除其他 Server 节点上的 rke2 db 目录,如下:
rm -rf /var/lib/rancher/rke2/server/db
- 使用以下命令在其他 Server 节点上启动 rke2-server 服务:
systemctl start rke2-server