业务发展,“稳”字先行!
当今,数字化转型已经驶入快车道,同时受到疫情常态化的影响,企业构建IT系统容灾能力,既是保障自身业务发展的需要,也是承担社会责任实际要求。
容灾方案发展阶段
回顾企业容灾方案的发展,通常有这样四个阶段:1、数据冷备:实现简单,无需业务改造;
2、在线热备:因为冷备只备了数据,故障恢复时需把应用服务部署起来,恢复时间较久;常态下热备服务不提供在线访问,导致资源大量浪费,且可靠性难保障;
3、同城双活:相比于异地多活,实现起来较为简单,业务改动较少,可提供在线服务,让资源有效利用,故障恢复时间比较短;
4、异地多活:多活实现比较复杂,需要业务做Set化的改造,同时运维也较为复杂,但优势明显——故障恢复时间非常短。
那么,有没有一种方案,可以避免投入过多资源,减少业务改造,并且维持较低的运维成本,同时缩小故障恢复时间呢?
腾讯云通过分析众多客户实践与案例发现,同城双活已经能够满足绝大多数客户容灾的需求。结合内外部不同阶段用户的容灾架构落地经验,腾讯云总结提炼了一套以低成本为核心的云原生容灾解决方案,解决了不同行业、不同阶段客户的容灾场景,如同城双活、两地三中心、跨云多活、跨云灾备、混合云等。
详解腾讯云原生同城双活方案
在年1月7日举办的TOPSummit上,腾讯云泛互联网行业首席解决方案架构师邱浩,详细介绍了腾讯云原生同城双活方案。
在接入层,腾讯云负载均衡CLB产品在跨可用区做主备部署,单可用区出现故障的时候,流量不受影响,外网流量引入到备可用区。负载均衡器在非常短的时间(约30秒)内,即可切换到备可用区恢复服务。主可用区恢复之后,CLB能够探测到并自动把流量恢复到主可用区。整个切换不需要人工操作,故障恢复时间比较短,一般分钟级就能够恢复。
值得注意的是,负载均衡器只有主可用区不可用的时候,才会切换到备可用区,而不是出现一个故障就会整体切换,因为整体可用区的切换会对业务带来较大的影响。
在数据层,保障数据一致性和可靠性至关重要。邱浩详细介绍了腾讯云数据库MySQL容灾方案的最佳实践。在数据一致性方面,通过强同步策略,保证数据一致性;同时,通过内核修改和优化,提升TPS的吞吐能力。在高可靠方面,腾讯云数据库实现了整条链路的可靠性保障,即使用户选择了第一和第二个可用区来部署数据库的实例,云数据库会在不可见的第三个可用区也部署探测节点,实时探测MySQL主节点与备节点运行状况,真正做到在一个可用区或者网络分区,把故障剔除掉,保证数据库可靠性。在低成本方面,一般来说核心数据库高可用是一主两备、部署在同一个可用区,在升级为跨可用区部署的时候,在后台可以把两个备库其中的一个移到备可用区,这样对于成本来说是零增加。此外,发生故障之后,云数据库MySQL读写访问的IP完全不需做变更,应用层不需重新发版,也毋需通过中间件修改访问IP,整个故障切换和恢复都由云数据库后台自动完成,免去用户手工恢复环境的代价。
接下来,邱浩还详细介绍了云上缓存数据库Redis是如何实现故障还原、高可用性。一般来说,业务对于缓存数据库Redis的访问性能要求比较高,比如一次请求只有0.1毫秒,但是跨可用区访问的网络延时大约需要1毫秒,于是读取大量缓存的时候就会有性能损耗。通过腾讯云网络就近接入能力,使应用层感知到本可用区Redis部署在哪里,在读取的时候优先就近访问本可用区的副本节点,这样无论是从哪个可用区读取时,都是在访问本可用区的副本。这样就提供了一种本地访问体验,并且降低了请求的耗时。此外,云上产品还将Redis内核需求化,切换时能够指定从库权重。
如果是自建Redis,就需要应用每一台应用客户端,实现就近感知的能力。由每一台客户端探测Redis所有的副本时延情况,选择一个最低网络时延副本分发流量。而云上,通过网络、网关,路由器可以自动学习,感知到它的网络就近路由信息,不需要应用程序再做额外探测。
对于极致可用性的场景,可以把数据库副本分散在三个可用区。当一个可用区主节点发生故障时,还有两个可用区有容灾能力。这样的好处是增强了可用区能力,缺点则是需要更多的资源投入。
接下来,邱浩详细介绍了腾讯云数据库MongoDB容灾方案、腾讯云消息列队Kafka容灾方案、ElasticSearch容灾方案、COS容灾方案。其中,腾讯云数据库MongoDB能够实现自动选主协议。云产品实现逻辑与社区版本类似,但是进一步优化了内核锁粒度。Mongo一定要部署到三个可用区,避免单个可用区出现故障的情况。同时,Mongo在云上也有就近接入的特性。
腾讯云原生同城双活案例
之后,邱浩通过一个案例详细介绍了腾讯云如何实现单可用区升级为双可用区双活架构:国内某领先电商SaaS平台,其业务需求全部部署在公有云单可用区。一旦出现可用区故障,发生服务中断,就会影响其上百万商家与上亿买家。由于此电商平台业务资源数量众多,如果使用热备方案,成本浪费比较严重。同时,由于该平台使用了大量的数据层或中间件服务,如果完全依靠自身做改造,需要投入非常大的精力;另外,数据同步与环境管理的代价也比较高。
平台使用腾讯云云原生同城双活方案之后,由于双可用区都是百分之百承接流量,资源有效利用,业务毋需改造,运维代价大大降低,故障恢复时间也降为分钟级。
解决架构升级的挑战
在架构升级时会遇到一些挑战:老的业务会面临流量二次穿越问题,这就造成了两个可用区之间的网络延时;经过多次二级流量穿越之后,就会导致访问时延在极端情况下放大十数倍,影响业务性能。通过智能流量调度方案,可以实现