科技云报到原创。
人们的生活里,充满了很多看似理所当然的事情:只要网上下单,过几天想要的东西就会出现在楼下快递柜;饭点一到,按动几下手机很快会有热气腾腾的饭菜送上门;下班了往沙发上一躺,与三五好友开黑享受片刻欢愉……假如这一切忽然消失,世界会变成怎样?
很多时候,关键业务数据意外丢失,或某些内部或外部基础服务上一个小小的错误配置导致半个地球范围内的服务中断……所有这些不确定性,不仅让业务时刻面临风险,还会让企业声誉遭受不小的影响。
有这一句话:破坏稳态的难度越大,我们对系统行为的信心就越强。如果发现了一个弱点,那么我们就有了一个改进目标。避免在系统规模化之后被放大。
以往在本地部署和运行关键应用时,包括基础架构、底层硬件在内的很多因素可由企业自行掌控,因此发现并解决弱点还是好处理的。但当企业开始上云,通过云平台运行这些关键应用时,底层基础架构的管理和维护由云平台承担,这时又该如何解决弱点,打造更稳定、更有韧性的云基础设施和应用程序?
当不稳定正在成为常态
今年7月19日,微软公司旗下多个应用和服务出现访问延迟、功能不全甚至无法访问的问题。从美国到欧洲,再到亚洲多国,大量用户的电脑突然蓝屏,提示系统遇到问题需要重启。此次事件波及范围之广、影响之大,堪称近年来少有的全球性技术故障。
此次微软服务中断事件对全球多个行业造成了严重影响。航空公司方面,美国边疆航空公司、Allegiant航空、SunCountry航空等多家航空公司因系统问题取消了数百个航班,造成旅客滞留和行程延误。
金融领域,以色列、南非等国的银行系统受到波及,澳大利亚超市的自动收银机也出现结算异常。此外,电信、媒体、医疗等多个行业也不同程度受到影响,伦敦证券交易所的部分服务也一度中断。
在国内,虽然三大航及北京首都机场和大兴机场的国际航班运行正常,但仍有部分外企及酒店等服务业受到波及。例如,上海康莱德酒店就因系统问题影响了客户入住和退房流程。
面对全球范围内的服务中断和蓝屏问题,微软迅速做出回应,其表示,问题的根本原因在于第三方杀毒软件CrowdStrike的一次错误更新。经过事故调查,此次事件的核心技术原因在于CrowdStrike的安全软件更新与Windows系统之间的不兼容。
CrowdStrike作为全球知名的网络安全公司,其安全软件广泛应用于企业环境。然而,在7月19日的更新中,CrowdStrike推送了一个与某些Windows系统特性不兼容的更新,触发了系统级的错误,最终导致蓝屏死机。
Windows作为全球最广泛使用的桌面操作系统之一,其稳定性直接关系到数亿用户的日常工作和生活。然而,随着技术的不断发展和应用的日益复杂,系统稳定性的挑战也在不断增加。
此次事件再次提醒我们,即使是像微软这样的行业巨头,也无法完全避免技术故障的发生。因此,对于操作系统提供商而言,持续优化系统架构、提高代码质量、加强兼容性测试等工作显得尤为重要。
随着云计算技术的普及,越来越多的企业和服务依赖于云服务提供商。然而,这也带来了新的挑战。一旦云服务提供商出现服务中断或故障,将直接影响依赖其服务的企业和个人。此次微软服务中断事件就充分展示了云计算时代面临的这一挑战。因此,云服务提供商需要加强自身的技术实力和稳定性保障能力,确保能够为用户提供持续、稳定的服务。
为什么云中会出现临时性故障?
任何环境、任何平台或操作系统以及任何类型的应用程序都会发生临时性故障。在本地基础架构上运行的解决方案中,应用程序及其组件的性能和可用性通常由昂贵且利用率不足的冗余硬件来保证。
虽然此方法使故障的可能性降低,但仍可能导致临时性故障,甚至因外部电源、网络问题或其他灾难情况等不可预测的事件而中断。
托管型云服务虽然可以跨多个计算节点使用共享资源、冗余、自动故障转移和动态资源分配,实现更高的整体可用性,但是这些环境的性质意味着更可能发生临时性故障,导致故障的原因有很多类型。
首先,由于云环境中的许多资源是共享的,为了有效管理这些资源,云通常会严格管控对这些资源的访问。例如,某些服务在负载上升到特定级别,或到达吞吐量比率上限时,会拒绝额外连接以便处理现有请求,并为所有现存用户维持服务性能。限制有助于为共享资源的邻居与其他租户维持服务质量。
其次,云环境使用大量商用硬件单元构建而成。云环境将负载动态分散到多个计算单元和基础架构组件上以获得更多性能,并通过自动回收或更换故障单元来提供可靠性。这种动态性意味着可能偶尔会发生临时性故障或暂时性连接失败。
第三,在应用程序与资源及其使用的服务之间,通常有多个硬件组件,包括网络基础架构,例如路由器和负载均衡器。这些附加的组件偶尔会导致额外的连接延迟或临时性连接故障。
第四,客户端与服务器之间的网络状况会不时改变,尤其是通过互联网通信时。即使在本地位置,高流量负载也可能减慢通信速度,并造成间歇性的连接故障。
云韧性如何保障业务连续性?
韧性作为衡量应用程序抵御及快速恢复中断能力的关键指标,涵盖应对基础设施故障、依赖服务中断、错误配置、网络问题乃至负载激增等多方面的能力。
在数智化转型的今天,云端韧性不仅是IT系统稳定性和可靠性的体现,更是企业业务连续性和市场竞争力的关键所在。一旦云服务出现中断,可能导致企业运营受阻、客户体验下降甚至数据丢失等严重后果。因此,构建云端韧性已成为企业IT战略不可或缺的一部分。
面对自然灾害、网络攻击、系统故障等不确定性因素,云端韧性显得尤为重要。作为全球领先的云计算服务提供商,亚马逊云科技以其卓越的技术实力和丰富的实践经验,在云端韧性领域树立了标杆。
亚马逊云科技大中华区解决方案架构总经理代闻表示:“亚马逊云科技去年每天稳定启动的Amazon EC2实例超过1亿,每秒API请求数高达100万亿。正是因为做对了很多事情,才有今天全球数百万客户的选择和信任。”
亚马逊云科技云端韧性的三大支柱涵盖:韧性的基础设施,通过全球布局与冗余设计确保服务的全球可达性和高可用性;韧性系统架构,通过单元架构和数据面与控制面的分离,减少故障影响范围,提升系统可用性;卓越的运营机制,通过的DevOps文化与自动化工具,促进团队协作与持续改进,提升运维效率和响应速度。
在全球范围内,亚马逊云科技构建了庞大而高效的数据中心网络,设计了区域、可用区、数据中心的层级设计,并覆盖了主要的市场区域。亚马逊云科技在全球34个地理区域部署108个可用区,包括在中国大陆的北京和宁夏两大区域,每个区域均包含三个或更多独立电力、制冷及物理安全设施的可用区,且这些可用区之间距离适中,约100公里内,确保高可用性和低延迟。
这些基础设施不仅地理位置分布广泛,而且通过高速骨干网络相互连接,形成了一个强大的全球云计算网络。这种全球布局不仅降低了延迟、提高了数据传输效率,还为跨区域的数据备份和容灾提供了便利。
每个区域内,亚马逊云科技都设有多个可用区(AZ),每个可用区下又有数个数据中心相连。三个层级内外部均提供低延迟网络互连,并配备了独立的电力供应、冷却系统和物理安全设施。这种多可用区的设计有效降低了单点故障的风险,即使某个可用区出现故障,其他可用区仍然能够正常运行,确保服务的连续性。此外,亚马逊云科技还提供了跨区域的数据复制和故障转移解决方案,如Amazon S3的跨区域复制功能,确保用户数据的安全性和可用性。
除了基础设施的审慎选址和分散式的布局,云服务的韧性也与其使用的技术架构有着重要的关联。越是在技术层面事先做好对风险的分散,一旦面临问题,所遭受的损失可能就会越小。
对此,亚马逊云科技提出了“控制平面”和“数据平面”分离的原则。从软件架构层面来说,云服务的控制面往往包含更多组件,因此其在概率上发生故障的可能性更大。但是对于绝大多数的云服务来说,控制面并非是日常运行所必须。
将控制面与数据面分离带来的一个好处是,假如控制面所在的机房、或者控制面软件本身出现故障,那么由于数据面依然完好、且能正常运作,此时云服务顶多只是表现为无法新建任务或无法进入后台控制UI,但正在运行的云端程序本身则完全可以不受影响。对于许多企业用户来说,这将会使得故障变得对用户而言几乎“不可察觉”,甚至不会对业务本身造成显著的负面影响。
此外,亚马逊云科技还提出了“爆炸半径”的概念,它指的是故障发生时、具体的软硬件影响范围。为了解决这一问题,亚马逊云科技采用了“单元架构”设计,将单个服务进一步切分为多个部署堆栈,每一个部署堆栈服务于一个或多个客户。这样一来,单一堆栈故障影响的范围就会更小,不再累及整个可用区或整个服务。
在运营机制方面,亚马逊云科技推行DevOps文化,强调开发与运维的紧密联系。在亚马逊云科技内部,每个服务团队都对其负责的服务拥有完整的所有权和运维责任,这种机制确保了服务的稳定性和可靠性。通过打破传统开发与运维之间的壁垒,亚马逊云科技促进了团队协作和持续改进,提高了整体运营效率。
亚马逊云科技提供了丰富的自动化工具来支持运营机制的实施,这些工具涵盖了资源部署、配置管理、性能监控、故障排查等多个方面。例如,Amazon CloudFormation允许用户通过模板化的方式来部署和管理亚马逊云科技资源,大大简化了资源管理的复杂性;Amazon OpsWorks则提供了一套自动化运维解决方案,帮助用户实现应用的快速部署、配置和扩展;Amazon DevOps Guru利用AI和机器学习技术实现对系统的实时监控和故障预测,进一步提升了系统的韧性和稳定性。
构建云韧性是一个持续的过程,而不是一次性的努力,需要在业务需求、可靠性、成本和系统复杂度之间找到平衡点。正如亚马逊首席信息官Werner Vogels说的那样,“Everything fails all the time”(故障总在情理之中、意料之外)。
无论是对于云计算企业、还是对于志在“上云”的企业而言,故障的概率永远都不会是0%。在这个基础上,良好的基础设施、成熟的服务架构、有经验的运营团队,以及一切为客户着想的业务机制,总能帮助企业将风险化解于无形。