第六章-SUSE- Rancher-容器高可用与容灾测试-RKE2-数据库(Mysql-异地备份还原方式容灾)

发布于:2025-02-10 ⋅ 阅读:(156) ⋅ 点赞:(0)

系列文章目录


第一章-SUSE- Rancher-容器高可用与容灾测试-RKE2-外置数据库(Mysql主备集群搭建)

第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建(使用Mysql)-CSDN博客

第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-(离线helm部署)

第四章-SUSE- Rancher-容器高可用与容灾测试-RKE2-数据库(Mysql主备倒换容灾)

第五章-SUSE- Rancher-容器高可用与容灾测试-Rancher-(使用Rancher-backup-异地还原测试)

第六章-SUSE- Rancher-容器高可用与容灾测试-RKE2-数据库(Mysql-异地备份还原方式容灾)

第七章-SUSE- Rancher-容器高可用与容灾测试-Rancher-拉起的集群(快照容灾测试)

第八章-SUSE- Rancher-容器高可用与容灾测试-Longhorn(容灾卷跨集群测试)


目录​​​​​​​

系列文章目录

前言​​​​​​​​​​​​​​

一、创建云主机

二、部署Mysql

2.1 部署Docker

2.2 创建Docker-compose.yaml

2.3 从OSS下载备份的sql文件

​编辑2.4 还原Mysql

2.4.1 启动数据库

2.4.2 CP SQL文件进入数据库持久化目录内

2.4.3 进入数据库还原解压sql文件(如果是压缩文件)

三、通过Rancher部署自定义RKE2集群

3.1 步骤说明

3.2 yaml文件-数据库配置 

3.3  yaml文件-token配置

3.3.1 获取原Serve-Token

3.4 配置仓库

 3.5 节点配置文件

3.5.1 通过Rancher配置的节点

3.5.2  如果是普通的rke2离线安装,通过备份数据库还原方式

3.6 启动集群 

 3.7 源数据库备份还原的问题

3.7.1 源节点数据残留

3.7.2 Rancher无法纳管

总结


前言

第一章我们搭建好了Mysql(主备复制)实例。

第二章我们搭建好Rancher管理集群的基础设施- RKE2集群-Tarball方法-离线。

第三章我们使用helm离线方式部署好了Rancher到RKE2集群中,同时使用Rancher-backup-调度了一次备份任务到阿里云的对象存储。

第四章 我们模拟主数据中心故障,将RKE2集群进行了恢复(ETCD数据库)。

第五章,我们使用Rancher-backup对Rancher进行异地还原。

第六章,我们使用Rancher对网络可达节点进行RKE2部署并且传递配置文件与代理仓库信息,其中本次会使用第一次搭建的RKE2的Mysql备份文件进行数据库部署。模拟被Rancher管理的节点进行快速异地容灾部署节点。(这是模拟下游适用Mysql数据库的节点故障场景,经过测试适用Mysql的下游集群是没办法被Rancher管理的,故这篇文章可以看作是上游管理集群-Rancher的Mysql备份还原step by step)
 


如果是普通的rke2离线安装,通过备份数据库还原方式

**手动将下面的CP到还原的节点上即可。

那么请备份/etc/rancher/rke2/*下的所有文件以及/var/lib/rancher/rke2/server/token

**数据库还原按照下面的步骤即可。 


一、创建云主机

老规矩:

需要部署RKE2的主机:

4C 8G 2台 20GB磁盘

**我琢磨着用这两台主机第七章再做一下longhorn跨集群恢复以及本集群的容灾测试。

二、部署Mysql

2.1 部署Docker

zipper install docker -y 

systemctl start docker

docker run hello-world

2.2 创建Docker-compose.yaml

**创建持久化目录

mkdir /root/mysql

cd /root/mysql

mkdir data

mkdir sql

**Docker-compose.yaml

version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql-container
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - "3306:3306"

2.3 从OSS下载备份的sql文件

**可以通过OSS客户端或者阿里云终端获取



2.4 还原Mysql

2.4.1 启动数据库

docker-compose up -d

2.4.2 CP SQL文件进入数据库持久化目录内

2.4.3 进入数据库还原

解压sql文件(如果是压缩文件)

# 使用 gunzip 解压(保留原压缩文件)
gunzip --keep /var/lib/mysql/rke2-db-backup-20250204.sql.gz

# 验证解压结果
ls -lh /var/lib/mysql/rke2-db-backup-20250204.sql

解压后: 

    • docker exec -it  mysql-container /bin/bash
      
      mysql -uroot -pxxxxx 
    • 输入密码后进入 MySQL 命令行模式。

  1. 选择数据库:

    • 如果 SQL 文件中的数据是要恢复到一个特定的数据库中,首先需要选择该数据库:

      如果没有则需要创建:
      • 
        create database kubernetes;
        
        USE kubernetes;
  2. 执行 SQL 文件:

    • 使用 source 命令或者 < 重定向符号来执行 SQL 文件。以下是两种方法:

      • 方法一:使用 source 命令:

        source /路径/到/你的/备份文件.sql;
      • 方法二:使用重定向:

        mysql -u 用户名 -p 数据库名 < /路径/到/你的/备份文件.sql

        这种方法可以直接在命令行中运行,不必先进入 MySQL 命令行。

     

    请注意路径要使用绝对路径或确保当前工作目录为 SQL 文件所在目录。

  3. 检查恢复结果:

    • 执行完 SQL 文件后,可以通过查询数据库中的数据来验证恢复是否成功。例如:

      sql

      SELECT * FROM 表名 LIMIT 10;

 **这里数据库就还原完毕了。

三、通过Rancher部署自定义RKE2集群

3.1 步骤说明

步骤说明

  1. 创建RKE2自定义集群:在Rancher UI中选择集群管理 > 创建集群,选择RKE2类型并进入YAML编辑页面。

  2. 配置外部数据库:在YAML中通过datastore-endpoint指定外部MySQL或其他数据库地址。Mysql数据库的地址为:172.31.0.35 端口3306

  3. 设置TLS证书(可选):若数据库启用了TLS,需配置相关证书路径。

  4. 指定集群Token:确保所有节点使用相同的token以加入集群。

  5. 其他配置:如CNI插件、镜像仓库等按需添加。

3.2 yaml文件-数据库配置 

**上面截图的位置点击之后修改yaml中的:

datastore-endpoint: "mysql://root:e2231255@tcp(172.31.0.35:3306)/kubernetes"
token: <为你源RKE2中/var/lib/rancher/server/token值>
    machineGlobalConfig:
      datastore-endpoint: "mysql://root:e2231255@tcp(172.31.0.35:3306)/kubernetes"
      cni: cilium
      disable-kube-proxy: false
      etcd-expose-metrics: false
      token: <为你源RKE2中/var/lib/rancher/server/token值>

3.3  yaml文件-token配置

3.3.1 获取原Serve-Token

**这是之前记录的token:

iZuf6ixdcxth242z8gblpfZ:~/rke2 # cat /var/lib/rancher/rke2/server/token
K106c6dc6324815dea390b134fea88cb8fbdddcc5245c44cbc9114f76842f86fb04::server:SECRET

3.4 配置仓库

 3.5 节点配置文件

3.5.1 通过Rancher配置的节点

**节点启动后会将各种引用关系以及配置关联信息保存下面的文件中,也就UI中配置的yaml在节点上的体现。 

cat /etc/rancher/rke2/config.yaml.d/50-rancher.yaml 

3.5.2  如果是普通的rke2离线安装,通过备份数据库还原方式

**手动将下面的CP到还原的节点上即可。

那么请备份/etc/rancher/rke2/*下的所有文件以及/var/lib/rancher/rke2/server/token

3.6 启动集群 

 3.7 源数据库备份还原的问题

3.7.1 源节点数据残留

**通过备份数据库拉回的集群会多一个之前的源节点数据。 

**出现Terminating状态的因为源节点还在,Daeset在里面。 

**过一会就好了。
**通过备份原因数据库的方式可以还原集群的元数据(secret,configmap等等),业务数据是不能恢复的。 

3.7.2 Rancher无法纳管

记录一次-Rancher通过UI-Create Custom- RKE2的BUG-CSDN博客

**你下游集群选择了Mysql集群库, Rancher是不认的,他快照等功能也没法使用。只兼容etcd数据库的集群.

**无法被Rancher纳管那就没法适用Rancher监控和管理功能,包括快照功能。默认是etcd方式,这种方式mysql是用不了的。

**那么可以下结论:

1、Mysql等容灾-业务和存储侧(备份还原)只适用于上游管理集群。

2、下游集群只适用数据库etcd场景。

四、ETCD异地备份还原

4.1 备份到S3

        4.1.1 备份ETCD

rke2 etcd-snapshot save \
--s3 \ 
--s3-bucket=for-rancher-backup \
--s3-access-key=LTAI5tBxxxQKaEF3ZQ2y9W \
--s3-secret-key=i683yLu5xxxxoci3tAOJjUEbKKN \
--s3-endpoint=oss-cn-shanghai-internal.aliyuncs.com \
--s3-region=cn-shanghai \
--s3-folder=rke2-03-backup

        4.1.2 验证备份

k8s集群侧:

kubectl get cm -n kube-system rke2-etcd-snapshots -o yaml

OSS侧: 

 

        4.1.3 备份token

位置:

/var/lib/rancher/rke2/server/token

4.2 新节点从S3还原

        **容灾节点

rke2 server \
--cluster-reset \
--etcd-s3 \
--cluster-reset-restore-path=on-demand-izuf6ipt8jpu49o6gtw8faz-1738888741 \
--etcd-s3-bucket=for-rancher-backup \
--etcd-s3-access-key=LTAI5txxxF3ZQ2y9W \
--etcd-s3-secret-key=i683yLuxxxxxci3tAOJjUEbKKN \
--etcd-s3-endpoint=oss-cn-shanghai-internal.aliyuncs.com \
--etcd-s3-region=cn-shanghai \
--etcd-s3-folder=rke2-03-backup \
token=K1003cb09400803b91a24a7c48804779e2d10d44a505413d2f4d86f1770248d445f::server:s6ft6j9s4h9wpvpw4r4577296kcb4drjz7cqt7ffb45xcq26f4hs9v

**这里的token为你的源节点备份的token, 必须显示传递,不然etcd没法解密启动数据。

        **config.yaml例子的token例子

 

4.3 报错

**还有一个报错:token alreay xxxxx (token配置问题) 
检查config.yaml是否为SECRET,或者/var/lib/rancher/rke2/server/token和源节点token不一致。

4.4 验证集群恢复

4.5 元数据检查

**该有的pod.yaml以及CM等都是可以起来的。但是业务数据没办法。 

 


总结

全文总结
本文主要介绍了在 SUSE Rancher 中进行容器高可用与容灾测试,具体围绕 RKE2 和数据库(Mysql 异地备份还原方式容灾)展开。内容包括 CSDN 编辑相关快捷键及功能,如加粗快捷键 Command+B 等,文章标签、分类专栏等设置,以及文章备份相关政策。重点阐述了 Mysql 数据库异地备份还原方式容灾的步骤,涵盖创建云主机、部署 Mysql(包括部署 Docker、创建 Docker--compose.yaml、下载和还原备份文件等)、通过 Rancher 部署自定义 RKE2 集群(步骤说明、yaml 文件配置、获取 Serve--Token、配置仓库、节点配置文件、启动集群及可能遇到的问题等)。
重要亮点

  • Mysql 部署:详细讲解了部署 Mysql 的步骤,包括部署 Docker、创建配置文件、下载备份文件以及还原 Mysql 的具体操作。
  • RKE2 集群部署:阐述通过 Rancher 部署自定义 RKE2 集群的过程,包括步骤说明、yaml 文件配置、获取 Serve-Token、配置仓库、节点配置文件及启动集群等环节。
  • 容灾测试问题:指出在源数据库备份还原过程中可能遇到的问题,如源节点数据残留和 Rancher 无法纳管等情况。

网站公告


今日签到

点亮在社区的每一天
去签到