Have any Question?

***********

Docker安装的Rancher实现自动备份与恢复

众所周知,由于下游K3s/K8s集群的正常运转不依赖于Rancher,也就是说Rancher故障不影响下游集群里的服务,所以Rancher的单点故障容忍度是很高的。

这也是很多小伙伴使用Docker部署单节点Rancher用于管理集群的原因,然而容忍度很高却不代表真的不用考虑单点故障,单点Rancher损坏带来的麻烦也很多。

这里为大家奉上利用crontab自动备份Rancher的脚本。希望能帮到曾因Rancher单点故障而备受困扰的朋友。

备份脚本

vi rancher-backup.sh

# $PWD在crontab中是用户目录 比如root用户执行就是/root
BackupPath=$PWD
RANCHER_CONTAINER_TAG=v2.8.5
RANCHER_CONTAINER_NAME=rancher
RANCHER_VERSION=v2.8.5
DATE=$(date +%Y-%m-%d-%H-%M-%S)
echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher backup Beginning, use vars: '
echo 'RANCHER_CONTAINER_TAG: ' $RANCHER_CONTAINER_TAG 
echo 'RANCHER_CONTAINER_NAME: ' $RANCHER_CONTAINER_NAME 
echo 'RANCHER_VERSION: ' $RANCHER_VERSION 
echo 'DATE: ' $DATE 

docker stop $RANCHER_CONTAINER_NAME 
echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher container stopped'

docker create --volumes-from $RANCHER_CONTAINER_NAME --name rancher-data-$DATE rancher/rancher:$RANCHER_CONTAINER_TAG
echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher volumes created'

echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher backup doing'
docker run --name busybox-backup-$DATE --volumes-from rancher-data-$DATE -v $BackupPath:/backup:z busybox tar pzcvf /backup/rancher-data-backup-$RANCHER_VERSION-$DATE.tar.gz /var/lib/rancher
echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher backup tar.gz file created'

echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher backup tmp resources cleaning'
docker rm rancher-data-$DATE
docker rm busybox-backup-$DATE
echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher backup tmp resources clean done'

docker start $RANCHER_CONTAINER_NAME
echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher container started'

echo [$(date +%Y-%m-%d\ %H:%M:%S)] 'Rancher backup success'

Crontab自动备份脚本

crontab -e
# 每天凌晨2:40执行一次
40 2 * * * sh /app/rancher/stable/rancher-backup.sh >> /app/rancher/stable/rancher-backup.log

恢复脚本

BackupPath=$PWD
RANCHER_CONTAINER_TAG=v2.8.5
RANCHER_CONTAINER_NAME=rancher
RANCHER_VERSION=v2.8.5
DATE=$(date +%Y-%m-%d-%H-%M-%S)

# 停止当前运行 Rancher Server 的容器
docker stop $RANCHER_CONTAINER_NAME 

# 危险
# 该命令将删除 Rancher Server 容器中的所有当前状态数据。创建备份压缩包后保存的任何更改都将丢失。
docker run  --volumes-from $RANCHER_CONTAINER_NAME -v $BackupPath:/backup \
  busybox sh -c "rm /var/lib/rancher/* -rf  && \
  tar pzxvf /backup/rancher-data-backup-$RANCHER_CONTAINER_NAME-$DATE.tar.gz"

# 启动容器
docker start $RANCHER_CONTAINER_NAME

参考文档

备份Docker安装的Rancher

恢复备份 – Docker 安装

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注