近年来由于国内移动互联网的飞速发展,国内互联网用户也有了大踏步的飞跃。这对企业来说,既是机遇,也有挑战。
机遇在于,现实中如此多的互联网用户,都有可能是你的产品用户。尤其在当前流量为王的时代,如此大基数的用户,给互联网的产品带来了无限可能;同时,这也给企业的后台架构、运维体系提出了很高的要求,如果能够吸引到足够多的用户,却因为后台架构的可用性无法达到这种量级的标准,由于流量冲击过大导致后台架构崩溃,造成前端用户的不可用,从而造成大量的用户流失,这就是海量用户所带给企业的挑战。
在云计算时代,当“上云”已经成为一家互联网企业的标配之后,在云端,应该如何保障企业业务的连续性和可用性呢?IDC 在全球范围内针对多个行业下中小型企业(员工数小于 1000 名)的调研显示,近 80% 的公司预计每小时的停机成本至少在 2 万美元以上,而超过 20% 的企业估算其每小时的停机成本至少为 10 万美元。
而在当前国内互联网的大环境下,如果服务器宕机造成业务的不可用,所引起的连锁反应以及损失是不可估量的。你可以想象,如果在双十一当晚,电商 App 的支付接口出现了问题导致该业务不可用,所造成的损失会是多少。
因此,系统性能的高可用以及提前做好灾备措施已经成为了国内互联网企业的一个常态化认知。在云计算已经十分普及的现在,云端性能的高可用与否以及容灾措施的是否完善,正在成为企业衡量一家公有云厂商的重要标准之一。
腾讯云高可用解决方案架构图
应用层面的高可用,腾讯云在技术架构以及应用落地方面已进行了诸多实践,其中主要囊括了以下 6 点:
1、客户端接入高可用:通过在客户端引入接入层技术(云解析、httpdns 和 IP 直连),依靠腾讯云在国内的 69 组集群以及海外 12 组集群,通过 DNS 智能调度,任意节点发生故障均能无缝切换到其他节点,保证服务的高可用性,同时防止域名劫持;
2、针对外网接入高可用:腾讯云当前支持 40+BGP 线路,可实现对故障的快速调度切换,防止因为骨干网故障导致业务的长时间不可用。同时腾讯云提供跨地域的 LB 接入和 anycast LB 能力,帮助业务实现跨地域跨区接入,避免因为机房故障导致业务中断。
3、云内网络高可用:跨区域通过数据中心互联(广域网)互通,且双环路保护,云上所有内部网络均基于成熟的网络虚拟化技术和网卡绑定技术来保证网络高可用性,在 T3+ 以上数据中心中采用多台服务器组成高性能群组,不依赖于某个独立硬件,因而不存在单点故障,单个服务器异常不会造成业务影响,保证运行网络的可靠性。
4、云上服务器高可用:腾讯云主机服务支持宕机迁移无感知、数据快照、自动告警等功能,为用户的服务器保驾护航。同时云硬盘提供三副本专业存储策略,消除单点故障,支持用户设定定期快照,定期将数据进行快照备份,保证数据可靠性。
5、中间件高可用:方案设计中可以考虑缓存和 MQ 多可用区域部署方案,在保障数据正确的同时,能够对各类中间件进行快速切换,尽量减少业务感知。
6、数据层高可用:CDB 数据库支持实时热备、读写分离,且实现了同城多可用区、异地灾备和两地三中心等满足金融级跨地域容灾需求;于业务低峰期自动冷备,不影响现网业务,每份冷备数据保存 3 份副本,保证数完整性。同时保留 5 天 binlog 日志供数据无损恢复,支持 5 天内库、表粒度的任意时间点回档,最大限度保障数据准确性,可靠性。
基础设施层的高可用,依托遍布全球 25 个地区的 53 个可用区,通过在全球部署超 1300 个加速节点以及超 100T 的带宽储备,能够将服务内容分发到全网加速节点,支持千万级用户并发,有效解决跨运营商、跨地域不稳定、高延迟访问等问题。
对于越来越多的上云企业而言,除了选择有高可用架构的云服务商之外,更要搭建符合自身业务特色的高可用架构,才是业务稳定性的重要保证。
快手的短视频和直播一直是其最重要的两个业务,此类在线流媒体播放的业务,不仅会对带宽、CDN 等流量方面有着高要求,更要求自身系统业务的高可用,如果由于访问量突增导致的流量突发、数据库读取缓慢所造成的用户体验差或者业务不可用,会对快手的业务造成极大影响。
快手容灾架构图
为了确保平台服务的高可用,腾讯云从接入层、逻辑层、以及数据层帮助快手全面建设云端的高可用解决方案。
接入层:通过腾讯云专线链接各大机房,前端通过负载均衡接入,并且使用腾讯云的安全产品,保障全站的网络攻击。
逻辑层:逻辑层设计为多活模式,多中心业务部署,针对核心的业务在异地做多活,定期做演练,以保证能快速实现机房故障等灾难性故障的快速恢复。
数据层:数据层利用腾讯云数据产品的主备容灾架构做好足够的容灾,可以自动将数据库与腾讯云和客户 IDC 做异构系统备份。针对核心的业务在异地做多活,定期做演练,以应对机房故障等灾难性故障的快速恢复。
每日优鲜由于自身业务特性,在节假日有着较为明显的流量高峰期,需要长期面对高并发冲击的局面,因此之前将业务全部部署在单一云端上是有问题的,因为一旦出现网络异常、存储数据丢失等问题,由于缺乏相应的灾备能力,此类故障会导致业务线的全部不可用,尤其是在节假日人们此类需求较高的时期,如果出现此类问题,不仅会耽误到业务运营,还会对品牌构成负面影响。
云端单活热备部署
为避免上述情况的发生,每日优鲜通过在云端实现多云热备部署以及 DNS 应急切换来实现业务容灾切换,以保障业务的连续性。双云之间通过专线打通,实现双线冗余,系统异常时流量会切入腾讯云,并通过技术手段实现数据一致性。具体的技术实现细节包含以下 7 点:
腾讯云与每日优鲜现有的云端通过专线打通, 双线冗余 ;
基于每日优鲜现在的云端和腾讯云做业务主备架构,通过 DNS 调度,正常时流量引入每日优鲜固有的云端, 当此云端性能异常时, 再瞬间切换到腾讯云. 实现数据同步。
数据库通过 DTS 实时传输到腾讯云, 确保数据一致性 ;
DNS 到用户固有的云端出现访问故障,DNS 将指向切换到腾讯云。 故障时做好告警机制, 一旦 UC 故障超过 SLA, 切换 DNS。
启用业务层、中间件服务以及数据一致性。
数据仍然读写用户固有的云数据库, 应用 DTS 工具保证数据实时同步, 一致性。
专线延迟一般在 2ms 内, 延迟可控。
游戏行业对于高可用方案的需求则更为迫切,一款热门游戏,在极短的时间内需要应对 10 倍甚至百倍的用户量增长,如果后台系统架构的承压能力不够强,就会直接影响到游戏的顺利运营,游戏行业的用户争夺是非常激烈的,因此一旦出现不可用的状况,所带来的损失无法估计。
以乐逗游戏为例,乐逗游戏最重要的业务模块是游戏平台服务,为了确保该系统在特殊时期也能保持高可用的性能状态,乐逗游戏在腾讯云平台搭建了一整套异地容灾高可用解决方案。
乐逗游戏高可用容灾解决方案架构图
为了实现游戏平台服的跨城异地容灾,规避机房故障等灾难性故障对业务造成的影响,乐逗游戏从三个层面做好了相应的准备:
接入层:前端通过负载均衡做接入,并购买 BGP 高防包绑定 CLB 做 DDOS 网络攻击防御,同时在安全防护上接入腾讯云宙斯盾防护体系,以应对 DDOS 网络攻击。
逻辑层:游戏逻辑层设计成无状态,故障时可直接剔除。此外为应对业务用户激增,可在容量扩展的同时接入 Auto Scaling,根据业务流量动态扩缩容。部分单点模块采用高可用虚拟(HAVIP)实现 HA 架构,主机故障自动剔除,规避云主机单点故障。
数据层:数据层采用了 Redis+Mysql 的存储架构,采用读写分离架构和主备容灾架构做好 HA,每天将数据库冷备文件自动导出并同步到对象存储 COS 中做异构系统备份。针对核心的平台登录服和支付服在异地做双活,定期做灾备演练,以应对机房瘫痪等灾难性故障的快速恢复。
随着越来越多的企业将业务部署在云上,云端的故障已经成为企业不得不关注的重点,采用高可用架构和方案也成为企业运维人员必须思考的话题。除此之外,作为企业技术人员,如何保证企业业务和服务的稳定性,值得业界一起探索。
1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“InfoQ”微信公众号,文章版权归InfoQ公众号所有。