微信分享 | 大规模数据中心自动化运维实践



  • 大规模数据中心的运维实践

    大家好,我是青云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 I ――基本数据中心
    • 等级 Tier II ――基础设施部件冗余
    • 等级 Tier III ――基础设施同时可维修
    • 等级 Tier IV ――基础设施故障容错

    其中 Tier IV等级最高,不管是国内还是国外,这种等级的数据中心都不多,目前国内大部分数据中心都是 Tier III 的。不同等级的具体区分,咱们在这里不赘述,有兴趣的朋友可以上网查一下。

    运维的定义

    运维的定义,我在维基百科并没有找到,不知道这个是太容易理解了,还是太难于定义了。

    我不敢妄加定义运维,只是说说我自己的理解。我曾经认为,运维更多的算是产品或者一个系统交付生产后,到这个产品/系统的生命周期结束前这段时间所做的工作。但是现在IT行业发展的趋势及DevOps的流行,对运维人员的要求越来越高,需要更早的参与到整个生命周期里去。

    以数据中心的运维举例,运维人员可能需要从数据中心选型就参与进来,包括选址,选择网络提供商,考察数据中心各种设施及服务等,而不是说等这些定了之后,上了生产才开始运维。

    另外,我需要明确一点,今天我们谈到数据中心的运维,并不是简单的从数据中心提供商角度出发,还包括数据中心使用者的角度。青云QingCloud目前使用了多家数据中心的服务,我们也在考察、建立自己的数据中心。

    数据中心的运维

    现在正式进入今天的主题——数据中心的运维。

    数据中心的”风火水电“

    说到数据中心的运维,经常会提到“风火水电”。

    • 风,通常指空调制冷及通风过滤系统。干净的空气能延长设备的寿命,减少故障率。不考虑报废时间,同样的机器在北京运行和在芬兰运行,寿命和故障率都会有很大差异。

    • 火,一般指消防。这个是常常被人忽略的一部分,但也经常是最致命的一部分,一旦发生火灾,可能整个地方都需要停电,且短时间内难以恢复。

    • 水,通常是湿度及防潮。湿度过高,可能会影响设备寿命;太过干燥又会导致静电,有可能损坏设备。

    • 电,机房电力。电力被认为传统数据中心的重中之重,没有电力,数据中心就是空壳,而且数据中心的电力需要保证稳定,且是多路备份。

    上面提到了“风火水电”,实还应该再加上一个“网”,数据中心必须保证有高效的网络,,离骨干网应该尽量的近,而且需要能提供BGP线路服务,这也是很多客户选择数据中心的一个重要评判标准。

    数据中心的选择

    数据中心的选择标准可以归类到下面三点:位置,主要标准和次要标准。我们提到的标准是站在不同角色进行考虑,包括数据中心建造者与使用者。

    • 位置,包括数据中心所在的城市及区域,这将直接影响到预算,至少要避免受到天津大爆炸那类事故的影响;还会影响到你是否能招到合适的员工;需要考虑出现故障时的响应速度等。

    • 主要标准,包括是否有足够的空间满足未来的发展;稳定且廉价的电力保障;是否有能用环保手段做到廉价的散热系统,比如选择北方,一年四季大部分时间采用自然冷风进行散热;还需要有高效的网络连通性。

    • 次要标准,包括基础设施,如照明、管道工程等;还包括数据中心园区的安全隔离设施,围墙、门、窗,设备卸货区等;推车、铲车等设备;是否有设备预装室;是否有监控、控制中心;其他杂项,包括安全监控摄像头、门禁卡、防尾随门等;

    生产运维

    传统数据中心在投入生产之后,高等级机房会安排 7&24 人工巡检。客户购买的机柜及其机柜里的设备,需要自己安排人员巡检,我曾经工作过的一家公司就有三班倒的监控人员,7*24小时待命,每个小时需要去机房巡检一次,看各个设备是否有报警。

    青云QingCloud正在考虑建立自己的数据中心,因此考虑运维的时候会更加全面,除了传统数据中心的楼宇及基础设施的运维,还包括各种物理设备,如服务器、网络设备等,各种操作系统及软件,还有我们自己研发的SDN,每一项细化都可以作为一个专题来讨论。

    我们简单了解一下数据中心基础设施运维可能涉及的范围,包括:

    • 安防系统,园区楼宇的安全防护,门禁系统,监控系统等;
    • 消防系统,烟雾探测器,灭火设施等;
    • 环境检测,如温度及湿度等;
    • 供电设施,包括配电设备,发电机、UPS、机柜PDU等;
    • 散热系统,包括空调设备,新风及冷水机组等;
    • 其他杂项,如布线,包括电缆及网络线缆;机房内部环境,是否有易燃易爆物体,需要及时清理。

    站在一个数据中心使用者的角度,我们希望数据中心能提供更高效的服务,如:

    • 高效的入馆申请系统,包括人员和设备;
    • 高效的卸货渠道及方便的预装室;
    • 在认证通过的情况下,可以自由高效的进出机房,操作属于自己的设备;
    • 数据中心的服务人员能高效的提供客户所需的数据及服务,比如机柜用电量等;
    • 提供更多人性化及专业化的服务;

    下面我们来讨论一下用户对于自己设备及服务的运维。

    服务器及网络设备的选型,是选用大品牌的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等,这些都是很好的工具,但对于工程师来说合适的/熟悉的才是最好的。

    自动化运维

    上面提到的更偏重于产品生命周期的前半部分。随着规模的扩大,传统靠人工定时巡检,在监控中心盯着大屏幕看有无报警的运维方式都已经落伍,唯一的出路就是自动化。

    运维自动化,这个话题是从互联网繁荣开始一直在谈论的话题,数据中心的运维工作变得越来越繁重与复杂,这是因为数据中心一直在持续的发展变化,数据中心承载的应用变得多而复杂,简单靠人力堆积已经不能高效解决问题,必须引入各种流程及工具进行规范化管理。

    自动化运维很重要的一部分就是完善的监控体系,完善的监控体系需要能监控到整个数据中心的方方面面,包括各种物理设施、环境等,这个不是我们今天讨论的重点,今天主要讨论一下网络、系统等部分的监控。

    监控可能包含的方面:

    • 攻击,包括内部和外部,需要能快速的找到源头并消除威胁;
    • 网络和服务器设备的各个传感器,包括温度、电压及电源冗余等;
    • 网络流量、网络风暴,及网络环路等的监控;
    • 服务器的监控通常可以通过带外及IPMI获取到服务器的物理设备的状态,需要监控的包括CPU、内存、主板、电源;
    • 服务器的存储系统,包括物理磁盘、RAID组、RAID卡电池的状态、Media Error等信息;LSI的RAID卡可以通过MegaCli进行查看,Adaptec的卡可以用Arcconf工具;
    • 操作系统里,我们需要监控的东西更多,包括系统资源(CPU、内存、文件系统空间的Inode使用率,还包括网络流量和系统负载等等);进程及服务的监控;存储系统监控(吞吐量及IOPS等);系统及应用日志的监控

    有了完善的监控系统,我们还需要实时报警(邮件、IM、短信)功能,不能漏报,也不能太多误报,否则狼来了多次后,就没人会重视报警信息,反而无用。

    目前,开源使用比较多的监控软件有Nagios、Cacti、Ganglia、Zabbix、Zenoss Core、SmokePing,每个软件有自己的擅长之处,大家可以使用多个软件组合成自己完善的监控体系。

    有了监控,有了报警,我们还需要资源使用的统计报告(日报、月报、波峰、波谷),这将是我们系统扩容的依据。

    设备退役

    下面我们聊聊设备的退役,服务器或者网络设备运行一段时间后,故障率就会大幅的升高,我们需要考虑是不是要将其退役。

    首先我们需要设定一个设备的报废期限,及报废后怎么处理;需要考虑在什么情况下延保,计算出最佳时间点,尽量榨干设备的价值。

    一个小的细节,QingCloud考虑到用户数据的安全性,我们的硬盘买了特定服务(不归还的),损坏的硬盘跟厂家报修更换后,我们会集中销毁换下来的硬盘。

    最后

    在结束分享前,我们再来看看目前数据中心相关的一些新动向。

    群里很多人应该听过流动数据中心或移动数据中心、模块化数据中心、微模块化数据中心、海上数据中心、洞穴式数据中心等。它们的好处是显而易见的,比如洞穴式数据中心,可以抵御爆炸或自然灾难性事件,还能够节省制冷能耗,不受高功率微波和电磁脉冲武器的攻击等。

    网络方面,100G以太网不久将会在数据中心领域强势增长,当然这会有个过程,可能25G和50G的网络会优先发展,25Gbps和50Gbps每通道技术将是未来100Gbps(4个25G) 和400G(8个50G)以太网的基础,因此业界普遍认为25G网络会很快替代现有的10G网络。

    今天的分享差不多就到此为止了,做一个简单的总结。

    数据中心的运维既宏观又细节,大到楼宇的设计建造及选址,避免被天津大爆炸这样的事件波及;小到需要注意服务器内线缆摆放位置及方向,防止服务器由于自身的轻微震动导致线缆松动,从而引起系统的频繁Kernel Panic。



  • 本楼用来收集、整理问题:

    问题:发热和功耗一直是数据中心面对的重要挑战之一。面对这个问题,数据中心在这些年构建和运维当中有哪些新技术和新思路?在这个问题上,现在的数据中心和过去相比有哪些进步?

    这个问题很好,很大,也很关键,涉及到一个专业的名词PUE(Power Usage Effectiveness),是评价数据中心能源效率的指标,PUE是一个比值,基准是2,越接近1表明能效水平越好。

    数据中心耗电源最大的两块就是服务器、网络等设备和空调冷却系统。服务器、网络设备可以根据角色的不同可以设置是否启用CPU节能模式,在不同的时间段可以调节风扇的转速;统计显示空调冷却系统占机房总功耗的40%左右,前面分享的图片可以看到早期的数据中心是粗犷开放式的机房,冷却效率低,后来机房出现抬高层下送风系统,再后来下送风并封闭冷通道,或者封闭机柜内下送风冷通道,再到目前的趋势微模块化,封闭冷通道,上下送风,这些演进都是为了提高冷却效能,降低能耗。

    还有一些外部的环境,现在很多数据中心选址就会考虑在寒冷的北国,可以试用自然冷风进行冷却,还有的将机房建在洞穴里,这都是为了进一步的降低能耗,是PUE更接近1。

    问题:数据中心的运维和管理是数据中心TCO的重要组成部分。而很多企业也在用软硬件等不同方式来试图降低这块的成本。那么目前的数据中心在运维管理方面跟过去比有哪些显著的不同?

    最明显的不同应该就是效率的提升。早期的数据中心都需要靠人力的堆积,7*24的巡检,包括数据中心的基础设施,包括园区的,楼宇的,包括各个机组,冷却系统,还包括机柜里服务器或者网络设备有没有报警灯,目前这些大部分都已经自动化监控,不但提高了效率,也节省了人力成本。

    问题:如果说数据中心在设计和管理方面的思路进化是量变的话,那么软件定义数据中心概念的出现就是数据中心的质变。能举例说明软件定义的数据中心在形态上和过去的数据中心比有哪些不同吗?(例如设备的组成,成本构成,运维管理的难度等方面)

    量变积累到一定程度就有了质变,也是一个慢慢演化的过程。软件定义网络,软件定义存储,软件定义数据中心,这是大方向,其实青云QingCloud在做的事情,站在更高的层面看就是一个或多个数据中心的调度系统,就跟人的大脑一样,没有这个系统就是一堆机器,就是传统数据中心,所以我认为软件定义数据中心和传统数据中心最大的不同就是这个调度系统。底层的设备可能并没有太大区别,有了强大的调度系统可以做到高可用,设备就可以更廉价了,运维管理的难度取决于这个调度系统的晚上程度。

    问题:KVM与其它虚拟化技术的优缺点是,KVM如何在系统层面或者硬件层面上进行优化,使其性能最大化?

    虚拟化技术出现已经很多年了,包括全虚拟化和半虚拟化,全虚拟化简单但会有一点性能损耗,半虚拟化需要对guest系统做一些修改但性能更好。

    目前比较流行的虚拟化技术包括KVM,XEN,VMWare ESXi,HyperV,还有VIrtualBox等。开源用于生产的我相信应该是KVM和XEN的天下,但是KVM已经是趋势,具体的一些优缺点,网上有很多这方面的文章可以参考。

    要想让虚拟化性能最大化,物理层面的需要购买支持虚拟化的CPU,目前市场上的新款都应该支持,需要在BIOS里开启VT特性;要想在系统层面再做优化,这个就需要研发人员的介入了,青云QingCloud使用的是我们自己优化过的KVM。

    问题:python自动化,如何防止脚本出错或者导致服务器不稳定。

    这个取决于写Python脚本的人的研发能力,需要多实践。

    问题:自动化运维有代理和无代理方式的哪种更好?

    不确定这个问题里的代理是指什么,夸机房部署应用?如果是这样,可能需要代理;或者在大规模部署的时候,单节点的性能达不到要求,则也需要代理来分担,代理再汇总数据给master进行展现,有无代理不一定是那种更好,是需不需要。

    问题:持续集成方面,Puppet/Salt是否为比较好的选择?它们的优劣势是?

    Puppet/Salt这些都是配置管理工具,Jenkins才算是持续集成工具吧。配置管理工具的优劣势,这个网上其实也有很多的比较。Puppet比Salt更老牌,使用更广,很多大公司在用,证明其足够稳定;Salt是后起之秀,在很快的追赶,它规避了很多Puppet的设计上的不足,也更简单;现在还有一个Ansible也很火,它没有agent,操作基于ssh协议。

    问题:在自动化运维中CMDB占有很重要的位置,但是具体CMDB做到很好的客户很少,有没有更便捷的方式?

    每家公司都有自己的流程,CMDB这个没有一个现成的工具能满足所有客户的需求,我知道的开源里面用的比较多的有itop, CMDBuild, OneCMDB等,真正想好用需要投入人力自己进行二次开发,合适自己的才是最好的。

    问题:问:数据中心使用虚拟化方案,网络安全和数据安全这方面是如何保证的?软件定义网络这方面有哪些经验?多谢!

    青云是自己研发的SDN技术,我们的用户可以采用私有网络的方式保证跟其他客户的网络二层隔离,达到网络和数据的安全。关于软件定义网络,我们的微信公众号有一篇分享是专门讨论这个的,有兴趣的朋友可以去看一下。

    问题:你好,说到大规模自动化运维,OpenStack中的Ironic可以管理裸机,把裸机当做虚机一样来管理。请问Ironic是否可以将当前的自动化工具比如puppet、ansible或者salt结合起来?更好的实现运维功能。

    青云QingCloud是自主研发的平台,并没有采用OpenStack的架构,因此对于您提到的Ironic我并没有过多了解。但是我相信Ironic肯定可以跟Puppet/Ansible/Salt等工具结合,关键是需要了解怎么用好他们,这些配置管理工具在很多场合都可以帮你提高工作效率。

    问题:salstack作为自动化部署工具领域的新秀,目前是是否可用于企业级的大规模数据中心自动化部署中呢?

    当然可以。



  • KVM与其它虚拟化技术的优缺点是,KVM如何在系统层面或者硬件层面上进行优化,使其性能最大化



  • python自动化,如何防止脚本出错或者导致服务器不稳定。



  • 自动化运维有代理和无代理方式的哪种更好?



  • 持续集成方面,Puppet/Salt是否为比较好的选择?它们的优劣势是?



  • 在自动化运维中CMDB占有很重要的位置,但是具体CMDB做到很好的客户很少,有没有更便捷的方式?



  • 问:数据中心使用虚拟化方案,网络安全和数据安全这方面是如何保证的?软件定义网络这方面有哪些经验?多谢!



  • @Jason
    你好,说到大规模自动化运维,OpenStack中的Ironic可以管理裸机,把裸机当做虚机一样来管理。
    请问Ironic是否可以将当前的自动化工具比如puppet、ansible或者salt结合起来?更好的实现运维功能。
    谢谢!



  • salstack作为自动化部署工具领域的新秀,目前是是否可用于企业级的大规模数据中心自动化部署中呢?



  • 问个技术问题,mongoose里面的populate可以支持非_id的属性吗?或者post方法支持集合批处理吗?



  • @开心绿茶 虚拟化技术出现已经很多年了,包括全虚拟化和半虚拟化,全虚拟化简单但会有一点性能损耗,半虚拟化需要对guest系统做一些修改但性能更好。

    目前比较流行的虚拟化技术包括KVM,XEN,VMWare ESXi,HyperV,还有VIrtualBox等。开源用于生产的我相信应该是KVM和XEN的天下,但是KVM已经是趋势,具体的一些优缺点,网上有很多这方面的文章可以参考。

    要想让虚拟化性能最大化,物理层面的需要购买支持虚拟化的CPU,目前市场上的新款都应该支持,需要在BIOS里开启VT特性;要想在系统层面再做优化,这个就需要研发人员的介入了,青云QingCloud使用的是我们自己优化过的KVM。



  • @开心绿茶 这个取决于写Python脚本的人的研发能力,需要多实践。



  • @Jacry 不确定这个问题里的代理是指什么,夸机房部署应用?如果是这样,可能需要代理;或者在大规模部署的时候,单节点的性能达不到要求,则也需要代理来分担,代理再汇总数据给master进行展现,有无代理不一定是那种更好,是需不需要。



  • @建坤 Puppet/Salt这些都是配置管理工具,Jenkins才算是持续集成工具吧。配置管理工具的优劣势,这个网上其实也有很多的比较。Puppet比Salt更老牌,使用更广,很多大公司在用,证明其足够稳定;Salt是后起之秀,在很快的追赶,它规避了很多Puppet的设计上的不足,也更简单;现在还有一个Ansible也很火,它没有agent,操作基于ssh协议。



  • @墨与刀 每家公司都有自己的流程,CMDB这个没有一个现成的工具能满足所有客户的需求,我知道的开源里面用的比较多的有itop, CMDBuild, OneCMDB等,真正想好用需要投入人力自己进行二次开发,合适自己的才是最好的。



  • @zuoguocai 青云是自己研发的SDN技术,我们的用户可以采用私有网络的方式保证跟其他客户的网络二层隔离,达到网络和数据的安全。关于软件定义网络,我们的微信公众号有一篇分享是专门讨论这个的,有兴趣的朋友可以去看一下。



  • @moyasu 青云QingCloud是自主研发的平台,并没有采用OpenStack的架构,因此对于您提到的Ironic我并没有过多了解。但是我相信Ironic肯定可以跟Puppet/Ansible/Salt等工具结合,关键是需要了解怎么用好他们,这些配置管理工具在很多场合都可以帮你提高工作效率。



  • @shengjirensheng 当然可以。



  • @Arron 这里主要是想问自动化运维工具有代理和无代理的优劣对比


登录后回复
 

与 青云QingCloud 社区 的连接断开,我们正在尝试重连,请耐心等待