需求理解与设计原则
需求理解
应用多活:应用多活包括流量分发、容灾切换,实现多云维度的数据、应用、 流量的端到端探活,主流程出现故障时可快速进行容灾切换。
数据一致性:数据在IDC与华为云之间准时化同步,可借助同步工具实现数据的实时同步或复制。
成本可控:充分利用云的弹性能力,实现在流量浪涌及容灾切换时,快速扩容资源。
现状分析
可靠性低:目前业务主要在一个IDC内部署,实现了PaaS层的双活,业务入口使用单入口的形式访问,存在单点风险。
业务部署:核心应用均实现服务化部署,入口层可根据规则往内转发,实现了业务分流。
数据库高可用:IDC内部署了mysql,Oracle,mangoDB等数据库,种类较多,实现了机房内
的高可用。
方案设计
业务内聚:核心业务流的请求,应用层能够在一个机房内闭环,避免出现跨云或跨IDC访问。
时延:根据IDC地域,选择华为云同城region,时延约为2~5ms。
主流程可用性优先:当发生故障切换机房时,优先保证主流程系统可用,提炼旁路及中心化业务。
核心数据主备:数据库双写改造复杂,优选数据层主备方案。
保证数据正确:在确保可用的情况下,需要对数据做保护以避免错误,尤其在进行切换和故障时。
强一致性:针对强一致性失误,建议分布式事务,完善业务状态机,能够在数据出现不一致的时候,通过状态机发现和纠正。
架构设计
架构说明
流量入口:提供流量分化及细粒度转发能力。
应用层:云原生业务的多云弹性,统一管理多云多地域容器集群,简化容器多集群的管理及运行,提供云原生应用生态全生命周期管理,应用统一跨云分发部署。
数据同步:提供本地数据库往华为云的备份能力,可实现数据的准实时同步。
基础设施高可用:充分利用云内的多AZ的高可用能力承载业务,实现IDC + 华为云整体的资源高可用。
方案说明
1.公网接入双活
- DNS中配置双AZ IP的两条A记录
- DNS域名解析返回IP1&IP2,IP1、IP2顺序随机,50%用户IP1/IP2,50%用户IP2/IP1
- 通过变更DNS A记录权重控制外网切流
2.内网精细化流量策略
- 独享型ELB支持跨IDC&云转发,7层故障时进行跨云转发
- 7层Nginx设置业务层流量策略,进行精细化流量调整
3.业务层
- 实例无状态,可横向扩容
- 多个实例负荷分担方式工作,任何一个故障,不影响业务
4.公共组件
- 注册中心各自部署集群,同时注册
- 内网域名服务器双云部署,故障时可独立本地支撑
5.消息中间件
- 业务单元化,本地生产本地消费,无跨云业务流
6.数据同步
- Redis:单边写保障数据一致性;本地读保障时延可用性;redis-shake+kafka单向同步
- MySQL:单边读写(按业务场景区分)基于binlog的DRS同步
- Oracle:DataGuard同步,单边读写
7.中心化组件迁移上云
- 成本较高&同步复杂度高&非主流程组件可单边中心化部署
- OBS提供跨机房高可用,全局服务,可对Ceph进行低成本替换,离线迁移至华为云
------ 四川奥深智慧科技有限公司 | Friday ------