如何看待云原生下的多活容灾

为什么业务容器化之后,多活容灾变得更具挑战?

  1. 不像之前使用CVM或者物理机部署时,业务容器化之后,底层资源的可控程度更弱,应用实例生命周期更短、变化更快,这就给业务做容灾部署带来了更大的难度。

  2. 除此之外,当前自研业务大部分都是面向Kubernetes集群进行编排的,业务需要感知Kubernetes集群和集群内的资源拓扑,然后再结合自己的容灾部署拓扑去选择合适的集群,配置合适的调度标签进行强有序的多活部署。当每个地域/可用区的集群数量很多时,这个动作也会变的较重。

  3. 有的云管平台,每个集群底层的资源拓扑并不是一层不变的,有些集群包含了多个Zone的资源,有些集群只有单个Zone的资源。有人会问,为什么我们不固化一个标准来建设集群,比如每个集群就只配置单个Zone的资源,或者每个集群都覆盖某个地域的所有Zone的资源。因为这两种集群资源模式都存在各自致命的问题:

  • 如果每个集群只配置单个Zone的资源,当每个Zone资源都是充足的情况下,这并不会有什么问题,但是当某个Zone出现资源不足时,业务紧急情况需要继续扩容,此时一定是允许一定比例的应用实例扩容到其他Zone,此时业务只能手动去找其他Zone的集群,对Workload进行扩容操作。如果业务在每个集群都配置了HPA,那么资源不足的那个Zone对应的集群的HPA将持续告警,无法自动扩容到其他Zone。

  • 如果每个集群都覆盖多个Zone的资源,那么业务只需要在单个集群部署就能实现多Zone容灾的需求,这需要容器平台提供单集群内多Zone拓扑分布比例的调度能力,比如应用A需要在广三、广四部署1:1的拓扑。Kubernetes 1.27 支持的"Topology Spread Constraints" 这一Beta特性还不足以满足我们的场景,除了它需要升级Kubernetes集群版和配置的复杂度、使用心智负担之外,还不支持自定义各个Zone分布比例等场景。另外,这种集群最后一定会演变为超大规模的单集群,它的故障爆炸半径也非常大。

业务需要底层多活容灾部署,到底是业务自己去根据复杂的底层集群和资源拓扑去精细化构建,还是说应该由容器平台来完全兜底,并作为一种不对用户感知的默认的产品能力?

不同的业务场景对容灾的需求存在差异,所以底层PaaS平台需要提供不同的业务容灾部署策略,客户根据自己的容灾需求配置部署策略。应用托管平台根据客户配置的部署策略声明,进行自动化的Reconcile,包括首次部署业务时,以及遇到底层集群、可用区甚至地域级别的异常时,始终能保证客户的部署策略能最大化的得到满足。

所以,业务的容灾,是需要业务和应用托管平台都关注的事情,业务评估自己的容灾场景,平台提供对应的容灾部署能力。

相关推荐
spider_xcxc1 小时前
Docker 实战:容器化多服务应用,Dockerfile 与 Compose 配置全解析
docker·云原生·eureka·虚拟化·容器化
hay_lee2 小时前
Kubernetes StatefulSet:OrderedReady 极简指南
云原生·容器·kubernetes
人间凡尔赛4 小时前
AI-Native 云原生架构:2026 年从容器编排到智能体编排的范式革命
后端·云原生·架构
Linux-187414 小时前
分布式链路追踪系统之docker-compose安装skywalking
云原生·docker-compose·skywalking·分布式链路追踪系统·应用程序性能监控
隔窗听雨眠20 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
Hui Baby21 小时前
K8S使用CRD和控制器简单应用
云原生·容器·kubernetes
阿里云云原生1 天前
从“告警驱动”到“巡检驱动”:Agent 智能体如何实现前端体验治理的闭环?
云原生
AOwhisky1 天前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
AOwhisky1 天前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
云烟成雨TD1 天前
Micrometer 系列【2】可观测性:指标(Metrics)
java·云原生·micrometer