前言
腾讯云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状态码返回
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(健康看板)容灾设计与混沌演练实践——下篇