阿里云的“寒冬”:一年两次重大故障,如何避免?


21世纪经济报道记者崔北京报道

立冬之际,阿里云遭遇了一场突如其来的寒流。

11月12日下午,阿里云出现重大故障,影响范围很广,不仅是阿里产品,很多外部客户的业务也受到影响。这对于视稳定为生命线的云服务公司来说,无疑是一场噩梦。

去年,也是在冬天,阿里云在香港的机房节点出现故障,导致港澳多个关键基础设施运营商的网站和互联网应用无法打开。

一年之内,两次重大事故,阿里云迎来了成立以来最黑暗的时刻。更尴尬的是,过去一年,阿里云的组织架构并不稳固。CEO一年换两次。目前,阿里巴巴集团董事局主席兼首席执行官由阿里巴巴集团首席执行官武勇明兼任。

阿里云作为中国云计算的先行者,现在需要的是稳定,既包括组织稳定,也包括业务稳定。

三个半小时的失败

最先感知阿里云失败的是各种产品的用户。发现产品打不开后,用户纷纷跑到社交平台吐槽。很快,人们发现有问题的产品不止一个。

一时间,淘宝、闲鱼、阿里云盘、钉钉…阿里几乎所有的产品都失败了。同时,很多使用阿里云服务的企业产品也存在问题。据21世纪经济报道记者不完全统计,整数云、科技蜂、亨乐颂、酷易、IOTTEC、纳思云、Yuque等平台均受到影响。

当时阿里云健康面板显示92款产品全部异常,影响区域涉及全球所有节点。根据阿里云随后的公告,阿里云对整个故障的处理时间线如下:

17:44,阿里云监控发现云产品控制台访问和API调用异常;

17:50,阿里云已经确认故障原因与一个底层服务组件有关;

18:54,杭州、北京地区控制台已恢复;

19:20,大部分区域控制台服务已恢复;

19:43,除部分云产品(如消息队列MQ、消息服务MNS)仍需处理外,其余云产品控制台、API服务已恢复;

20:12,北京、杭州等地区消息队列MQ已重启,其余地区正在逐步恢复;

21:11,受影响的云产品已全部恢复。

阿里云方面表示,整个故障影响了云产品控制台和控制API的功能,OSS、OTS、SLS、MNS等产品的服务受到影响,ECS、RDS、网络等大部分产品的实际运行不受影响。

根本原因是“认证服务”

截至记者发稿时,阿里云尚未发布关于此次故障的详细说明。不过,针对此次故障,21世纪经济报道记者采访了多位业内人士,他们根据已披露的官方信息对故障进行了分析。

首先要明确一点,“云产品控制台”其实是云厂商的一个网站,在上面我们可以控制服务器的状态,比如开机、关机、重启。API调用是指部分客户不直接使用云厂商的控制台,而是有自己的运维平台,然后通过API将云厂商的控制台信息调用到自己的运维平台。

所以阿里云失败的导火索是无法正常访问云产品控制台。至于阿里云确认的故障原因,与一个底层服务组件有关。行业技术专家李明(化名)分析推测,这个服务组件可能是阿里云的认证服务,AK和SK异常。

在云计算领域,“认证服务”指的是认证和授权服务。而AK(访问密钥)是用于识别访问者身份的字符串,类似于用户名,而SK(秘密密钥)是与访问密钥关联的私有字符串,用于签名验证,类似于密码。

通常情况下,当用户发起云服务请求时,需要使用AK来表示其身份,使用SK来验证其签名,以保证请求的合法性,而认证服务的业务逻辑涉及到验证用户的身份。因此,当认证服务出现问题时,可能会带来未授权访问或拒绝合法请求。

李明认为,阿里云失败的范围之所以这么大,是因为AK和SK属于最底层的服务。一旦出现问题,所有产品都无法正常访问。

至于阿里云为什么会在这个时候失败,业内有分析和猜测,可能是双十一刚过,阿里云的产能缩水造成的。

但这也是让李明很疑惑的地方。“通常云厂商在面对重要节点的时候会封锁网络,也就是在节点前后的一段时间内不会对系统做任何改动。从技术角度来说,只要不改变业务,失败概率会比较小。”

如果没有操作,可能是单点故障造成的。但根据阿里云的经验,这种可能性也很小,因为系统有冗余设计,一般来说可以避免一台服务器出现故障导致所有服务器都出现问题。“但这不是绝对不可能的。如果真的是因为单点故障,那就要怀疑阿里云的架构是否完美了。”李明说。

在李明看来,这次失败的大概率还是业务变化造成的。“但阿里云为什么在这个节点进行业务变革,很难理解。可能是业务网络出现了其他故障,需要运维。另外也不排除恶意操作。具体原因还是要等阿里云官方披露。”李明说。

如何避免失败?

阿里云的失败,再次引起了人们对云计算稳定性的关注。

过去十年,“上云”成为工业数字化的重要趋势,越来越多的业务运行在云上。在这样的背景下,人们的担忧也在情理之中,尤其是很多会对人们生活产生较大影响的产品都运行在云上。一旦出现类似这样的故障,必然会影响用户的生活。

所以,如何避免类似的失败,也是整个行业需要思考的问题。云服务行业资深人士张谭(化名)坦言,任何技术都不可能100%避免失败,但需要做的是将失败的概率降到最低,或者将失败后的影响降到最低。

基于阿里云的失败,张谭建议云部署是更合适的解决方案。“如果是单一的云部署,即使各种高可用都在云端做,比如多冗余、交叉可用部署,如果底层组件出现故障,也会像阿里云一样出现多个可用性领域的多个产品故障。”

如果是云部署,比如业务部署在两个不同的云厂商,那么两个云之间的组件就不会互相依赖,可以避免其中一个云出现问题时整个产品无法访问的现象。

这种多云部署会带来一些成本的增加,比如资源成本的增加,技术复杂度的增加。然而,张谭指出,云部署在云服务市场并不少见。从实际案例来看,多云部署的成本并不算太高,这也与各个企业选择的技术方案有关。比如只选择关键模块进行云部署,成本就更小了。而且相对于稳定性提高的好处,大部分企业都愿意接受这部分成本。

从企业的角度来说,做云部署可能是一个趋势。但对于云厂商来说,现阶段可能很难将部分业务部署给其他云厂商。然而,阿里云的失败再次给行业敲响了警钟。虽然失败的真正原因还有待官方披露,但是每个云厂商也需要未雨绸缪,如何避免这样的“灾难”发生在自己身上。