EMQX 在 Kubernetes 中如何进行优雅升级

文章介绍了如何通过EMQXKubernetesOperator实现EMQX在Kubernetes上的蓝绿发布,结合节点疏散功能,解决滚动升级过程中的连接断连、服务过载和负载不均问题,确保升级的平滑和稳定性。升级过程中,通过控制连接迁移速率,减少断连次数,保持预期的节点服务,最终实现各节点间连接的均衡。

背景

为了降低 EMQX 在 Kubernetes 上的部署、运维成本,我们将一些日常运维能力进行总结、抽象并整合到代码中,以 EMQX Kubernetes Operator 的方式帮助用户实现 EMQX 的自动化部署和运维。

此前,EMQX Kubernetes Operator v1beta1、v1beta2、v1beta3 的升级策略均为滚动升级,相关升级流程如下:

1

问题分析

滚动升级在生产环境中可能会面临以下问题:

  1. 升级过程中会逐个销毁旧的节点再创建新的节点,因此可能导致客户端多次断连(最糟糕的情况下断连次数与节点数量一致),从而影响用户体验。
  2. 当集群处于较高连接的情况下,一个节点被销毁,那么该节点上面的连接会在瞬间断开,由客户端重试逻辑来进行重连;当单节点连接数较大时,如果大量客户端进行重连,则可能会给服务端造成压力导致过载。
  3. 升级完成后,各节点间的负载不均衡(如上图:emqx-ee-0 在升级过程中,客户端可能会进行重连,此时由于 emqx-ee-0 还未就绪,因此可能连接到 emqx-ee-1 或者 emqx-ee-2,升级完成后 emqx-ee-0 上可能只有较少负载或者无负载),从而打破业务容量模型的规划,可能影响到服务。
  4. 由于使用 StatefulSets 进行部署,在升级过程中提供服务的节点会比实际节点要少一个(影响到用户的业务模型),这可能会增加服务端的一些压力。

如果上面几个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值