传统业务上云:跨AZ容灾架构解析
本文由 网易云发布。
数字化转型浪潮之下,采用云计算服务提升业务敏捷性、降低运维成本,成为了传统企业的优选方案。网易云资深解决方案架构师张亮通过某物流企业客户的实际案例,分享了传统业务系统在云上的架构设计如何满足数据高可靠、业务高可用的需求,并总结了传统业务上云的常见问题和解决方案。
物流企业业务系统上云需求
对于物流企业来说,内部沟通、供应链协同对优化供应链效率提升核心竞争力非常重要。作为行业翘楚,该物流企业客户建立了一个企业级移动办公平台,该平台集成了即时通讯(IM)、企业内部的ERP、OA以及核心供应链信息,用于支持内部员工的内部沟通协作,会议、日程安排以及供应链信息、ERP信息、OA流程审批和办理的查询,平台同时也提供给上下游合作伙伴查询供应链信息,以满足供应链协同的需求。该系统最初部署在客户自建机房中,服务于客户内部员工,但为了给一些大型合作伙伴提供类似的能力,客户同时采用了网易云支撑系统的建设和运行。
客户自建机房和网易云基础设施存在一些差异,例如客户自建机房有共享SAN和NAS,并采用带库和商业备份软件来满足数据合规的要求(存储冷数据、归档),MySQL数据库运行在物理机上,而网易云作为成熟的互联网服务,采并没有提供共享块存储服务,数据库是运行在虚拟机上的。
由于该系统要作为一项业务给第三方提供服务,项目一期覆盖数万名用户,考虑基础设施的差异性,客户最为关注如下四个方面:
数据安全性:影响客户业务的数据,包括员工通信记录、日程和供应链信息等,必须保证最高的安全性和可靠性;
业务可用性:此业务系统是客户为其客户提供的服务,因此对于SLA关注度非常高。客户要求在极端状况下(整个生产站点不可用)需要有快速业务恢复能力;
功能:应用探活、监控告警、内网负载均衡(LB)、内网DNS等功能,直接影响客户的运维能力和部署高可用业务的便捷性;
性能:客户原有数据库使用物理机,采用虚拟机担心性能不足,需要避免高并发场景下会的卡顿甚至崩溃的情况。
网易云跨机房容灾架构方案
客户原有业务系统底层是一个传统的同城主备容灾双机房架构(主机房宕机,则备机房接管),在应用侧采用了Redis缓存、Kafka、内外网负载均衡,是一个类互联网架构。系统采用商业硬件全局负载均衡(GSLB)做站点间的容灾,后端存储有传统的SAN、NAS、磁带库和VTL(虚拟磁带库)等,持久化数据大部分在存储上,通过专线和存储能力做跨站点的快照同步和数据同步复制。一般说来,商业磁盘阵列的高级License会带这些功能,但高级License比较昂贵,且该方案的容灾能力极大依赖于阵列设备的容灾能力,一旦阵列设备出故障,数据存储就危险。此外,Jetty、Java应用间是软负载均衡的设计,对外有硬件负载均衡。
该业务系统在网易云上的部署是一个分步试水、逐步完善的过程。业务系统的即时通讯能力由网易云通信服务(云信)SDK提供底层能力,客户自己做上层的封装,云信和应用系统部署在不同的机房,通过网易云内部高速通信。刚开始的架构相对简单,没有考虑容灾,Redis、Kafka、RDS、NAS都映射原来的系统架构,GSLB取消,用Elasticsearch做日志搜索。
之后是跨机房容灾的完善。针对原有系统,运维部门每隔半年会进行一次容灾切换的演练,所以客户希望云上容灾也能满足数据可靠性、业务可用性的需求。
张亮介绍,云上跨机房容灾根据机房距离和网络延迟,可以分为两种:一是跨可用区(AZ)容灾,一般用来支持需要双活的业务;二是跨Region的容灾,一般是异地,两个机房比较远,网络延迟无法满足双活的要求。网易云为客户设计了跨AZ容灾的方案。客户最初在云主机中自己搭建Redis和Kafka,后来发现需要自己关注监控、高可用,但这是网易云现成的Redis和Kafka服务自带的功能。

网易云提供的容灾服务包括:
负载均衡:提供跨机房的负载均衡服务(NLB),每个机房是2个NLB实例(主备),但客户流量进来只看到同一个公网IP——如果生产站点AZ1宕机,路由会实现IP漂移,把IP关联到灾备站点AZ2上,客户不需要关注IP的变化。
数据持久化:提供跨机房的RDS高可用实例,生产站点主备2个实例,灾备站点1个实例(考虑成本因素),通过内部DNS访问,一边的RDS宕机,对于应用来说是无感知的,因为系统会自动把域名解析到灾备站点的RDS实例上。
文件系统服务:通过跨机房的复制做数据同步,对于用户来说,数据持久化不需要管。
Kafka:通过MirrorMaker做跨机房同步,它的消费者可以在灾备站点去消费Kafka和消息,如果只是部分服务宕机,系统可以提供跨机房的访问,当然延迟会比同机房高一些,这取决于应用对访问数据延迟的要求,如果延迟要求非常高,可能需要做应用单元化,尽量减少跨机房的访问,把一些对延迟敏感的请求放在一个机房内,这是业务架构上的设计。
张亮补充说,网易云支持应用去访问另外一个机房的RDS,但应用之间的容灾还需要客户自己做跨机房部署。NLB可以通过内网DNS判断请求是从哪个AZ过来的,从而让应用能够正确访问对应的底层服务。
跨Region和跨AZ不一样,后者在同一个VPC里面,前者在两个不同的VPC里面,网络延迟比较高,NLB没有提供跨机房高可用实例,对外IP不一样,需要外部有一个类似GSLB或者DNS的服务去做流量切换。其他的如RDS、Kafka的复制,依赖于VPC Peering,需要在核心交换机上做一些后台操作,让两个VPC能打通(默认内网是不通的),否则需要通过公网再从前端路由绕回来,无法通过机房内部专线直接访问。
跨Region的RPO(恢复点目标)比跨AZ要差,跨AZ的RDS可以做到RPO等于0,两边都写入以后,才能返回“写成功”。而跨Region,一边写完就返回“写成功”,如果数据只是在主站点写成功,尚未复制到灾备站点时主站点宕机,这就会造成数据永久丢失。传统架构下的Oracle RAC跨机房集群、存储双活的方案,其实每一次数据写入都是双写,才能实现双活。
所以,跨Region容灾一般用于两地三中心的异地灾备,业务可用性要求高的情况下,建议客户采用跨AZ容灾的部署架构。对于客户而言,基于云的跨AZ容灾方案,只是在容灾、监控、服务的使用方法上和自建机房有所区别,但满足RPO和RTO的要求没有问题。
张亮补充说,跨AZ容灾切换是客户自己做切换,RPO取决于客户运维团队多久才能感知故障、多久把灾备站点服务配置好,因为客户应用的配置比较传统,提前把后端的服务IP、DNS域名写入配置文件,而不是采用服务注册/服务发现的机制动态发布。如果进行应用微服务化改造,RTO还可以有很大的提升空间。
上云常见问题与对策
对于托管IDC、自建机房的传统行业而言,云基础设施带来的变化确实需要虑周全。基于网易云支撑传统业务上云的经验,张亮最后总结了传统业务上云的常见问题和解决方案。
云上很少有共享块存储。SQL Server提供的Always-On故障转移集群高可用方案需要共享块存储的支撑,但企业现在可以使用无需共享存储的SQL Server高可用方案,比如日志传输、Always-On可用性组等SQL Server 2012及之后的版本都支持的方案,都不依赖于任何共享存储形式。

VPC网络不支持广播、多播,而一些应用需要通过广播、多播的形式做集群。
Keepalived:升级到支持单播的新版本,在配置文件中指定使用单播,即可在VPC网络下正常工作。
Tomcat通过广播支持集群成员通信:一是使用Tomcat-Static cluster membership这种静态方式,通过在配置文件中手动告知集群节点有哪些成员,弹性伸缩比较麻烦,只适合规模小的业务;二是无状态化,把Session从Tomcat分出来,放到Redis之类的服务中。
采用N2N Peer-to-Peer VPN的方案,在VPC网络上再构建一个VPN网络,就可以广播,但这种方式会有性能损耗,可以用于POC测试、概念验证,生产环境慎用。
无物理磁带库。一些行业有合规要求,不经常访问的冷数据会存储在磁带库中。在云上有两种方案:一是通过云服务商提供的VTL存储网关,备份软件连接网关,可以把后端当做磁带库使用;二是现在不少的备份软件已经支持主流云服务商的对象存储服务,直接在备份软件中把数据备份到对象存储,成本比磁盘阵列或者NAS要低很多。
网易云为您提供对象存储、负载均衡等服务,感兴趣的朋友欢迎点击免费试用。
了解 网易云 :
网易云官网:https://www.163yun.com/
新用户大礼包:https://www.163yun.com/gift
网易云社区:https://sq.163yun.com/
传统业务上云:跨AZ容灾架构解析的更多相关文章
- QQ 相册后台存储架构重构与跨 IDC 容灾实践
欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者简介:xianmau,2015 年加入腾讯 TEG 架构平台部,一直负责 QQ 相册平台的维护和建设,主导相册上传架构重构和容灾优化等工作. ...
- ceph 对象存储跨机房容灾
场景分析 每个机房的Ceph都是独立的cluster,彼此之间没有任何关系. 多个机房都独立的提供对象存储功能,每个Ceph Radosgw都有自己独立的命名空间和存储空间. 这样带来两个问题: 针对 ...
- 极简配置,业务上云只需 3min
为了简化账号配置环节,实现本地一键开发部署,Serverless Framework 发布了微信扫码一键登录能力,支持用户在 Serverless Framework 环境扫码注册登陆,用户无需登录控 ...
- 阿里云OSS同城冗余存储正式商业化,提供云上同城容灾能力
近日,阿里云正式发布OSS同城冗余存储产品.这是国内目前提供同城多AZ冗余部署能力覆盖最广的云上对象存储产品,可以实现云存储的同城双活,满足企业级客户对于“发生机房级灾难事件时数据不丢失,业务不中断” ...
- 腾讯云COS对象存储占据数据容灾C位
说到公有云容灾,大家首先想到的是云上数据备份. 然而,随着企业核心业务逐渐从线下迁移到云上,客户提出了更高的要求.如何确保云上业务的高可用.数据的高可靠,这对云厂商提出了新的挑战. 腾讯云作为全球领先 ...
- 基于消息队列 RocketMQ 的大型分布式应用上云最佳实践
作者|绍舒 审核&校对:岁月.佳佳 编辑&排版:雯燕 前言 消息队列是分布式互联网架构的重要基础设施,在以下场景都有着重要的应用: 应用解耦 削峰填谷 异步通知 分布式事务 大数据处理 ...
- 阿里云基于OSS的云上统一数据保护方案2.0技术解析
近年来,随着越来越多的企业从传统经济向数字经济转型,云已经渐渐成为数据经济IT新常态.核心业务系统上云,云上的业务创新,这些都产生了大量的业务数据,这些数据也成为了企业最重要的资产.资源. 阿里云基于 ...
- QQ全量上云,你想了解的技术细节都在这
腾讯的业务体量非常庞大,在2019年,腾讯已拥有超过了100万台服务器,其中,社交业务包括QQ和空间的体量有近20万台服务器,且分布在全国三地. 把QQ这头大象搬到云上并非易事.作为腾讯最庞大.最悠久 ...
- 云中奈飞(一):Netflix的上云之旅
作者按: Netflix(译为奈飞/网飞)公司自1997年创立以来,已发展成为美国最大的互联网流媒体服务商.它从2008到2015年间长达七年的将其所有IT系统从自有数据中心迁移到AWS之上的旅程,在 ...
随机推荐
- objective-c中所谓的僵尸对象
正常情况下向已回收的对象发送消息时灵时不灵,具体要看该对象所占内存有没有被覆写.cocoa提供了僵尸对象(Zombie Object)这个功能,简单的说:启用该调试功能后,运行时会将所有已回收的实例转 ...
- Leetcode(59)-Count Primes
题目: Description: Count the number of prime numbers less than a non-negative number, n. 思路: 题意:求小于给定非 ...
- 如何在服务器上配置ODBC来访问本机DB2 for Windows服务器
如何在服务器上配置ODBC来访问本机 DB2 for Windows服务器 马根峰 (广东联合电子服务股份有限公司, 广州 51 ...
- PyCharm命令行输入
PyCharm命令行输入 写作原因 网上资料比较杂,版本较老,与现在的版本有区别,所以根据网上资料和自己亲手实验撰写此文. 设置方法 在菜单中按此路径设置: Run->Edit Configur ...
- aside元素
aside元素用来表示当前页面或文章的附属信息部分,它可以包含与当前页面或主要内容相关的引用.侧边栏.广告.导航条,以及其他类似的有别于主要内容的部分. aside元素主要有以下两种使用方法: 1.包 ...
- P1352 没有上司的舞会
题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...
- Word中去除/删除/删掉Equation Chapter (Next) Section 1
实际问题如图显示 Equation Chapter (Next) Section 1 . 具体操作步骤如下: 1.Word的"格式"菜单--"样式和格式",出现 ...
- pymongo "ServerSelectionTimeoutError: No servers found yet" 错误的解决
系统转移过程中,擅自把aptitude安装的mongoengine换成了pip安装,系统启动以后,报这个错误 报错提示: File "/usr/local/lib/python2.7/dis ...
- 算法竞赛之递归——输出1-n的所有排列
本文是博主原创文章,未经允许不得转载.我的csdn博客也同步发布了此文, 链接 https://blog.csdn.net/umbrellalalalala/article/details/79792 ...
- java中面试可能会问的问题
为了明年的面试,把面试中可能遇到的关于java的问题记录在下面,纯个人理解,如果有误,请指正! 1.java中拷贝的三种方式,以及他们的区别. 这三种方式分别是:直接赋值,浅拷贝,深拷贝.第一种直接赋 ...