手搓系列之--K8S容器容灾

目录

1. 背景

2. 基本功能

2.1 准备k8s集群和应用

2.2 同步K8S资源

2.2.1 同步方式的选取

2.2.2 需要考虑的功能点

2.3 数据同步

2.3.1 实现方式

2.3.2 考虑功能点

2.4 切换流程

2.4.1 操作

2.4.2 步骤

2.4.3 考虑功能点

2.5 其它

3 进阶功能

3.1 演练

3.2 工作流

3.3 业务单元


1. 背景

一直想写篇容灾相关的题目,原因是虽然在网上可以搜索到不少容器容灾方案,看起来都很高大上,读完一圈之后感觉讲的头头是道,但回到现实,如何自建容器容灾,又感觉无从下手。因此,本文介绍如何从零开始,搭建属于自己的一套容器容灾方案。

2. 基本功能

2.1 准备k8s集群和应用

至少准备2个集群,一个做为主集群,一个做为灾备集群。应用部署在主集群上。

2.2 同步K8S资源

2.2.1 同步方式的选取
  • 通过CICD系统,在发布应用的时候在灾备集群上一起发布和更新

  • 使用K8同步工具,例如velero进行定时/手动同步

  • 使用多集群管理系统,例如kubefed等,同步到灾备集群

2.2.2 需要考虑的功能点
  • 资源映射,灾备集群的资源并不是主集群简单的复制,而是可以自定义修改的,例如工作负载副本数,环境变量,ingress annotation,service 的loadbalancer, storageclass名称等。

  • 资源选定,范围可以是工作空间、命名空间、资源组和单个资源名称。

  • 支持定时同步或手动同步,以备不时之需

2.3 数据同步

2.3.1 实现方式
  • 文件复制,通过复制工具,将pvc中的数据复制到灾备集群,常见的共有restic,rsync,rclone,juicesync等文件复制工具。

  • 存储复制。利用存储的同步,包括异步或同步的方式。

  • 共享存储。主从集群共享同一套高可用的文件系统或存储

2.3.2 考虑功能点
  • 增量复制

  • 数据一致性,尤其是业务级别中,多个工作负载数据的一致性

  • RPO:需要根据不同的同步方式,设置不同的RPO

  • 支持定时同步或手动同步,以备不时之需

2.4 切换流程

2.4.1 操作
  • 切换

应用从主集群切换到从集群,并暂停同步关系

  • 回退

应用从从集群回退到主集群,并丢掉从集群的新增数据,重新建立主集群到从集群的同步关系

  • 反向同步

建立从从集群到主集群的同步关系,将从集群新增数据同步到主集群。

2.4.2 步骤

每项操作中,应该包含的步骤为:关闭应用,卸载数据卷,挂在数据卷,启动应用。

2.4.3 考虑功能点
  • 每个操作都应该有超时机制,并可以手动调整

  • 每个操作都应该支持:取消、重试

2.5 其它

  • 容灾实例应该需要支持暂停和启动

  • 切换支持批量切换,在集群故障下,快速将所有容灾实例切换到灾备就集群

基于以上,就可以简单搭建出来一个基本的容灾系统了。

3 进阶功能

3.1 演练

项目

类型

前置条件

对业务影响

对灾备影响

真实性

目的

桌面演练

熟悉演练流程

沙箱演练

主从建立

验证应用和数据

实战演练

主从断开

验证应用可在灾备端拉起并可用

计划内切换

主从建立

验证业务流量可切换到灾备集群

故障切换

主从断开

验证灾难发生时,灾备集群接管流量

3.2 工作流

在切换步骤中,添加一些自定义的步骤,执行自定义的脚本,或者是需要暂停某个步骤,进行手工操作。

在切换步骤中,某些步骤失败可能是可以忽略的,因此可以指定跳过某些步骤。

3.3 业务单元

多个容灾实例之间,存在服务的依赖,组成一个完整的大型业务。因此需要编排切换顺序。业务单元可以组织这些容灾实例,完成业务级别的编排和切换能力。

以上是整体的架构和思路。其中每个模块的具体设计和实现,后续会持续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值