腾讯云Status Page(健康看板)容灾设计与混沌演练实践——上篇

背景

腾讯云Status Page(Tencent Cloud Health Dashborad ),作为腾讯云官方的产品可用信息对外窗口,需要保障在极端的故障情形下,还能及时且正确地对外呈现关键信息,这要求在架构设计和部署上做到多地域级别的容灾效果。为了达到目标,我们除实施针对性的架构设计和部署外,还对各类故障场景做了故障演练验证。

架构部署

为了在极端故障场景下能正常对外服务,我们做了以下架构部署策略:

  • 异地多活,三地部署,其中包括海外地域
  • 地域内多可用区
  • 逻辑层可用区内通过ingress对外服务,POD异常时ingress可自动剔除
  • 数据层使用腾讯云Mysql产品,具备跨可用区容灾能力
  • 接入腾讯云产品ECDN,能同时获得分布式的容灾访问能力和加速能力
部署架构图
可用区内部架构

接入层容灾

借助腾讯云CDN的能力

当遇到站点以下两种异常:

  • 后端返回异常的http状态码
  • 接入VIP连接异常

ECDN会重试请求备源,另外对于连接异常的源VIP,ECDN可以自主进行剔除与恢复。从而可以做到可用区或者地域级别的异常的情况下,服务还能正常对外可用。

逻辑层可用区内容灾

腾讯云Status Page 逻辑层的部署采用了当下业界流行的云原生化的模式,借助腾讯云K8s产品的能力:

所有服务均开启了POD自动探活配置,当前后端的服务异常时,K8s平台能及时识别到pod异常,进而在可用区接入层(ingress)将其剔除,保证对外服务正常。

另外开启HPA,当工作负载的负荷到达配置CPU,内存,网络等瓶颈时,K8s调度模块还能及时调整pod数量,在请求量大的场景下能保证用户访问体验不受影响。

数据层容灾

前面提到,腾讯云CDN具备当后端返回异常的http状态码时ECDN会重试请求备源的能力。

借助该能力,结合代码内部逻辑对数据层异常的专门处理(如连接DB异常时,设置http状态码为50x),主备多地多活部署架构下,我们就能应对数据层异常的场景,保障服务的正常请求响应。

过程示意如下图所示:

总结

综合上述的架构设计及针对性部署,腾讯云Status Page 基本在可预期的各类异常场景下,能继续正常对外服务。

比如包括但不限于以下异常场景:

  • 极端灾坏下的地域级别的核心网异常,就近CDN节点剔除主且重试异地备源
  • 多可用区级别的交换机故障,就近CDN节点剔除主且重试异地备源
  • 机房掉电,就近CDN节点剔除主且重试异地备源
  • DB故障,异常返回码重试
  • 服务异常,POD自动剔除
  • 等等

当然我们不会故步自封,在不断尝试和验证更好的部署和容灾方案后,会继续保持迭代优化。

快速访问

腾讯云Status Page

国际站Status Page

系列文章

  • 腾讯云Status Page(健康看板)简介
  • 腾讯云Status Page(健康看板)前端部署实践
  • 腾讯云Status Page(健康看板)服务端渲染实践
  • 腾讯云Status Page(健康看板)容灾设计与混沌演练实践——上篇
  • 腾讯云Status Page(健康看板)容灾设计与混沌演练实践——下篇