亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

从 “B 站 713 事故”看高可用系统的治理

  • 2022-10-20
    北京
  • 本文字数:3758 字

    阅读完需:约 12 分钟

从 “B 站 713 事故”看高可用系统的治理

随着数字化经济的不断发展,云计算成为了各行各业进行数字化转型的重要基础设施,越来越多的企业选择上云。然而,随着云上业务的规模与复杂度日趋増长,对云上的运维、安全和管理也提出了新的挑战。

 

为了让企业以及相关 IT 和业务团队更好地紧跟技术变革,利用好云技术、释放云能力使能业务发展,据悉,此前在华为上海研究所举办的华为云联创营 • 云上综合治理班携手 bilibili,并邀请到诸多业内技术专家,围绕着智能运维中的算法落地、bilibili"713 事故”后优化改进实践、叮咚买菜基础技术应对疫情保障的经验、华为云 SRE 运维体系和企业云上容灾备份实践等内容,共同探讨安全可靠确定性的云上治理之路。

 

之前受开发者广泛关注的 bilibili 713 事故 bilibili 在线 SRE 负责人武安闯在华为云联创营 • 云上综合治理班中做了详细的事故解析和技术优化实践分享,为企业制定高可用业务系统的治理方案提供了许多启发。

一、bilibili 713 事故:耗时近 3H 才全面解决问题

 

2022 年 7 月 23 日,一篇名为《2021.07.13 我们是这样崩的》文章在 bilibili 社媒发布之后,迅速引起业界广泛关注,这篇文章发布之后,在技术圈掀起了一段讨论热潮,很多读者觉得意犹未尽,期待 bilibili 继续剖析"713 事故”之后如何执行优化落地。在本次华为云联创营 • 云上综合治理班中武安闯就给大家了一个回复:

 

bilibili 713 事故的时间线是这样的,2021 年 7 月 13 日 22:52,B 站无法使用,大量客户反馈内部大量服务、域名接入层不可用报警,在 22:57,bilibili Oncall SRE 便发现是 SLB 故障,但因为 SRE 团队核心成员在 VPN 公司内网时也受影响,23:17 才陆续进入内网系统正式解决问题。23:23 bilibili APP 推荐、APP 播放、评论 &弹幕拉取、动态、追番、影视等多活业务读取恢复,当晚多活机房 SLB 容量过载,后流量下降,重启后恢复,但直播移动端首页接口因为没配置多机房调度,导致当晚没有及时恢复。

 

紧接着,bilibili SRE 团队开始进行三次 Lua 层面的变更回滚,但直到 23:55 依旧没有恢复。于是团队在 01:00 开始新建 SLB 集群、配置初始化,进行四层 LB 配置与公网线路配置,CDN 开始切换回源流量,直到 01:40,核心业务切换到了 SLB 新集群,业务全部恢复。

 

为了彻底消除了风险,第二天上午,bilibili SRE 团队开始复现问题,定位到 3 个主要原因:

  • 多活基架能力不足;

  • 切量强依赖 CDN 运维;

  • 业务多活元信息缺乏平台管理。

 

之后 bilibili 针对这些问题在多活基架能力建设和多活管控能力提升两方面进行了优化。

 

从多活基架能力建设方面,bilibili 优化了多活基础组件的支持能力,如数据层同步组件优化、接入层支持基于用户分片,让业务的多活接入成本更低;重新梳理各机房在多活架构下的定位,梳理 Czone、Gzone、Rzone 业务域;推动不支持多活的核心业务和已实现多活但架构不规范的业务改造优化。

 


从多活管控能力提升方面,统一管控所有多活业务的元信息、路由规则,联动其他平台,成为多活的元数据中心;支持多活接入层规则编排、数据层编排、预案编排、流量编排等,接入流程实现自动化和可视化;对接 CDN、存储等组件,实现了一键全链路切量,提升效率和准确率。



值得一提的是,目前 bilibili 支持在多活切量时的前置能力预检,比如容量预检、延迟预检、限流预检、隔离预检等,而且还实现了切量中风险巡检和多活流量、业务/应用 SLO、Trace 链路等核心指标的可观测。

图:风险预检


图:多活切量可观测


在经历了以上一系列优化后,多活相关故障解决效率大大提升。比如“713 事故”时,如果业务 A 故障,那就要首先切量到多活机房,SRE 跟研发沟通后确认需要切域名 A+URL A,然后要告知 CDN 运维进行切量,全程至少需要半小时。而在优化后,SRE 与研发确认切量的业务、组件、流量比例后便可以实施动作,执行全程仅需 3-5 分钟。目前 bilibili 多活业务全部接入、生产已演练 80 多次,整体运行都非常稳定。

二、稳健的多活架构的本质是“高可用架构”

 

事实上,类似于“bilibili 713 事故”的类似事故并不少见,这也是为什么上个月复盘文章发出就引发众多开发者关注的原因。构建稳定的多活架构说到底就是高可用架构构建问题,高可用正如华为云多活高可用解决方案架构师郑学强在本次华为云联创营 • 云上综合治理班中所说的那样,“当前环境下,企业对业务连续性 (BCM) 的追求,促使应用向高可用架构演进。”

 


在企业需求和行业发展要求的推动下,华为云一直在努力完善多活高可用解决方案。



这个方案能够实现异地多活、单元化,并且支持流量自治,非常适用于对容灾可靠性要求极高、业务对时延敏感且要求数据分区化的企业:

  • 用户访问流量:通过 DNS 的 GSLB 特性实现业务访问流量控制,并在网关层进行流量分区管理和纠错;

  • 网关层:进行流量路由标记,流量染色,并通过染色结果精准调度;

  • 数据层:数据禁写保护,避免脏数据,数据双向同步,单元化数据要通过网关判断纠错,数据层 SDK 进行多层数据禁写;

  • 容灾恢复切换:通过多活切流,并按照单元化的流量分配,切流过程汇总数据禁写保护,保证数据一致性;

  • 容灾演练:客户自行通过人工/脚本方式进行演练或基于第三方软件进行容灾演练。

 


该方案有两个核心技术亮点,首先,华为独有的探活仲裁管理面 DCG,以及配合切换的 SDK,多层配合实现业务双活。在公网接入层中,DNS 中配置双 AZ IP 的两条 A 记录,DNS 域名解析返回 IP1&IP2,P1、IP2 顺序随机,50% 用户 IP1/IP2,50% 用户 IP2/IP1。在端侧使用 URLConnection 或 OKHttp 调用 Http 接口,并设置超时为 8-10 秒;端侧域名解析获得两个 IP,缓存在本地,在 TTL(通常 300 秒)时间内使用缓存;端侧默认使用第一个 IP 访问;如果第一个 IP 访问超时,底层会自动尝试第二个 IP(RFC3484)。在负载均衡层中,支持 ELB 双 AZ 转发、SLB 双 AZ 转发。如果 SLB 节点故障,ELB 通过健康检查会自动摘除故障 SLB 节点;如果 App 节点故障,SLB 通过健康检查会自动摘除故障 APP 节点。而在业务层,实例无状态,可横向扩容;多个实例负荷分担方式工作,任何一个故障,不影响业务,同时业务读写 AZ1 的数据层。如果 AZ1 中数据层发生故障,则可由 DBMonitor 自动切换到 AZ2 中的数据。



其次,两地三中心——应用跨 AZ 双活、跨 Region 容灾。从系统架构方面来看,容灾区域可双活或者单 AZ 部署,根据业务进行评估。MAS 容灾管控负责管理端到端同步任务,数据同步关系建立、展现、切换,同时负责监控主备 Region 状态,还提供主备 Region 容灾切换能力,用户在切换时可根据告警手动切换。 在容灾切换停止主 Region 业务(入口流量、定时任务等)后,MAS 则停止主-备数据同步任务,并启动备-主数据同步任务,用户修改 DNS 配置完成容灾切换。

 

在跨 Region 容灾切换方面,华为云提供了切换编排能力,常见的切换动作流:主 Region 数据库设置只读(可选)、停止跨 Region 数据库容灾同步任务、容灾 Region 的数据源升主、容灾 Region 应用启动/扩容、DNS 切换到容灾 Regin、启动容灾 Region 的应用侧定时任务。



当生产站点因为不可抗力因素或因设备故障导致应用在短时间内无法恢复时,这样的容灾方案可以很好的解决运维事故,以满足 SRE 需求。

 

除此之外,典型的双活架构日常非故障时可以将流量负载分担到不同的分区,减少并发压力,像 bilibili 这种自媒体视频平台很容易因为突如其来的热点而产生突发性高并发流量,华为云提供的这种多活高可用解决方案还可以很好地应对这种难题。

 

从华为云多活高可用的实践方案中我们可以看出,华为云在高可用方面的表现非常优秀。像“华为终端云服务迁云+双活”,其业务增长年复合率已经超过了 30%。从 2013 年至今,该架构可靠性已实现 4 个 9,运维成本降低了 30%,服务类型已经超过 30 种,弹性伸缩效率达到 1k/min,安全能力以达到 T 级。



在消费者中国区云化双活项目中,截至 2018 年 Q2,其所有业务流量就已由公有云环境承载。目前系统运行正常,华为精选、协议服务、A/B 测试平台等新业务也已在公有云高可用部署上线,另外借助此方案已经完成了中国区公有云双 AZ 故障的应急演练,涉及已云化的 12 个业务,演练结果均符合预期,有效地确保了公有云双 AZ 的可靠性。

三、写在最后

 

系统可用性是通过可用性指标来进行衡量的,我们说的“高可用”则是指这个系统 99.99% 的时间都是可用的,这也就意味着一年中的不可用时间只占 53 分钟,在这个飞速发展的数字化时代,高并发流量突发、设备突发故障或其他不可预知的情况为企业提出了挑战,“4 个 9”真的不是轻易可以做到的。

 

面对企业上云之后带来业务规模与复杂度的日趋增长,华为云基于和伙伴的协同实践构建了一套完整的面向云上应用的立体化治理系统,通过融合 AOM、APM,提供云应用基础设施层、应用层、业务层的运维能力,并对各类资源可实现多维度实时监控,通过应用与资源关联分析技术,实现问题快速诊断和修复,保障云上应用持续稳定运行。

 

如今上云已经成为企业战略部署的一部分,上云这件事对于企业来说已经是个既定命题,而如何构建高可用系统架构成为企业业务上云后新的关注点之一,通过一系列的自动化手段实现业务的高可用是目前所有企业常用的解决方案,华为云一直在持续加强技术研发和创新,为智能世界构筑云底座而不断展开技术探索,全面助力千行百业的数字化转型。


关于华为云与 bilibili 的更多技术,请关注↓


2022-10-20 12:4310317
用户头像
鲁冬雪 InfoQ 策划主编

发布了 340 篇内容, 共 200.0 次阅读, 收获喜欢 273 次。

关注

评论

发布
暂无评论
发现更多内容

罗拉Rola-IP海外住宅IP简介:全球互联网接入的另一面

Geek_ccdd7f

如何挑选挑选到优质的HTTP代理平台呢?

Geek_ccdd7f

软件测试/测试开发丨人工智能产品质量保障:挑战与创新

测试人

人工智能 软件测试

2023开源产业生态大会OpenHarmony生态分论坛开幕在即

新消费日报

告别繁琐,ModelArts一键解决车牌号识别难题

华为云开发者联盟

人工智能 华为云 华为云ModelArts 华为云开发者联盟

高性能、无界限:选择国外服务器的原因和技巧

一只扑棱蛾子

国外服务器

软件测试 |人工智能引领未来学习趋势——ChatGPT智能学习助手

测吧(北京)科技有限公司

测试

全方位探索:思维导图能在这些地方派上用场!

Geek_09ea8e

思维导图 工具库

深度长文:全面探讨流程图的应用,打开你的新视野

Geek_09ea8e

流程图绘制工具

数字孪生协同仿真:复杂电机篇

DevOps和数字孪生

数字孪生 电机 仿真建模

IP代理如何助力你的营销业务?如何选择?

Geek_ccdd7f

蓝易云:通过netstat命令查看进程与端口的对应关系?

百度搜索:蓝易云

云计算 Linux 运维 云服务器 netstat

【2023云栖】郭瑞杰:阿里云搜索产品智能化升级

阿里云大数据AI技术

搜索引擎

软件测试 |人工智能数据生成,ChatGPT引领测试新风潮

测吧(北京)科技有限公司

测试

令人期待的 CSS 新功能:让编码更高效

这我可不懂

CSS

MySQL索引入门

互联网工科生

MySQL 数据库

TextSoap for Mac(文本格式清理工具) v9.4.1永久激活版

mac

苹果mac Windows软件 TextSoap 文本格式清理工具

媒体行业的3D建模:在影视中创造特效纹理

3D建模设计

AI纹理 影视视觉特效 3D特效

蓝易云:高防IP如何防止爬虫和Web攻击?

百度搜索:蓝易云

云计算 Linux 运维 Web IP

可怕!.Net 8正式发布了,.Net野心确实不小!

不在线第一只蜗牛

.net 编程语言

Util应用框架开发环境搭建(八)- 安装 Seq

何镇汐

开源 后端 软件开发 .net core

罗拉rola-ip详细解析HTTP协议连接与服务器

Geek_ccdd7f

罗拉rola-ip为您详解HTTP网络通信的标准语言解析

Geek_ccdd7f

YOLO 施工安全帽目标检测模型

3D建模设计

目标检测 YOLO模型 安全帽模型

Util应用框架开发环境搭建(九)- 安装 Exceptionless

何镇汐

开源 后端 .net core

HTTP方法罗拉rola-ip全面解读

Geek_ccdd7f

人工智能 | 开启智慧学习新时代—与AI对话,高效提升学习效率

测吧(北京)科技有限公司

测试

详解数据库SQL中的三个语句:DROP、TRUNCATE 、DELETE

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

小飞贼老牌防火墙软件:Little Snitch for Mac激活版下载

影影绰绰一往直前

Codewhisperer 使用评价

亚马逊云科技 (Amazon Web Services)

Python 人工智能 云上探索实验室 Amazon CodeWhisperer Amazon Cloud9

以程序员的身份使用curl获取速卖通详情

Noah

从 “B 站 713 事故”看高可用系统的治理_服务革新_鲁冬雪_InfoQ精选文章