越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成为企业急需解决的问题。
韧性是应用程序抵御中断或从中恢复的能力,包括与基础设施、依赖服务、错误配置、网络问题和负载激增相关的中断。在亚马逊云科技,构建云韧性是一项最基础的工作。
事实上,在云计算的韧性技术实现中,亚马逊云科技关注基础设施、架构设计和运营机制。早在2006年开创性的发布了第一款云服务,时至今日,亚马逊云科技提供了超过 240 种功能全面的服务;2023年,亚马逊云科技平均每天会稳定的启动超过1亿个AmazonEC2实例,平均每秒稳定的响应100万亿次的控制平面API请求,被全球数百万客户选择并信赖,连续13年蝉联Gartner云基础设施和平台服务魔力象限领导者。
一般来说,系统故障的归因分为三类:基础设施层,包括数据中心、主机、机架、网络故障,或自然灾害导致的损坏;架构设计层——数据状态、应用程序状态异常、依赖项失效等;运营机制层——由运维操作、代码部署、配置错误等引起的故障。
“亚马逊云科技基础设施里最核心的是对基础设施的‘设计’,也逐渐成为行业的标准——建立数据中心,以城市为单元,即Region。可用区(AZ),是区域的下一级。亚马逊云科技将每个逻辑数据中心组称为可用区。每个区域由三个或更多可用区组成。每个可用区又由多个或单个超大数据中心连接组成。每个可用区的数据中心都有独立的电力、制冷和物理安全设施。”亚马逊云科技大中华区解决方案架构总经理代闻日前在接受笔者的采访时表示,同一区域内的可用区之间具有足够的距离,一般在约100公里内,这意味着一个可用区发生电力中断,自然灾害时,区域内其他可用区不会收到任何影响, 安全距离既能防止相关故障,又能实现单位毫秒级延迟的同步复制。
另外,在可用区内部,可用区之间,区域和区域之间,均铺设光纤线路两两互联,实现高速数据传输的同时任一连接是冗余的。
以中国大陆两个区域为例:可用区内部,宁夏或北京区域的每个可用区内有多个数据中心,他们两两之间铺设多条冗余链路互联,可用区内任何数据中心连接直达。
可用区之间,宁夏或北京的每个可用区间由至少两个的传输中心互联,任一可用区的任一数据中心均有多条冗余链路与传输中心互联,跨可用区的任意一个数据中心可通过传输中心互联。
区域与区域互联:在宁夏和北京区域分别实现多层级互联韧性保障之后,北京和宁夏之间通过冗余的连接中心站点和分布的冗余链路互联。这些连接中心站点之间的大带宽冗余链路形成亚马逊云科技坚实的基建骨干网络。
截止目前,亚马逊云科技在全球34个地理区域运营108个可用区,包括刚刚在马亚西亚推出的新区域,这将帮助中国出海企业以更低延迟构建、运行更接近最终用户的应用程序。
2004年的一次故障,让亚马逊云科技意识到单体架构缺陷。
“亚马逊有一项叫做超值运费的服务,订单超过 25 美元就可以免运费,当时数据库集群运行在一个 Oracle RAC 集群上面,为了扩大这个规模,我们采用了共享磁盘的架构,但是因为数据库的锁的问题,导致登录的代码也出现了bug,导致数据库宕机 12 个小时,亚马逊全栈瘫痪很久。”代闻表示,一个系统没有做分布式,就没有好的韧性,没有很好利用底层的基础设施,肯定是不能够适应未来扩展性和用户的需求。所以,在韧性技术架构方面,亚马逊云科技总结云服务自身韧性的四大要素:区域隔离,多可用区;控制面和数据面独立;单元架构;随机分片。
具体来看,根据故障隔离边界,亚马逊云科技将服务划分为可用区级、区域级和全球级三种类别,从而控制故障发生时对客户的影响范围;此外,亚马逊云科技将服务拆分为控制平面和数据平面两个层面,这样既确保云服务的数据平面能够独立于控制平面的状态持续稳定运行,还可独立扩展互不影响;但愿架构设计的核心思想则是将整个系统分解为更小的独立单元,当发生故障时,只有该单元受影响,而不会导致整个系统瘫痪;随机分片,可以进一步提高整个应用和系统的可用性。
为确保云服务的韧性,卓越的运营和机制至关重要,也是亚马逊云科技的差异化优势之一,亚马逊云科技的运营机制总结为4个模块:服务责任模型、运营就绪审查、持续安全部署、纠错流程。
“在与客户和内部团队展开多年合作的基础上,亚马逊云科技为韧性构建工程也总结很多的经验。”在代闻看来,系统韧性的提高是持续的过程,而不是一次性的努力,业务需求、可靠性、成本、系统复杂度之间取得均衡,以标准软件开发生命周期为蓝本,可轻松整合到企业现有流程中,而且需要从业务、技术与持续运营等多个维度来帮助企业提高系统韧性。
基于经验分解, 亚马逊云科技开发了韧性系统建设生命周期框架, 该框架包含五个关键阶段, 并强调韧性是一个持续的生命周期,需要不断重复五个阶段,以应对不断变化的环境和需求。
第一个阶段,设定目标。组织需要明确定义韧性的目标和要求,评估现有系统的韧性水平,并制定改进计划,重点环节包括系统风险识别和业务指标识别。在此阶段,Amazon Resilience Analysis Framework可提供指导方案。
第二阶段,设计及实施。组织应基于韧性最佳实践,构建具有适当韧性控制措施的工作负载和系统。亚马逊云科技提供了许多增强韧性的服务和功能,如自动扩展、负载均衡、备份等。重点环节包括:备用、高可用方案,容灾方案等。Amazon Aurora和Amazon DynamoDB,都提供多可用区多AZ的同步功能;使用Amazon Aurora Global Database,其中单个Aurora数据库可以跨多个区域,以实现快速本地读取和快速灾难恢复。
第三阶段,验证和测试。提高通常的测试以及混沌工程,验证已知风险,探索未知风险。重点环节包括可观测性建设、混沌工程等。用户可以通过Amazon Fault Injection Simulator(FIS)简答的步骤定义韧性目标、根据这些目标评测韧性状况. 并直接得到实施改善建议,还可以通过该服务创建并运行 故障注入服务(Amazon FIS)实验,这将模拟现实生活中对应用程序的干扰,帮助客户更好地了解依赖关系并发现潜在的弱点。
第四阶段,持续运营。实施各种运营最佳实践,如自动化、监控、变更管理等,持续提高系统的可观测性和自动化性。
第五阶段,响应和改进。定期回顾韧性策略和措施的有效性,总结发生事故的根因,避免问题的再次发生,不断进行调整和改进。
写在最后
在中国山西省朔州市应县有一座木塔,是世界上现存最古老、最高的木结构塔,距今已有近千年的历史。应县木塔之所以能够历经近千年而屹立不倒,除了地质和环境选择之外,还有精巧的设计和维护。
“应县木塔矗立1, 000 年,亚马逊云科技到2023 年每天稳定启动的这个Amazon EC2虚拟机的实例达到一个亿。平均每秒API 的这个请求数 100 万亿。”代闻认为,在工程领域里边其实很多的事情是相通的,韧性这本身也是一个工程概念。亚马逊云科技希望客户能够采用同样的单元架构方法论,来最小化自身应用的爆炸半径,提高可用性。