由于博主所在公司最近业务量上升,各个项目进度加快,使得原有饱和的服务器资源变得紧张起来。博主很是着急啊,于是就做了一系列的资源使用统计和分析,然后向上递交了采购计划。

       如题《记一次服务器上架的总结和反思》,服务器采购计划最终是批了。博主心情愉悦地等待着这批服务器的到达,并设计了相关的上架流程和自动化方案,最终进行了具体的实施操作。虽然在实施过程中遇到了一些问题,不过都是些不影响主流程的小问题,其中不乏在流程中忽略的点和未设计到的点,这些都是很值得事后思考和反思了。毕竟,这只是一次扩容,以后这种情况还会发生很多次。为了未来更美好,为了祖国更加繁荣昌盛j_0013.gif,为了。。。就写一篇博文记录下本次服务器上架的事情吧!

       阿西吧,不扯了,下面进入文章正题。


准备工作

       在服务器到达之前,博主在忙现有服务器资源的使用情况统计和分析,写服务器采购计划,采购事宜以及机房新机柜的合同签订。

服务器资源的使用情况统计和分析方面

       由于公司这方面卡的不是很严,因此就采集了目前服务器的CPU、内存和磁盘的相关数据指标,来反应当前服务器资源有多紧张。。。已经紧的不能行了。。。

服务器采购计划方面

       首先针对当前架构要调整的地方和预期资源使用增长的估值来算出本次采购所需要的资源数量,然后根据资源数量换算成相关的服务器配置,最终得出服务器硬件的缺口。

采购方面

       由于公司规模也不是很大,又是家互联网公司,也就没有走公开招标的路线。主要针对公司的几个常用供货商进行了相关的询价,然后针对架构进行对比,最终当然是选择了一家性价比最高的(必须是最便宜的)一家。

机房方面

       提前通知了机房的联系人进行了新机柜需求的商榷。由于是老客户了,在价格方面也都没啥好再谈的。走走流程,合同签下,机房那边就提前把新机柜准备好了。老机柜到新机柜之间的网线也提前交代机房为我们铺设完毕。

       在服务器到达之后,由于本次线上和线下环境资源都出现不足。因此,服务器分两个批次,一批到线上机房,一批到线下公司内部机房。到线上机房的这批,要提前和机房交代进行签收和上架操作。机房会协助我们记录号服务器的SN(Serial Number)号和mac地址,这些信息正常情况下会贴在服务器背板上。

       由于这次想把服务器的上架流程打通,使整个流程尽可能的自动化,所以我和一同事就去了机房在现场协助上架。蛋疼的去早了,去了服务器才送达都还没拆了。。。协助机房人员把服务器拆出来,拿到机房里面进行人肉放服务器,人肉登记SN和mac进行CMDB入库操作。


开始实施

       下面就要开始自动化装机操作了!

       我先在一台服务器上部署了一套kickstart(使用cobbler也可以,cobbler只不过是把kickstart包了一层)。由于本次上架的服务器是一批虚拟化服务器和一批存储服务器,因此我针对这两种情况编写了2个ks文件。

       新服务器要想到PXE装机这一步,首先做如下几个步骤:

       1、开机按F2进入System Setup

       2、选择Device Setting下的Integrated RAID Controller xxxx Configuration Utility选项卡下,根据自己的服务器类型做适合级别的RAID阵列

       3、在IDRAC Setting下(即DELL远程控制设置)下,设置远程控制的IP和关联的网卡接口等

       4、在System BIOS下默认服务器的开机启动顺序。服务器的默认启动顺序非常重要,一定要设置为从硬盘启动,防止PXE装完系统重启之后由从PXE重复安装。

       以上的步骤设置完毕之后,我们就可以通过DELL的远控页面(即IDRAC WEB)设置服务器为仅在下一次重启时进入PXE启动。

       在自动装机这个流程中,我将服务器装机、系统初始化,应用初始化,虚拟化部署等拆封成了两大步骤。

第一大步骤:服务器装机

       在这一步骤中,主要通过ks文件的设定来自动应答服务器安装过程中的各种设置,比如root密码、时区、分区情况等等。

       这一步中,有一个重点就是如何确定你装的这台服务器的主机名和 IP 是你预设好的?

       我是这样子来实现的,通过将服务器的SN号和预设主机名与IP地址做对应,然后录入到CMDB中。在 ks 的安装后脚本中,我通过放入命令通过获取系统的SN号(使用dmidecode -t 1命令),然后通过SN号去查CMDB服务器获取当前SN号对应的是哪个主机名和 IP 地址,然后进行进一步的设置操作。

第二大步骤:系统初始化,应用初始化和虚拟化部署

       在这一步骤中,主要靠编写独立的初始化工具来完成整个步骤的流程操作。由于该步骤发生在服务器系统安装操作之后,因此我们会在系统装机的安装后脚本中设定自动获取该初始化工具。在服务器重启完毕之后执行,进而完成整个步骤操作。

       该脚本主要包含:

              系统层面的初始化(防火墙、selinux、内核参数、账户权限、服务器互信和相关安全设置等)

              相关应用的初始化(自动加入到zabbix监控、puppet和ldap中)

              虚拟化的初始化(自动部署虚拟化,按照CMDB中的设定自动由模板机产生虚拟机)

       在整个自动化过程中,目前考虑到的就是以上的方面。通过机房提供的SN和mac地址,将信息录入CMDB然后服务器安装之后通过CMDB获取相关的元数据,完成指定操作,彻底释放企业运维。不过,我认为只是把苦逼的部分转嫁到了机房运维的头上,像将服务器放到机柜里、抄写SN和mac、设置raid和idrac这些还是需要有人来搞得。不过谁让我们付钱了呢j_0059.gif强调,我这里可没有黑机房运维的意思。

       

问题总结

       按照我上面聊得,好像没有啥问题似得。下面就到总结问题的时刻了。

       问题如下:

       1、在提采购计划时,忘了采购网线,导致取机房前一天匆忙联系采购

       2、去机房的时候,干活工具没有带齐(个人充电线忘记带了)

       3、服务器信息在录入CMDB的时候,个人原因少录入了2个字段的信息,导致2台服务器安装完毕之后没有主机名和IP

       4、没有将需要安装的软件包做本地yum源导致安装过程缓慢,以zabbix和puppet为主。。。

       5、由于疏漏。。系统盘大小为102400MB,误写成1024000MB,导致2台服务器进行了重装。。。

       6、在系统初始化时,忘记添加ssh端口的更改,导致服务器安装完毕之后,另写脚本批量从跑该作业。

       7、ks文件编写时,没有使用服务器做测试,导致在dell服务器上跑时,报了一个网卡选择的问题,最后谷歌之,添加了相关参数解决了该问题

       

       阿西吧,好忧伤了。。。整个过程中,碰到的问题还是蛮多的。总结下来,没有技术性的难点和屏障,主要问题还是处在预案不够全面,实施的时候不够认真仔细导致。唉,是时候反思一波了。。。

       目前,以上的问题已经被我修正。线下的这批服务器还没搞,下周去再搞就会很轻松了。

       

       OK,本文就到这里,相关的实施文档,我会在这两天抽空写下分享给大家。