使用Longhorn优雅地恢复运行中的容器应用


作者简介
鞠宏超 , Rancher研发工程师 。 4年云计算领域经验 , 2018年加入Rancher Labs , 先后参与了Longhorn产品研发 , Rancher2.x产品研发 , 目前主要致力于Rancher企业版产品的设计与研发工作 。
Longhorn是基于Kubernetes的轻量级分布式块存储系统 , 它完全开源 , 并且已经捐献给CNCF 。 随着云原生应用的普及 , 越来越多的服务提供容器运行时 , 数据的持久化存储问题渐渐显现出来 , 我们要做的不仅仅是数据的持久化 , 还要考虑备份的准确性 , 迁移的复杂性等 。
Longhorn提供的分布式块存储可以在Kubernetes中直接使用持久化存储 , 它可以为数据卷在不同主机提供多副本服务 , 以保证数据的可靠性 , 它提供简洁的UI可以直接管理存储节点、数据卷 , 轻松实现数据卷的备份/定时备份 , 您还可以使用容灾备份功能 , 在不同集群创建容灾备份卷 , 并在发生紧急情况时及时进行故障转移 。
在这篇文章中 , 我们将把MySQL作为Pod部署到集群A中 , 并使用Longhorn作为持久化存储卷 , 然后依托Rancher多集群管理的特性 , 结合Longhorn的容灾备份功能 , 演示一下如何优雅地将集群A中的MySQL应用及数据迁移到集群B中 。
使用Longhorn优雅地恢复运行中的容器应用
本文插图
环境准备

  • Rancher (HA部署) - v2.4.8
  • Longhorn(通过Rancher UI Catalog部署) - v1.0.2
  • MySQL - 8
  • 私有S3 - minio部署
  • 业务集群A、B

部署longhorn
在Rancher中 , 进入集群A的system项目 , 在应用商店中可以一键启动Longhorn 。
使用Longhorn优雅地恢复运行中的容器应用
本文插图
使用Longhorn优雅地恢复运行中的容器应用
本文插图
等待应用商店部署成功后 , 可以根据应用商店链接进入到Longhorn UI 。
使用Longhorn优雅地恢复运行中的容器应用
本文插图
使用Longhorn优雅地恢复运行中的容器应用
本文插图
接下来 , 我们在集群B中以同样方式启动Longhorn , 等待Longhorn正常运行 。
创建s3访问的secret(用于longhorn备份使用)
访问Rancher , 进入集群A的system项目 , 选择 资源 > 密文 菜单 , 在longhorn-system 命名空间中创建访问s3的secret , 需要增加的参数包括:
使用Longhorn优雅地恢复运行中的容器应用
本文插图
访问Rancher , 进入集群B的system项目 , 选择资源 > 密文 菜单 , 在longhorn-system 命名空间中创建与上面相同的secret内容 。
使用Longhorn优雅地恢复运行中的容器应用
本文插图
配置longhorn backup target
接下来我们需要在A和B两个集群的Longhorn中配置相同的backup target 。
从应用商店的链接跳转到longhorn UI , 点击Setting > General菜单 , 找到Backup分类 , 配置备份目标 。
使用Longhorn优雅地恢复运行中的容器应用
本文插图
目前Longhorn支持NFS/S3两种备份方式 , 在本例中 , 我们使用minio搭建了一个私有S3服务 , 这里我们使用s3方式配置 。
PS: 如果使用NFS , 则需要保证NFS server支持NFSv4
使用Longhorn优雅地恢复运行中的容器应用