说说参观的微软数据中心

上个月有机会参观了位于华盛顿州东部的微软数据中心。最直观的感受就是,先进的现代数据中心,已经不是一直停留在我脑海中那个“机房”的样子了;外貌改观的背后,是管理效率的巨大提升。

单是数据中心选址所考量的因素,就已经让我这个外行人不明觉厉。
前一段时间天津滨海新区发生爆炸,有新闻报道天津滨海爆炸致国家超算天津中心受损 “天河一号”关机。看到这样的新闻,让人不禁质疑超算中心这样重要的基础设施选址怎么如此草率。云计算时代的数据中心对国计民生的影响远超过超级计算机,无法想象未来的某一天,一个数据中心被突然炸掉会带来什么后果。从安全到角度来说,数据中心最好人烟稀少远离闹市,这样不太容易被意外所波及。可是又不能太远,否则距离带来的网络延迟会影响其应用。我参观的这个数据中心就位于这样恰到好处的位置:华盛顿州中东部,距离西北地区人口稠密的西雅图波特兰地区三四个小时车程,当地人口稀少周围一片荒漠。除了恰到好处的位置,当地还位于哥伦比亚河附近,阳光充足,常年干旱少雨,一派荒漠景象;哥伦比亚河从荒漠中穿过,水量充沛,造就了沿河的沙漠绿洲,也提供来充足的廉价电力。Google map的这张照片很好的反应了当地自然状况。
对数据中心来说,固定资产投资之外最大的成本就是电力支出,廉价的电力显然很有吸引力。据说数据中心的电价是1-2美分一度,实在是太便宜了,我们家的电价可是要1毛多的。除此以外,当地政府还提供税收方面的优惠政策。
如果你觉得考虑到上述种种因素来选址就算煞费苦心,那就错了。通常的数据中心都会考虑这些(我国政府领导拍脑袋订下来的除外)。要成为一个现代化的数据中心,还要走得更远。

大家都知道降低电力成本是核心,那么问题来了:除了找电价便宜的地方,我们还能做什么来降低电力成本呢?数据中心的电力消耗主要分成两部分,一部分是主机消耗的,比如主板,CPU,内存,硬盘的耗电;另一部分是制冷的耗电,比如风扇,空调。衡量数据中心效率有一个指标叫能效比,就是数据中心总耗电与主机耗电的比值。比如这个数据中心的耗能比是1.07,就意味着每用1.07度电,有1度都被主机消耗了,只有0.07度用于制冷。
在复旦读书的时候,有一年室友找了份兼职去逸夫楼的高性能计算中心值班,我陪着一起去了几次。当时印象特别深刻,机房里一排排机柜整齐摆放在,值班室也在大厅里,用玻璃墙和机柜隔开。机房里的空调永远是恒温25度,特别舒服,可惜有特别大多轰鸣声,无数的风扇在转。空调和风扇一起保证着机房的正常运行。
虽然人类已经想了各种办法来提高空调和风扇的制冷效率,但是想想就知道这样的数据中心效率不会太高。要保证室内的恒温,制冷的目标不是主机而是整个室内空间,这其实是巨大的浪费。另外,为什么一定要让压缩机拼命运行来保证恒温呢,与其把热空气温度降下来,不如直接把热空气排走换来冷空气。抽气扇可比压缩机的效率高得多。这个数据中心正是实践了这样的想法:首先不修建实体建筑的“机房”,所有的主机就存放走一个个集装箱一样的空间里边,集装箱直接暴露在外界。这不但节省了没必要的建筑成本,也不必煞费苦心为一个巨大的建筑物保持恒温。然后,在每个“集装箱”内部,没有空调也没有风扇,集装箱把干燥的空气从一侧吸进来,混合冷水来增加空气到湿度,然后把混合后的空气向整排的主机吹去;空气穿过主机带走热量,再被另一侧的抽气扇抽出来排到集装箱外面。冷空气混合了水汽之后比热容增加,吸热能力很好;而被主机加热的空气不需要再花大力气制冷,直接排出去就是了。

这是数据中心的卫星图,实际样子请自行脑补。
Screen Shot 2015-09-13 at 12.02.26 AM
为了满足这样的设计要求,数据中心选在了气候干燥年均日照时间很长的荒漠地带。由于气候干燥,抽气扇吸进来的空气湿度极低,特别适合混合冷水产生湿冷空气。如果是在潮湿闷热的热带地区肯定是不行的,吸进来的空气已经湿度极大温度很高了,指望它继续吸热带走主机产生的热量是不太容易了。

除了能源效率现代化的数据中心还需要极高的运营效率。
这里管理着几十万台主机,即使每台主机的可靠性都在99%以上,平均下来每天出现百十台的故障机还是很平常的事儿。如果每台故障机都要立即修复的话,那雇佣上百人每天在各个机架上爬上爬下拆机器装机器恐怕也忙不过来。所以数据中心通常都有专门设计的软件系统来应对硬件故障。当某台主机发生故障时,可以很快的把应用程序迁移到另外的主机上继续运行,这样维修人员就不必立即去修复每一台故障机。另一方面,维修人员会监测各个机架,挑选故障机数量最多的机架做修复。一次修一批比东修一台西修一台要划算的多。这样的设计在简化了安保的设计。由于主机全部都在一个个狭小的集装箱内,而非与进进出出的工作人员共处同一建筑物内,因此就免除了一道道安全门扫描仪的设置,只要用密码锁把集装箱门锁好再装上监控摄像头就好了,不用担心去数据中心送外卖的顺便溜进机房偷数据啦。其实即使真的溜进机房偷走了一块硬盘也没什么大不了的,现在的软件系统都是分布式的文件系统,一块单独的硬盘上只是存储了某些文件的某些部分而已,如果不知道这些部分是如何组合在一起的,根本就没有用。
由于采用了这些设计,整个数据中心只有二三十个人负责日常运行,降低了人力成本。

每次看到工程师对不断追求完美,对事物做近乎极致的例子,敬仰之情就有如滔滔江水。
其实我参观的这个数据中心最多也只是代表了当代的先进技术而已,离黑科技还差得远。据说IT巨头们已经开始考虑更疯狂多想法,比如把数据中心建在海里用海水制冷,或者修在两极地区等等。期待这些黑科技为整个行业带来更大的变革。

看到这样的数据中心,我想应该没有理由去质疑云计算的未来。几十万台机器,只用二三十个人管理,能源利用效率极高,而电费又只有一两美分;如果把这几十万台机器交给每个大大小小大企业自己去维护,又需要花多少成本和人力?两者孰优孰劣不言自明。只是凡事都不会一蹴而就,新事物到来的时候总会有各种质疑的声音。

来看下Azure用户的吐槽

今天,作为Azure的用户,私人邮箱收到一封来自Azure Service的邮件,对上周发生的Azure云计算平台大规模宕机事故做出解释和道歉(http://www.cnbeta.com/articles/347413.htm)。邮件中附带了一个CVP写的blog对整件事做了全面解释: http://azure.microsoft.com/blog/2014/11/19/update-on-azure-storage-service-interruption/

这次事故的影响比较大,波及了Azure 15个数据中心中的12个(Brazil, Australia, China)除外。受波及的数据中心也都比较惨烈,从虚拟机,到网站以及许多其他高级服务全部或者部分不能使用,甚至连用来给用户查看Azure健康状况的dashboard也不能正常工作。到现在总算才把事故的各种遗留问题逐渐清理完毕。

事故的原因很简单,存储服务为了提升性能做了fix,在几周的小规模测试没有问题后同时在各个数据中心部署了这次升级–结果这次升级改变了存储服务前端服务器的一项配置,然后触发了一个bug,服务器无法相应。惨的是出问题的是存储服务,几乎所有其他的服务都依赖于此,所以纷纷躺枪。

认真读了一下上面那篇blog,以及下面大量Azure客户的吐槽,感受颇深。这里列举一些印象深刻的。我相信现在各个企业的云服务或多或少都有类似的问题,这也是为什么很多人/公司对云抱着保守迟疑态度的原因。看到下面的抱怨,或许更能理解什么是客户所想,什么才是更好的服务。

  • Why would you then attempt the upgrade across data centres at the same time? A very important service of ours failed even though we have both north and west Europe deployments. We pay a premium for this and it is now shown to be wasted money.
    很多人问,为什么要在多个数据中心同时做升级?为了做到异地容灾,客户已经花了大价钱在多个数据中心同时部署服务了,可惜还是中招了。。。异地容灾一点作用都没有起到,纯粹浪费钱。
    —-还有人跳出来说,不对啊,15个数据中心不是还有3个好着吗,难道微软是要推荐我们在15个地方都部署么,想赚钱想疯了么
  • “Why was the dashboard marked all green for Azure West despite our TAM and TAs informing us that the issue was ongoing? We rely on the dashboard to know what the health of Azure is, it seems like its more of a PR stunt now.”
    “There was an Azure infrastructure issue that impacted our ability to provide timely updates via the Service Health Dashboard. As a mitigation, we leveraged Twitter and other social media forums.”

    为什么发生事故的时候dashboard还显示一切正常?很多人靠这个来看azure有没有出问题结果失灵了,还是到twitter上才看到的消息。
    —-因为dashboard服务也依赖于存储服务,当存储服务挂了的时候它也挂了。后来微软只好用twitter等渠道来公布消息。
  • “The platform & services are really ingenious and I still trust in this, but you’ll have to improve your behavior much more than a 100% instead of the performance of services.”
    有客户还是信任微软的服务的,但是。。。100%的可靠性比提升性能什么的可重要多了。(工程师式的思维必须要换一换)
  • “For comparison to this anemice blog here is Amazon’s response to a smaller outage they had.
    http://aws.amazon.com/message/…
    Its like a 8th grade English paper vs a doctorate thesis.”
    还有不少人觉得这篇blog写的太烂,amazon出一个局部事故的时候写的声明比这个专业多了。(有兴趣的可以读一下,是专业很多)
  • “During the outage yesterday it wasn’t even possible to kill a server, which means it wouldn’t even be possible to pack up our things and move to a different provider.”
    宕机的时候想把服务器kill掉切换到别家的服务器都不行。。。(只能干等着两三天以后恢复,简直生不如死啊)
  • It seems unless you pay them for a ‘subscription’, you cant report anything to anyone about something not working, because of a fault on MS/Azure side.
    I’m quite competent, and setup and run my own servers for many years, and I dont think I should have to ‘pay’ to let MS know about problems. I’ve talked to their support in ‘India’, and they seem to only have a very basic understanding of computing or anything, and really couldnt grasp what I’ve been trying to tell them about.
    I’m only running web small sites on Azure, but I would be a bit hesitant of running anything more, as it could just stop working, and then you have no one to talk to or help. 🙁 I feel helpless using Azure when there are problems.

    害怕用Azure,因为一旦它出问题的时候会发现自己很无助,不知道找谁寻求帮助。(我不太理解这个人说的pay them for a ‘subscription’是什么意思,莫非客户支持是额外收费的?)但是any way,根据我上次office 365服务出问题打客服电话的体验来看,确实是有很强的无助感。
  • “the fact that this blog was NOT posted on the Azure twitter account, and the complete lack of interaction with customers on the twitter is shameful. We understand that shit happens, but the human side of this could have been handled much better. How hard is it to get a staff person to sit on twitter and answer peoples questions, provide updates, or at least some sign of life. We were hit at a TERRIBLE time and lost huge amounts of traffic. I really like Azure but the total lack of support and communication here really makes me question why I am paying for this service.”
    “This is a press-conference level event, and you should have staffed PIO positions to keep us in the loop. On a side note – You might want to apologize on twitter, and fire your marketing team who started in on promo tweets without even sending out a link to this blog (at the time of this comment…).”

    这两段吐槽大约属于PR范畴了,事故发生的时候在twitter上发了个消息就没下文了,没有和客户的互动:回答问题,及时更新状况。(我也同意这样的事情应该由公司统一的PIO-新闻发布官出面,不知道Azure找了个什么人发的twitter。。。)人在无助的时候,哪个有个人陪着说说话感觉也会好一点吧,做service也是这样
  • “Actually the problem is down to centralization. There are plusses and minuses to that. When many elements in a system are dependent on one thing, it offers a lot of advantages in terms of shared resource, but puts that central thing on a very critical path. This is essentially why the central planning method of the soviet socialist era became too expensive to sustain. The original idea of the internet was decentralization. Instead the state-corporate machine has co-opted that into a centrally planned economy. Ironic really.”
    最后这个属于哲学探讨,有兴趣的话可以讨论下。互联网的核心和本质就是平等(去中心化),云计算确恰恰相反,它要把大量的资源集中在少数的数据中心。这样在带来低成本高资源利用率等好处的同时,也会使互联网变得脆弱,因为一点中心节点发生问题就全部瘫痪。(这个人有句话比较有意思:集中化不好的著名例子就是苏维埃社会主义的失败。。。)

推荐一下百度云

现在的生活已经越来越依赖于云存储了,从几年前用Dropbox存一些常用文档,到去年把几乎所有的文档(视频除外)同步到Skydrive,再到最近看到google drive大降价考虑转移到他家。云存储好处显而易见:再也不用担心电脑宕机硬盘崩溃,也不用费心去买移动硬盘备份资料,可以再各种设备上访问到我需要的文档(这一点实际上是假的,因为Skydrive 访问速度实在令人厌恶)。

昨天试用了一下百度云。因为以下三点推荐:
1. 同步速度非常快。我试验了大约600M的文档,在家上传下载速度大约都能达到800k-1M。
2. 用位于东亚和美国西部的机器分别测试了一下访问速度,都很快,适于全球范围内的文件共享。
3. 最重要的是,他家现在在搞活动,安装一个移动客户端登陆一下就送2T容量,2T啊。

可以使用百度云来存储共享音乐,视频,电子书这类文档。容量足够大,对安全隐私的担忧比较低。有需要的同学可以去注册一个。
Capture