背景
腾讯云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(健康看板)容灾设计与混沌演练实践——下篇