大规模数据中心的运维实践
大家好,我是青云QingCloud 运维工程师朱峻华,在海关某单位任职数年,后又混迹多家外企,曾在IBM/EMC出现。
刚才粗略看了一下群成员,有我好几个曾经的同事,还有不少服务过的客户,群里专家多多,今天有点班门弄斧了。
我们今天分享的主题是“大型数据中心的运维实践”,算是我对自己多年工作经验的一点总结、回顾,大家一起交流,限于本人能力、精力有限,有不对的地方欢迎指正。
今天交流的内容包括:
对于数据中心,维基百科有如下的描述:数据中心(Data Center)或称为服务器场(Server Farm),指用于安置计算机系统及相关部件的设施,例如电信和储存系统。一般它包含冗余和备用电源,冗余数据通信连接,环境控制(例如空调、灭火器)和各种安全设备。
我对数据中心做了一个简单的总结,现代数据中心一般都是一个园区,包含了若干个楼,楼里包含了若干个房间,被称为模块,这是基础;在这之上架构了复杂的网络;网络之上部署了各种硬件设备,包括服务器及网络设备;在各种设备上运行着各种软件;最终对外提供服务。
上面的简简单单的一段话,其实涵盖的技术方方面面,数据中心是现代IT系统的基石,相信以后也是整个社会正常运转的基石。
现在的数据中心通常是指一栋楼,或者是一个园区,包含很多个机房。但是早期的数据中心只有一个机房,而且机房里面只有一台机器,因为早期的计算机组件过于庞大,而且电缆众多。
这张图是世界上第一台电脑ENIAC,1946年2月14日诞生于美国宾夕法尼亚大学。在当时这就是一台电脑,一个机房,也是一个数据中心的雏形。据说ENIAC每次一开机,整个费城西区的电灯都为之黯然。
在20世纪80年代,计算机开始蓬勃发展,IT系统及其操作开始变得复杂,一些大公司开始认识到需要有意识的规划和管理IT资源。随着客户端/服务器的IT模式出现,20世纪90年代服务器开始在机房间中寻找他们的位置,通过网络电缆将服务器和网络设备进行组网,使得在公司内的一个房间中,使用分层设计来放置服务器及网络设备成为可能。
1996年8月北京电报大楼主机托管机房投入使用,是国内最早的IDC业务。
下面给大家展示几幅图片:
21世纪初的数据中心是如上图展示的这样的,当时更多的是被称做机房,一个大楼里面,很多个大房间,统一散热,效率低下;不同客户的服务器放在同一个机房里,没有机柜、没有锁、没有隔离,安全等级低。
再后来出现了如上图的机房设计,也是目前很多机房的现状。会有抬高层,下面走电缆和网线、还有散热冷风系统,在两排机柜中间会有出风口,地板上的眼就是便于出风,然后服务器吸进冷风,从后面排除,达到散热的效果;可以看到图片中远处是有门的,可以达到一定的封闭效果,提高散热效率,但是机柜顶部并没有封闭;另外,上面图中的机柜没有门及机柜锁,安全会稍差一些。
还有上两图的这种设计,机房有抬高层,散热系统在下面;每个机柜都是封闭的,有自己的门和锁,安全性高;机柜的冷风通过通道直接进入机柜中,而且可以单独开关(如上图红线标示处),不仅节能而且散热效果好,但是上半部分设备的散热效果可能会差一些。
现在新的机房很多采用微模块化设计,这种设计降低了对机房本身的要求,不需要抬高层,封闭的散热系统,规范化的走线槽,将节能、美观、高效有机的结合起来。
目前比较流行的数据中心等级划分是根据美国ANSI&TIA-942数据中心通讯网络基础设施标准设定的,分为如下4个等级:
其中 Tier IV等级最高,不管是国内还是国外,这种等级的数据中心都不多,目前国内大部分数据中心都是 Tier III 的。不同等级的具体区分,咱们在这里不赘述,有兴趣的朋友可以上网查一下。
运维的定义,我在维基百科并没有找到,不知道这个是太容易理解了,还是太难于定义了。
我不敢妄加定义运维,只是说说我自己的理解。我曾经认为,运维更多的算是产品或者一个系统交付生产后,到这个产品/系统的生命周期结束前这段时间所做的工作。但是现在IT行业发展的趋势及DevOps的流行,对运维人员的要求越来越高,需要更早的参与到整个生命周期里去。
以数据中心的运维举例,运维人员可能需要从数据中心选型就参与进来,包括选址,选择网络提供商,考察数据中心各种设施及服务等,而不是说等这些定了之后,上了生产才开始运维。
另外,我需要明确一点,今天我们谈到数据中心的运维,并不是简单的从数据中心提供商角度出发,还包括数据中心使用者的角度。青云QingCloud目前使用了多家数据中心的服务,我们也在考察、建立自己的数据中心。
现在正式进入今天的主题——数据中心的运维。
说到数据中心的运维,经常会提到“风火水电”。
风,通常指空调制冷及通风过滤系统。干净的空气能延长设备的寿命,减少故障率。不考虑报废时间,同样的机器在北京运行和在芬兰运行,寿命和故障率都会有很大差异。
火,一般指消防。这个是常常被人忽略的一部分,但也经常是最致命的一部分,一旦发生火灾,可能整个地方都需要停电,且短时间内难以恢复。
水,通常是湿度及防潮。湿度过高,可能会影响设备寿命;太过干燥又会导致静电,有可能损坏设备。
电,机房电力。电力被认为传统数据中心的重中之重,没有电力,数据中心就是空壳,而且数据中心的电力需要保证稳定,且是多路备份。
上面提到了“风火水电”,实还应该再加上一个“网”,数据中心必须保证有高效的网络,,离骨干网应该尽量的近,而且需要能提供BGP线路服务,这也是很多客户选择数据中心的一个重要评判标准。
数据中心的选择标准可以归类到下面三点:位置,主要标准和次要标准。我们提到的标准是站在不同角色进行考虑,包括数据中心建造者与使用者。
位置,包括数据中心所在的城市及区域,这将直接影响到预算,至少要避免受到天津大爆炸那类事故的影响;还会影响到你是否能招到合适的员工;需要考虑出现故障时的响应速度等。
主要标准,包括是否有足够的空间满足未来的发展;稳定且廉价的电力保障;是否有能用环保手段做到廉价的散热系统,比如选择北方,一年四季大部分时间采用自然冷风进行散热;还需要有高效的网络连通性。
次要标准,包括基础设施,如照明、管道工程等;还包括数据中心园区的安全隔离设施,围墙、门、窗,设备卸货区等;推车、铲车等设备;是否有设备预装室;是否有监控、控制中心;其他杂项,包括安全监控摄像头、门禁卡、防尾随门等;
传统数据中心在投入生产之后,高等级机房会安排 7&24 人工巡检。客户购买的机柜及其机柜里的设备,需要自己安排人员巡检,我曾经工作过的一家公司就有三班倒的监控人员,7*24小时待命,每个小时需要去机房巡检一次,看各个设备是否有报警。
青云QingCloud正在考虑建立自己的数据中心,因此考虑运维的时候会更加全面,除了传统数据中心的楼宇及基础设施的运维,还包括各种物理设备,如服务器、网络设备等,各种操作系统及软件,还有我们自己研发的SDN,每一项细化都可以作为一个专题来讨论。
我们简单了解一下数据中心基础设施运维可能涉及的范围,包括:
站在一个数据中心使用者的角度,我们希望数据中心能提供更高效的服务,如:
下面我们来讨论一下用户对于自己设备及服务的运维。
服务器及网络设备的选型,是选用大品牌的DELL/IBM服务器呢,还是选择更节省成本的定制机?
QingCloud 选择了后者,在云计算时代,我们假设服务器等物理设备本身就是不可靠的,需要靠上层的软件来实现可靠。
操作系统选型,选择Linux还是Windows ?
毋庸置疑,QingCloud 的系统肯定是跑在Linux上,但是我们需要考虑如何高效初始化服务器,快速安装操作系统,需要考虑文件系统、内核参数调优、各种硬盘驱动、内核版本、Kernel Panic等原因。应用层涉及的就更多了。
如何高效的初始化系统?包括 BIOS 的调优,划分RAID等工作。
对于Linux系统的安装有很多高效的方式,最初始的方案是把Linux安装盘ISO刻成一张光盘进行安装,现在的服务器配光驱那肯定是被忽悠了;后来将ISO做到U盘上,这些都是手动安装。高级一点的可以写Kickstart/Preseed文件实现U盘的自动安装,对于少量设备,这已经足以。
对于大规模的部署,我们目前通过网络自动划分RAID,安装操作系统,还可以做到自动进行BIOS调优。
我们的目标是一台纯新的机器,物理连线都准备好的情况下,开机半小时后就可以被用于生产,包括BIOS调优,RAID划分,操作系统安装,网络联通及系统上应用的安装。操作系统的安装可以采用网络PXE安装,开源比较常用的可以采用Cobbler;对于RAID划分和BIOS调优,这里我不做过多说明,不同厂家的硬件使用的方法都会不同。
操作系统及网络准备好之后,我们就需要在服务器上配置特定的应用及服务了。这时候我们可以使用的工具更多,此类工具通常被称为配置管理工具,常用的有老牌的Cfengine,很多大公司在用的Puppet和Chef,最近比较新的有Saltstack和Ansible等,这些都是很好的工具,但对于工程师来说合适的/熟悉的才是最好的。
上面提到的更偏重于产品生命周期的前半部分。随着规模的扩大,传统靠人工定时巡检,在监控中心盯着大屏幕看有无报警的运维方式都已经落伍,唯一的出路就是自动化。
运维自动化,这个话题是从互联网繁荣开始一直在谈论的话题,数据中心的运维工作变得越来越繁重与复杂,这是因为数据中心一直在持续的发展变化,数据中心承载的应用变得多而复杂,简单靠人力堆积已经不能高效解决问题,必须引入各种流程及工具进行规范化管理。
自动化运维很重要的一部分就是完善的监控体系,完善的监控体系需要能监控到整个数据中心的方方面面,包括各种物理设施、环境等,这个不是我们今天讨论的重点,今天主要讨论一下网络、系统等部分的监控。
监控可能包含的方面:
有了完善的监控系统,我们还需要实时报警(邮件、IM、短信)功能,不能漏报,也不能太多误报,否则狼来了多次后,就没人会重视报警信息,反而无用。
目前,开源使用比较多的监控软件有Nagios、Cacti、Ganglia、Zabbix、Zenoss Core、SmokePing,每个软件有自己的擅长之处,大家可以使用多个软件组合成自己完善的监控体系。
有了监控,有了报警,我们还需要资源使用的统计报告(日报、月报、波峰、波谷),这将是我们系统扩容的依据。
下面我们聊聊设备的退役,服务器或者网络设备运行一段时间后,故障率就会大幅的升高,我们需要考虑是不是要将其退役。
首先我们需要设定一个设备的报废期限,及报废后怎么处理;需要考虑在什么情况下延保,计算出最佳时间点,尽量榨干设备的价值。
一个小的细节,QingCloud考虑到用户数据的安全性,我们的硬盘买了特定服务(不归还的),损坏的硬盘跟厂家报修更换后,我们会集中销毁换下来的硬盘。
在结束分享前,我们再来看看目前数据中心相关的一些新动向。
群里很多人应该听过流动数据中心或移动数据中心、模块化数据中心、微模块化数据中心、海上数据中心、洞穴式数据中心等。它们的好处是显而易见的,比如洞穴式数据中心,可以抵御爆炸或自然灾难性事件,还能够节省制冷能耗,不受高功率微波和电磁脉冲武器的攻击等。
网络方面,100G以太网不久将会在数据中心领域强势增长,当然这会有个过程,可能25G和50G的网络会优先发展,25Gbps和50Gbps每通道技术将是未来100Gbps(4个25G) 和400G(8个50G)以太网的基础,因此业界普遍认为25G网络会很快替代现有的10G网络。
今天的分享差不多就到此为止了,做一个简单的总结。
数据中心的运维既宏观又细节,大到楼宇的设计建造及选址,避免被天津大爆炸这样的事件波及;小到需要注意服务器内线缆摆放位置及方向,防止服务器由于自身的轻微震动导致线缆松动,从而引起系统的频繁Kernel Panic。