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

前言

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

上篇 腾讯云Status Page(健康看板)容灾设计与混沌演练实践——上篇 我们讨论架构设计和部署,接下来的内容是关于相应故障演练验证的实践

故障注入主要通过腾讯云混沌演练平台实现,腾讯云有对外服务的版本,可以前往混沌演练平台进行了解。

故障场景

为了验证上篇讨论的架构设计和部署方案是否达到预期,我们将全方位对不同场景进行演练,分别对接入层,逻辑层,数据层等实施以下故障注入:

接入层演练场景

  • 部分ECDN主源VIP不可访问
  • 全部ECDN主源VIP不可访问
  • ECDN主源返回异常码

逻辑层演练场景

  • 主源逻辑层地域所有POD异常
  • 主源逻辑层单可用区所有POD异常
  • 主源逻辑层单可用区内部分POD异常

数据层演练场景

  • 单可用区DB连接异常

接入层故障演练

部分ECDN主源VIP不可访问

通过腾讯云ecdn管理后台编辑主源,配置一个不可访问,一个正常服务:

接下来观察页面范围是否正常,且分析各个部署的请求日志

全部ECDN主源VIP不可访问

通过腾讯云ecdn管理后台编辑主源,配置的2个主VIP均不可用:

接下来观察页面访问是否正常,且分析各个可用区部署的请求日志

以上两个故障注入场景演练实施后请求的示意图:

ECDN主源返回异常码

通过主源VIP指向Nginx制造异常http状态码返回

代码语言:javascript
复制
server {
    listen 443;
    location / {
    return 400; //  包括不同的 5xx 4xx
    }
}

接下来观察页面访问是否正常,且分析各个可用区部署的请求日志和Nginx的日志

故障注入场景演练实施后请求的示意图:

逻辑层故障演练

主源逻辑层地域所有POD异常

通过腾讯云混沌演练平台pod Failed注入

主源逻辑层单可用区所有POD异常

通过腾讯云混沌演练平台pod Failed注入

逻辑层地域所有POD异常和单可用区所有POD异常2种故障注入后的请求示意图,都是主源VIP返回异常码后,进行备源重试:

主源逻辑层单可用区内部分POD异常

通过腾讯云混沌演练平台pod Failed注入,包括前后端不同场景

故障注入后的K8s平台自动处理示意图

数据层故障演练

通过腾讯云混沌演练平台进行注入:

代码层面实现DB异常返回约定的50x异常码,ECDN节点接收到异常码后做备源重试:

演练总结

上述针对性的对接入层,逻辑层,数据层故障演练验证的结果都达到了预期。

我们有足够信心保障腾讯云Status Page在可预期的各类异常场景下, 能够为客户提供有价值的产品可用性关键信息。

快速访问

腾讯云Status Page

国际站Status Page

系列文章

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