使用亚马逊云科技故障注入模拟器提高应用程序弹性

云计算
re:Invent
0
0
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 亚马逊云科技提供隔离边界,包括可用区和亚马逊云科技区域,可用于满足操作的高可用性和连续性要求。为了验证应用程序的行为是否符合预期,测试其对损害的响应至关重要。本讲座涵盖如何使用隔离边界构建弹性应用程序的基础知识,深入探讨如何使用亚马逊云科技故障注入模拟器 (Amazon FIS) 测试隐藏问题,并提供有关持续弹性的最佳实践,以帮助您防止回归并保持应用程序的可用性。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共2000字,阅读时间大约是10分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> 阿德里安·霍恩比(Adrian Hornsby)是亚马逊云科技(Amazon)可靠性团队的一位首席工程师。他在演讲开始时向观众提出了一个简单但关键的问题:停机时间是何种代价?在听到数百万美元的估计后,阿德里安透露了一些来自最近调查的惊人统计数据。根据一项调查,91%的企业估计,仅仅一小时的停机时间成本约为30万美元。更令人担忧的是,对于44%的企业来说,这一数字会高达每小时100万美元。对18%的公司来说,系统停机每小时的成本会超过500万美元。 用更容易理解的数字来表示,阿德里安分享了一个经验法则:如果你从未真正考虑过停机时间的成本,那么一个好的经验法则是,它平均起来相当于每分钟10,000美元的成本。让这些数字沉下去吧——从30万美元到500万美元,仅一小时,或系统不可用时的每分钟10,000美元。正如阿德里安所说,这些停机成本远远超过了大多数人直觉上的预期。 这些惊人的每小时或每分钟停机成本清楚地表明,为什么今天建立弹性对商业如此重要。当系统出现问题时,影响远不止是在故障期间立即损失收入。停机时间还可能严重损害品牌声誉,客户在出现问题后立即失去信任并开始探索其他选择。合规问题也会在停机时间期间出现,这可能产生重大的监管和法律后果。甚至像招聘顶尖人才或保持健康的股价这样的关键业务因素也会因为定期的停机事件而受到威胁。 阿德里安分享了另一个令人震惊的与停机相关的统计数字:经历定期停机事件的公司往往其成本比停机较少公司的成本高出16倍。只需想一想连锁反应——更高的成本最终意味着创新、员工流动性、保险费率的资金减少、利润和股息的降低。频繁停机的累积影响使得弹性成为了一个真正的存在主义优先事项。 根据阿德里安的说法,现实是,复杂的现代IT系统不可避免地会有一些停机时间。即使是最简单的客户端-服务器设置也存在无数的潜在故障点,例如网络延迟、验证错误和数据库拥堵。如今,这种扩展已经应用到了许多企业现在所依赖的基于云的庞大系统中,可能出现的故障组合令人震惊。 作为一个具体的例子,阿德里安详细描述了甚至在基本的客户端-服务器架构中也可能出现的多种故障步骤: - 客户必须创建消息并发送给服务器 - 服务器需要验证消息并在数据存储中更新状态 - 服务器创建响应并将其发送到网络 - 网络将响应传递给客户 - 客户验证响应并更新本地状态 由此可见,即使只有几个组件,也已经存在大量的潜在问题,如网络延迟、验证错误、数据库拥堵等。现在想象一下具有数百个服务和依赖项的系统——故障情况会呈指数级增加。 因此,问题是:公司如何应对和减轻不可避免的故障带来的影响?这是韧性工程概念的核心问题,正如在实践中所深入探讨的那样。 阿德里安解释道,韧性被分解为四个支柱:预期、监控、回应和学习。预期涉及设想可能的故障场景并设计能够承受它们的系统。监控意味着对系统在停机期间的行为有透明度。回应涵盖了从故障中恢复所需的操作实践。而学习则涉及到在事故发生后分享最佳做法。 阿德里安指出,人们往往只在考虑韧性时想到技术本身。但真正耐用的系统需要在这些四个领域中结合文化、机制和工具。 在这些韧性支柱的基础上,亚马逊云科技已经制定了其自己的韧性生命周期框架。这个持续的过程包括设定目标、设计和实施系统、评估和测试、观察和回应以及学习。 Adrian指出,团队可以在产品生命周期的任何阶段加入,而不仅仅是起始阶段。例如,某些团队在近期重大事故发生后可能会专注于测试,从而为实现更高弹性目标和重新设计带来富有成效的对话。关键在于,产品生命周期并非一成不变的线性过程——追求弹性的过程永无止境。 在深入研究系统设计的过程中,Adrian强调,故障隔离边界可能是最重要的弹性概念。因为失败在所难免,策略应该是双重的:一方面是为快速恢复进行架构设计,另一方面是在组件出现故障时限制影响范围。这就是故障隔离发挥作用的地方,就像船舶船体中的水密舱一样。 Adrian列举了一些常见的故障隔离边界示例,包括亚马逊云科技的地区和可用区(AZ)。一个地区由两个或更多的AZ组成,每个AZ都代表具有独立电源、网络和冷却隔离的数据中心基础设施。在一个地区的AZ之间,通常相距约100公里,这种距离足够近以确保它们之间进行低延迟同步复制,同时又能抵御区域性灾难。 Adrian还提到了其他重要的隔离边界,包括作为一组资源的基本组件,这些资源可以在AZ内水平复制,后面还有一个如Route 53的路由层。这允许自动将流量从任何不健康的组件中移走。事实证明,细胞模式在亚马逊云科技上的弹性服务中是可靠的。 例如,Adrian解释说,你可以创建一个包含支持应用程序的实例和数据库的细胞,然后在这些AZ中复制相同的细胞。Route 53在这些细胞之间路由流量。如果一个细胞发生故障,流量将被转移到其余的健康细胞,直到修复完成。 另一种弹性设计模式是将控制平面(处理配置和设置)与数据平面(实时生产环境)分开。目标是尽可能简化数据平面的操作,因为控制平面往往有更多的复杂逻辑和故障时的依赖关系。保持数据平面静态和无状态防止了级联故障。 阿德里安还探讨了静态稳定性的概念,即设计系统以应对故障,而不需要进行任何动态重新配置或控制平面更改。他通过以Lambda为例进行了说明,该服务使用多区域部署和自动缩放组来实现静态稳定性。通过在不同区域预先启动冗余函数实例,Lambda能够在不依赖复杂协调的情况下应对流量峰值。 这引发了对评估和测试故障隔离系统的关注。阿德里安表示,尽管人们经常讨论故障隔离的最佳实践,但在实际故障场景中测试这些设计在实际操作中仍然具有挑战性。 为了解决这一问题,亚马逊云科技两年前推出了一项名为FIS(现已更名为故障注入服务)的功能。总体而言,FIS允许用户有意向系统中引入故障,以便观察其响应并提高弹性。 阿德里安解释说,这种故障注入测试揭示了各种潜在问题,包括缺失警报和不足的可观察性。此外,它还为客户团队的“操作肌肉记忆”提供了宝贵的实践经验,即在事故发生时的快速响应和执行操作手册的能力。这种方法与科学方法相一致,即先根据对系统行为的假设进行实验,然后再验证结果。 阿德里安强调,重新验证假设至关重要,因为诸如配置偏移之类的问题可能导致过去的解决方案不再适用于未来。定期进行故障注入测试有助于在系统和流量模式发生变化时保持信心。 因此,阿德里安欢迎他的同事Iris上台,让她详细介绍FIS以及亚马逊云科技最近宣布的一些令人兴奋的新功能。 关键的一点是,通过IAM角色授权FIS访问和使用您的资源。Iris推荐采用限制性策略,以便明确规定谁可以进行实验以及他们可以运行何种类型的实验。这有助于防止意外的滥用。 随后,她详细解释了端到端的流程:在控制台或CLI中定义实验模板,指定操作、目标、保护措施等。启动实验后,FIS在执行实验的过程中,您可以在CloudWatch和其他可观察性工具中实时监控实验情况。实验将持续进行,直到完成或因为违反保护阈值而被停止。 Iris解释道,FIS支持在各种亚马逊云科技资源类型上触发故障,包括计算、存储、网络、数据库等。今年推出的一些新功能包括针对EKS和ECS的容器级故障,以及原有的EC2实例故障。亚马逊云科技还在不断根据客户反馈增加每个资源类型上的故障选项。 例如,Iris强调了他们推出的一项新FIS操作,通过暂停附件磁盘的I/O来模拟无响应的EBS卷。客户希望能够以一种简单的方式来测试他们的应用程序如何应对存储故障。如今,FIS可以轻松地注入这种场景。 这导致了一个重要的公告——FIS现在提供自动执行完整应用程序实验的精选场景,而不仅仅是单个组件故障。Iris强调了两个新的多资源场景:AZ电源中断和跨区域连接丢失。 AZ电源中断场景复制了一个主要电源中断期间可能发生的所有各种故障——例如实例终止、数据库故障切换、缓存不可用。这使您可以验证您的多AZ应用程序设计是否能够在剩余的健康AZ中弹性地运行。 同时,跨区域连接丢失场景帮助测试地域分布的多区域应用程序。它阻止所有区域之间的流量并暂停跨区域的数据复制,以揭示任何隐藏的区域内耦合。 这两个场景都包含了专门针对这些复杂的多个故障实验的新FIS操作。例如,跨区域场景包括破坏VPC对等连接和暂停S3跨区域复制的新操作。 艾里斯随后展示了一段简短的视频,内容涉及AZ级故障时的实际操作。视频中详细阐述了FIS如何停止EC2实例,引发防止自动缩放不足的容量错误,实现RDS数据库的故障转移,并在目标AZ中切换弹性缓存节点。与此同时,CloudWatch警报被触发,金丝雀监控显示出错误和延迟的增加。 这段视频有助于确认您在AZ级故障发生时是否能够最大限度地减少应用程序中断。此外,艾里斯还提到了新的FIS功能如何轻松地定期重现这些场景,以确保应用程序能够适应不断变化的环境。 总之,艾里斯强调了建立组织弹性需要时间和持续的实践。她鼓励与会者利用新的FIS功能来自动化测试实际故障情况。通过使用诸如FIS之类的工具进行定期故障注入实验,可以将弹性从期望转变为现实中的习惯。 概括地说,这次内容丰富演讲首先通过引人注目的停机成本指标探讨了为什么系统弹性对现代企业如此重要。接着,演讲者提供了关于韧性工程策略的指导,特别是关于故障隔离边界方面的知识。演讲者解释道,亚马逊云科技的Fault Injection Service可以通过受控实验来验证容错设计。令人振奋的是,新的多功能场景(如多AZ和多区域故障场景)现在可以轻易地进行定期测试。总之,演讲者倡导通过故障注入来进行自动化弹性测试,从而逐渐形成一种应对未来不可避免的中断和灾难的能力。 **下面是一些演讲现场的精彩瞬间:** 领导者对停机时间可能给公司带来的巨大损失表示关注。 ![](https://d1trpeugzwbig5.cloudfront.net/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator/images/rebranded/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator_0.png) 他们指出,短暂的停机可能会导致公司声誉迅速受损,从而导致客户转向其他供应商。 ![](https://d1trpeugzwbig5.cloudfront.net/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator/images/rebranded/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator_1.png) 演讲者解释了对云计算架构中控制面和数据面进行分离的重要性。 ![](https://d1trpeugzwbig5.cloudfront.net/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator/images/rebranded/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator_2.png) 领导者强调了在预生产环境中运用混沌工程实践进行操作准备的重要性。 ![](https://d1trpeugzwbig5.cloudfront.net/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator/images/rebranded/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator_3.png) 他们将故障注入系统视为一种类似于科学方法的方法——首先基于假设,然后进行实验,从而将假设转化为现实。 ![](https://d1trpeugzwbig5.cloudfront.net/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator/images/rebranded/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator_4.png) 领导者还描述了亚马逊云科技如何应对电源中断以确保持续服务的策略。 ![](https://d1trpeugzwbig5.cloudfront.net/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator/images/rebranded/ARC317-Improve_application_resilience_with_AWS_Fault_Injection_Simulator_5.png) ## 总结 这段视频探讨了亚马逊云科技(Amazon Web Services)的故障注入模拟器(FIS)如何通过对多可用区架构进行测试来提高应用程序的弹性。FIS能够模拟一个可用区断电的情况,通过注入故障来复制其症状。当某个可用区出现故障时,应用程序应能在剩余的可用区中继续正常运行。FIS可以关闭EC2实例,从而导致RDS/ElastiCache进行故障切换,以及更多模拟实际停电情况的功能。 观察应用程序的反应具有重要意义——警报和监控系统是否正常工作?您是否能成功地将流量从受损的可用区转移出去?FIS有助于培养操作方面的肌肉记忆,以便顺利应对停电事故。 演示的目标是针对美国东部(东北部)1a区的资源。EC2实例被终止,RDS进行故障切换,ElastiCache节点切换角色。监控系统检测到故障,地区间延迟增加。这揭示了对在可用区故障期间改进流量转移的必要性。 总之,FIS为测试多可用区弹性提供了一种强大的方法。虽然故障可能会发生,但通过充分准备和实践,我们可以减少它们带来的影响。构建系统的静态稳定性至关重要——系统应该能够在无需人工干预的情况下处理故障。FIS有助于验证我们的假设,并提高运营准备水平。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站! [2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站") [点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯! [点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯! ## 即刻注册亚马逊云科技账户,开启云端之旅! [【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“") [【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭