作者介绍
万守兵:腾讯云行业架构师,对云上双活架构、迁移方案有比较深的了解,现主要负责腾讯云泛互行业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监控;
高可用演练验收
没看过瘾?这里还有
- 网站全套服务:从0到1
- 存储分发加速解决方案!
- 混合云存储:大数据应用的上云之道!
- 腾讯云COS全球加速让全球用户加速访问!
- 基于SCF+CloudMonitor实现COS敏感操作监控告警!
点击阅读原文,领取 COS 限时1元礼包!