【玩转腾讯云】如何构建云端高可用架构!
作者介绍
万守兵:腾讯云行业架构师,对云上双活架构、迁移方案有比较深的了解,现主要负责腾讯云泛互行业TOP级客户的解决方案架构工作。
高可用挑战
1. 高可用挑战:时间要求
2. 高可用挑战:各种不稳定的原因
常见事故及问题归类如下:
互联网通用架构和分层
典型互联网架构分层设计如下:
系统正交分解如下:
分类 |
服务治理 目标 |
技术 架构 |
监控层 |
---|---|---|---|
外层 |
客户端SLA、攻防/扫描/审计 CDN合理/稳定、DNS合理/稳定流量峰值 |
CDN DNSPOD/Ip直连高防 |
客户端监控、CDN监控、DNSPOD监控安全 |
接入层 |
异地多活、服务SLA、负载均衡、流量调度、机房切换、限流/降级 |
F5自动化GW nginx(etcd+confd) |
机房整体监控服务监控 (响应延时链接) |
服务层 |
分布式架构、定时调度管理、灰度发布、自动化灾备恢复、机房双活、大数据处理、一体化数据研发 |
应用架构 |
服务状态(服务响应)
性能监控(DB监控)
后端资源监控 语义监控 调用链分析 |
数据层 |
服务监控和性能调节、高并发 水平扩容、快速自动灾备恢复、定期归档备份 |
分布式数据库、分布式事务消息组件 |
服务&业务级监控 |
资源层 硬件层 |
灾备恢复、资源回收、日志归档备份、部署初始化 |
SDN无人值守自动安装、硬件生命周期平台 |
硬件监控、网络监控 |
构建外层高可用
1. 外层DNS高可用方案
通过Dnspod D监控,线路/机房失效快速失效;
腾讯Httpdns方案,就近接入+多点容灾;
埋入客户端的IP直连方案;
2. 外层CDN高可用性
自建CDN 质量监控,调度系统,自动切换;
腾讯CDN 本身具有高可用监控,节点快速剔除故障节点;
HttpDns:客户通过嵌入SDK, 不经过传统 DNS 解析方式来使用 CDN 资源;
3. 外层高防高可用
自动为业务创建防护域名;
用户可以用CNAME方式使用防护域名接入高防;
防护域名可配置BGP优先解析,在攻击封堵后根据来源IP智能解析到归属线路;
构建接入层高可用
1. 接入层构建多可用多活
接入层通过DNS做解析,接入腾讯云;
业务跨可用区部署,利用CLB跨可用区分发流量的特性,将流量分发到多可用区;
利用云上容器服务,跨可用区部署业务,增加集群容灾;
容器Master服务跨可用区灾备,出现故障秒级切换;
容器etcd多台服务器跨机房容灾;
云下环境做测试和备份;
充分利用腾讯云CLB、容器服务、CDB等跨可用区特性,构建高可用容灾系统;
2. 接入层LB高可用
腾讯云CLB底层是基于TGW,本身具有高可用,具体如下:
1)多级容灾
跨园区容灾 ->交换机容灾
机架容灾-> TGW集群容灾
2)防攻击
流量攻击:过载保护
DDOS攻击:syn代理和LRU淘汰
3)安全性
黑名单、域名封禁
构建服务端高可用
3. 服务层框架高可用
2. 服务层高可用思路
服务的整体概览
服务无状态
拆分子服务
通信协议和交互接口
同步/异步
超时管理,自动熔断,
快速切换,慢服务隔离
独立扩展,快速扩容
服务单元条带化
数据层高可用
1. CBD高可用
故障一:数据库节点异常
只读从库、灾备实例数据正常;
后台隐藏实例可快速恢复业务;
后续动作需要后台新建隐藏从库实例;
故障二:可用区异常
主库及只读从库无法访问;
手动切换灾备实例为主实例;
后续动作需要通过追加故障时间后灾备实例binlog;
故障三:异常操作导致数据库受损
存在RTO,短时间无法快速恢复业务;
通过备份数据+binlog恢复数据;
主库、只读从库及灾备库数据连续性会导致全部数据受损;
2. DB Proxy高可用
通过DB Proxy实现:
跨机房容灾切换;
单机房快速HA切换;
3. 对象存储高可用
腾讯云对象存储COS提供异地备份功能,可以实现数据的异地备份和恢复。
移动端高可用
故障演练;
移动端报警平台;
移动端热修复;
移动端 HttpDns/IP直连/长链接push推送优化;
移动端监控响应时间/奔溃卡顿/启动时间/功耗/网络质量/CDN监控;
高可用演练验收
没看过瘾?这里还有
点击阅读原文,领取 COS 限时1元礼包!