2月29日,微软云平台Windows Azure出现日期计算错误,持续时间长达8个小时,每个开发人员不得不手动处理由于闰年bug所导致的日期错误。
日前,商业软件巨头微软已经公开承认此消息,并详细纰漏了日历故障对服务器平台所造成的影响。对用户来讲,这同样是建立大规模云平台可能面临的问题。
大规模宕机是由于运行客户端应用的虚拟机以及运行在每个Azure服务器上的底层操作系统之间数据故障所造成的。
这些信息先是由虚拟机内部生成“传输证书”,然后使用公-私密钥进行加密,这一安全措施导致主机操作系统和虚拟机各自信任其通道,而正是通过这一通道发送诸如SSL认证并进行健康检查诊断。
传输证书的有效期为一年。2012年2月29日所创建的证书,将在2013年2月29日过期。但是2013年2月29日这个日期根本不存在。这导致了认证验证过程的失败,并最终导致了虚拟机的宕机。
主机操作系统每隔25分钟尝试重启宕机的应用虚拟机,在这种情况下毫无效果。在发生了一系列的故障之后,主机操作系统认为硬件存在故障并报告。管理服务器集群的自动化系统尝试通过重启其它服务器中虚拟机对云进行自我修复。进而引起虚拟机的故障切换,最终导致了大面积的应用中断。
当时,微软新版本的云平台软件并没有起到作用,因为新版本云平台软件依旧使用的是旧的传输证书。一旦集群中有足够多的服务器报告了故障,那么整个集群将处于红色警告状态,为了将破坏的影响降至最低微软关闭了自我修复和软件更新。
微软工程师承认他们过于急切地对服务器进行了修复,这导致了代码的不兼容性问题,而代码的不兼容进一步导致了服务器的故障。微软表示他们将弥补由于Azure中断对用户造成的损失