运维工程师成长之路

978-7-115-41423-6
作者: 刘鑫
译者:
编辑: 陈冀康

图书目录:

详情

全书共分为九章。第一章介绍了怎么样选择IDC才是符合标准要求的。第二章介绍了对多台服务器上架及对其进行初始化时要注意的事项。第三章介绍了运维常用的工具,以便加快我们做事效率。第四章介绍了系统的相关安全的审计配置及日常日志的重要性。第五章及第六章介绍了常用的代码管理工具。第七章介绍虚拟化的对比及KVM使用的过程。第8章介绍了多台服务器的集中管理。第九章介绍常用的监控工具及处理手段。

图书摘要

版权信息

书名:运维工程师成长之路

ISBN:978-7-115-41423-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 著    刘 鑫

  责任编辑 陈冀康

  责任印制 张佳莹

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410 

  反盗版热线:(010)81055315

  广告经营许可证:京东工商广字第8052号


刘鑫,曾担任过系统讲师,喜欢讨论各种网站架构技术,特别是对系统级的优化、对整体 网站架构以及各种架构中运用的技术等颇有心得。对Python情有独钟,喜欢编写运维自动化工具。他是ChinaUnix社区“集群和高可用性”资深版主,经常在社区内发起技术讨论,深受广大CU(ChinaUnix)社区会员的喜爱。他的博客地址:liuxin1982.blog.chinaunix.net。

本书特色

双11、618,折扣拼抢拍加剧了电商的竞争,也不断挑战后台系统的运维。电商对系统运维的要求和重视程度越来越高,相应的职业需求也在增长,而人才较为匮乏 作者是资深的系统运维工程师。

本书以一个全新的环境来模拟一家公司从小到 大的发展过程中的技术需求,以解决运维人员和企业的各种技术困惑为主线来展开介绍,内容实用性强,易于掌握。


运维工程师是集网络、系统、数据库、开发、安全工作于一身的复合型人才。随着国内电商行业的发展壮大,企业对运维工程师的要求也逐渐提高,这也为运维工程师的职业发展提供了更为广阔的空间。

本书分为8章,分别介绍了企业互联网中IDC的选择、服务器初始化、运维工具、网络认证系统、Puppet、SaltStack、KVM和ZooKeeper等内容。

本书适合运维工作人员、系统管理员和工程师、网络管理人员及计算机相关专业的学生阅读。


随着国内电商行业的发展和壮大,运维工作也变得更加复杂。为了保证系统及应用稳定、高效地运行,企业需要有更多的高级运维工程师。服务器的稳定运行是企业发展较为重要的基础,当前国内大部分中小企业对运维工程师的定位就是“打杂的”,但随着技术型公司的诞生及成长,运维工程师的发展空间将会越来越大。

运维工程师是一个融合多种知识(网络、系统、架构、安全、开发、存储等)的综合性岗位。在不断解决各种新的问题和挑战的同时,运维工程师也积累了一定的经验。随着系统的规模越来越大、架构越来越复杂,运维工程师、架构师也面临越来越高的要求。任务时间上越来越急迫,企业对有经验的优秀运维人才需求量大,且资深运维工程师的身价也越来越高。

一个好的运维工程师基础要很扎实且知识面一定要广。笔者曾经出版的《高性能网站构建实战》一书,是按照系统的流程来讲述一个完整的网站架设过程。也许本书不能像《高性能网站构建实战》那样让你学会很“高深”的技术,但一定可以开拓你的视野,扩展你的思路,加快你成长的脚步。

另外,无论是看书学习还是工作态度都要踏实一些,步子不要一下迈得太大。

我工作近10年,其间在小到几个人、大到几千人的公司都工作过,所面对的系统架构从最初的几台服务器发展到后来的几千台服务器。我发现有些公司的技术负责人自己不懂运维却总是数落运维人员不专业,还根据自己“专业”的想法来选择托管机房、服务器等,以此来展示自己的“才能”。其实有点经验的运维人员就会知道,要根据不同的实际应用选择不同的服务器型号及配置。比如在千万级的PV下LVS负载的情况下,采用标配的R420即可;Memcached、Redis根据实际情况可以选择内存扩展比较大的R720;如果是大数据存储分析(如Hadoop),就可以根据所需要的是存储容量还是计算速度来定制服务器等。

本书结合我这些年从小规模公司到相对比较大规模的公司的经历来编写。本书可以让读者了解更多不同规模的企业在运维方面所需要的不同环境,也可以让读者根据自身所处公司的发展来规划个人及部门的发展。

本书所提到的系统均为CentOS系统,虚拟化所涉及的系统为Centos 6.X。本书中的应用、脚本均来自于线上生产环境,读者可以直接使用。

正如我前面所说,本书也许不能让你掌握很高深的技术(因为本书不是官方帮助文档),但它可以使你在网站构架及运维方面奠定一个良好的基础和扩大知识面,以方便你制订出更具体、更清晰的职业规划。

希望读者通过学习本书,能够掌握书中各种技术的应用,并在一定程度上可以根据公司规模来规划公司人员及部门的发展,使自己的职业技能和管理技能有一个质的提高,同时也可以明确自己的职业发展道路。这正是我期望看到的,也是我写作本书的目的。

本书的读者对象包括但不仅限于以下人员:

本书按照选择机房、服务器上架、系统维护及常用工具、系统安全、运维自动化服务器集中管理、虚拟化、Hadoop相关技术的流程顺序来编写。全书共分为8章。

第1章介绍了怎样测试IDC及北京IDC的介绍。

第2章介绍了对多台服务器上架及对其进行初始化时要注意的事项。

第3章介绍了运维常用的工具,以便提高做事效率。

第4章介绍了相关的网络认证系统配置及其重要性。

第5章和第6章介绍了运维自动化应用。

第7章介绍虚拟化的对比及KVM的使用和部分优化。

第8章主要介绍Hadoop相关的优化和ZooKeeper。

建议读者按照章节顺序阅读,从而可以了解运维工程师在一个简单的小规模企业中成长的完整过程,也能对运维在整体上有一个大概的了解,并且能够得到一个完备的结果。

本书编写体例有以下几点需请读者注意。

命令行

输入的命令行用加粗的等宽字体表示,如下所示:

/usr/local/sbin/keepalived -D -f /usr/local/etc/keepalived/keepalived.conf

配置文件

一般的配置文件使用常规等宽字体表示,如下所示:

! Configuration File for keepalived
global_defs {
   notification_email {
     admin@example.com
   }
…
}

配置文件说明或注释

文件的说明或注释,用#符号开头,并用仿宋字体表示,如下所示:

#让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数"-D"

感谢朋友海洋提供关于Hadoop相关的文档资料。

感谢朋友陈晨提供部分图片资料和脚本。

感谢在工作和生活中所有帮助过我的人,感谢你们,正是因为有了你们,才有了本书的面世。

虽然我们花了很多时间和精力去核对书中的文字、代码和图片,但因为时间仓促和水平有限,书中仍难免会有一些错误和纰漏。如果大家发现什么问题,恳请反馈给我,相关信息可发到我的邮箱ziyuhexue2000@163.com,我一定会努力解疑答惑或者指出一个正确的方向。

如果大家对本书有任何疑问或想与我探讨Linux相关的技术,可以访问我的个人博客(liuxin1982.blog.chinaunix.net)。另外,我在ChinaUnix社区的ID为Gray1982,大家也可以直接在社区中与我在线交流。


“小鑫啊,因为最近公司的业务正式上线,所以我们需要有个高质量的IDC。你去调研一下,然后这个月定下来。”

“好的,我去看看”。小鑫回复了主管就开始IDC的调研。

小鑫是一个刚刚大学毕业的学生,虽然在校期间管理过校园网,但在运维方面的经验很少,对北京的IDC情况也不是很清楚。于是迷茫的他只好上网搜索相关的IDC资料,可是搜索出来的结果却令小鑫失望,大多数都是广告性质的推广,看不出机房真实的情况。无奈小鑫只好一页一页地浏览,突然看到一个机房介绍的网址链接,打开链接发现是一本名为《高性能网站构建实战》的图书的内容简介。这本书的内容还真不少,包含一套完整的标准网站架构中所使用的应用。小鑫心想这本书正适合自己这种知识面不广并且经验又少的人,于是立即下单购买。

收到书后,小鑫立刻寻找机房介绍的章节,发现虽然不是介绍北京IDC提供商的,但书中所介绍的选择机房的性价比及计算带宽等方法还是很实用的。看完这章,小鑫在写购买机柜及带宽的量级时就不会找不到头绪了。

不过小鑫目前的问题还没有解决。他注意到这本书的作者在北京,猜想能写出这样书的作者肯定接触了不少的IDC提供商,所以小鑫决定给《高性能网站构建实战》一书的作者发一封求助邮件。

刘老师:

  您好!

我刚刚拜读过您的《高性能网站构建实战》,感觉这本书特别适合我,很感谢您的这本书给我的帮助。可我还有个问题想请教一下,我这边的业务准备上线,需要在北京寻找一个线路质量特别好的IDC提供商。我在网上搜索过,不过大多都是推广性质的广告,再加上我本人对北京的IDC提供商不是很熟悉,所以麻烦您给我介绍几家。

谢谢!

发完邮件后,小鑫心里还有些忐忑。这封邮件不知道会不会被“过滤”掉,期待能有个好的回复吧。

小鑫一般吃完晚饭就没什么事了,有时候看看新出的电影大片,有时候学学Python编程。今天晚上比较特殊,他一直期待新的邮件。晚上11点多时,邮箱客户端显示新邮件的提醒,小鑫迫不及待地打开邮件,看来邮件没有被“过滤”掉,真是太高兴了。

小鑫:

  你好!

首先感谢你对我的支持。

图1-1是中国互联网络带宽图,虽然不是最新的,但至少能看出来主要的节点是北上广,其他的地方我还真不清楚,北京的情况多少还是知道一些的。

图1-1

我以前和联通的人聊过,细节就不多说了,只能说在北京每个区至少有两个出口,其作用是互相备份及流量的负载。估计你那边将来也不会仅仅是一个机房,到时候再考虑具体情况吧。

北京的IDC圈比较杂(代理商多、带宽种类多),机房的硬件条件我就不多说了。仅有几个大牌的IDC公司自建了多处机房,其余的都是和电信或联通合作的,所以机房的硬件一般不用担心。有一些IDC自身品牌比较不错,但可能给你使用的线路并不是最好的(有一些商家确实没有好的资源,也有一些商家的部分地点资源不好),但费用还是一样贵。还有一些价格较低,但质量及服务确实也没什么保证。前几年各大运营商及IDC提供商都在拼资源、拼质量,最近都在拼各种服务及解决方案。不同的商家提供不同的服务。即使是相同的商家也会根据目标客户的规模来定制相应的服务,所以服务方面我也不好说什么。

我认识一个做游戏运营的朋友,他公司每年赚得不少,不过就是因为选择了大品牌的IDC,所以近一半的利润都给了IDC公司。当然,我说这个只是提醒你一下,你也可以和公司建议一下,选择性价比高或者适合自己公司的IDC即可,不一定非要选择大品牌。

整个北京线路的出口在各区就那么多,所以你在选择IDC的地点时也要注意。因为很多商家都有自己的IDC环网,走的出口不是当前地区而是另外一个区的,目的是为了节省成本。还有一些提供商,测试时给你提供好的线路,但当你实际使用时,给的又是另一个线路,所以最好选择信誉度较高的提供商。

还有一点要注意的是,有很多提供商最初只是和你说线路的费用,并不和你谈上下行的比例。一般情况下我们谈的都是1:1的线路(上下行比例是1:1)。但如果你不问,等到签合同时会和你说是2:1或者是10:3,这样你就会花1:1线路的钱却用着不等价的线路。这一点很重要,一定要注意。

另外除了带宽,还有机柜。机柜唯一要关注的就是电。至于外表就不多说了,机柜最起码外表看着要正规,但有一些自建机房的机柜都算不上机柜,只能算是机架吧。供电不过7A,价格可是相当不便宜,这就是大品牌啊……一般情况下,机柜分10A和13A的。这点你注意一下就行了。

我不清楚你公司的位置,如果在中关村的话,放在XXX地点也是不错的选择。去年我公司为了选择一个线路质量不错的地点,测试了7家IDC提供商,XXX那边的带宽是非常不错的。除了线路,这个地点离中关村也不远,打车半小时,方便维护。

还有一个地点是兆维的电信机房,我们原来的机房就是放在那里,可以说是一个比较稳定的地方了。那个位置不但电力有保障,而且线路带宽也是有保障的,很多其他地区的机房也是走这里的线路(这里有电信或者联通的出口)。不过兆维的提供商不是一般的乱,有的资源不知道已经倒了几手了,并且线路也有不是北京本地的。这些你和他们谈的时候最好能确认其资源来源。这里我给你推荐几家在兆维信誉比较不错的IDC提供商,像ABC、XYZ。

XXX和兆维这两个地点还是不错的,主要是看你们怎么去和提供商谈价格吧。当你和他们联系后,他们会给你介绍他们各地点的机房,建议你测试完后再去看看。理论上硬件差的不是很多,主要就是使用时间的长短。毕竟硬件都会有一个高频率故障期,这点注意一下即可。

除了资源和服务,一个IDC还需要具备一些资质,完整的资质包括以下几点。

(1)最新年检营业执照。

(2)中华人民共和国组织机构代码证。

(3)税务登记证。

(4)一般纳税人证明。

(5)ICP经营许可证。

(6)ISP经营许可证。

(7)ISO9001质量管理体系认证。

(8)资信证明(3AA)。

对于一个IDC提供商而言,只有具备这些资质才可以参加投标。当然,一般的IDC提供商只要有ICP和ISP资质也是可以经营的。至于机房的电,也要考察一下。没有发电机的一看就知道,主要是有些机房的发电机基本上就是一个摆设。机房的温湿度,你直接进机房感觉一下就行,多去几个机房就会有很直观的感受。

最后,再一次感谢你的支持。

小鑫看完邮件就觉得这信息量也太大了,先不说机房的地点,仅带宽就有这么多说道。小鑫顿时感到头有点大,要是没人提醒,谁能想到还有这么多注意事项,可真得要感谢刘老师了,不然被别人坑了都不知道。小鑫赶紧回了封邮件表示感谢。

第二天,小鑫刚想找领导汇报情况,谁知领导直接找到小鑫,然后说他了解到使用XXX那儿的人挺多,而且带宽质量也不错,让小鑫多联系几家兆维的IDC提供商去测试一下。小鑫想着,看来那边确实不错,不然也不会那么火。

小鑫找到了XXX和兆维的ABC、XYZ几家IDC提供商,通过见面了解了一些情况,然后就进入了测试阶段。不过小鑫仅知道可以使用ping命令测试一下大型网站,其他的就不清楚了。所以小鑫又一次给刘老师发了一封邮件。

刘老师:

  您好!

又一次麻烦了,感谢您上次对机房的介绍和推荐。我们这边已经很顺利地和他们取得了联系并已进入测试阶段,但由于我个人对这方面并不是很了解,所以还得麻烦您和我说一下测试机房的一些事情,谢谢。

发完邮件后,小鑫在网上也搜索了一些测试机房的详细信息,可惜大多是无关紧要的介绍,所以也就很耐心地等待刘老师的邮件。

晚上,小鑫如期收到了刘老师的邮件。

小鑫:

  你好!

这几家的IDC还是不错的,下面大概和你说一下手动的测试方法。这些方法是“开源”的且没有使用其他的第三方付费工具。

首先提供几个线路测试时需要的IP(这些IP以前用过,当然你自己也可以找一下):

61.135.169.125联通;

218.30.108.232电信;

121.195.178.239教育。

然后我们开始测试带宽峰值的情况。

在机房A的一个服务器上创建一个大文件(最好是GB级),在另一个机房B的服务器上wget下载这个文件,看看一下载文件的速度能达到多少。当然机房B的带宽不能小于机房A,不然就不能准确地测试出机房A的带宽质量。假设机房B提供的标准带宽是5MB(标准带宽指的是上传和下载的速度比例为1∶1),机房A提供的标准带宽是10MB,这样机房B是测试不出机房A提供带宽的最大值的。还要注意的是,有一些IDC提供商为了线路的“保障”,提供的测试带宽并没有限制,或者说并不是按着你提出的要求,这样基本测试不出提供商的峰值及稳定性,意义不大。所以这种提供商是可以忽略的,因为这不仅仅是因为机房带宽的问题。

接下来,我们需要测试从所在机房出去的线路质量,大致有以下几个“开源”的方法。

最简单的就是ping。我在上面已经给了几个测试的IP,现在购买的机房线路大部分都是BGP多线,我们可以根据上面给的IP进行简单的ping测试,当然你也可以自己找其他的,上面的几个IP仅供参考。

这里要提醒你的是,有些提供商是禁用ping测试的,他们会让你使用tcpping这样的工具,但是我不建议你使用这类工具。因为tcpping这类工具是工作在四层TCP层,而ping是工作在三层IP层,所以你用tcpping来测试的话,结果有可能不如ping测试的准确。

测试得出的结果保存在类似“机房_线路_ping”这样文件名的文件中,因为测试不仅仅是一个机房一条线路。测试时间上至少是24小时,最好选在有节日的时间段里,因为这样可以测试到同机房的一些公司流量突然增加时会不会影响到其他公司,也从侧面测试一下IDC的稳定性。

如果测试时间覆盖了早晚及节假日的话,那么相对来说准确性会高一点。测试时间结束后需要找出测试时ping的最大值、最小值及平均值,做好记录以备对比测试结果时使用。

前面提到过测试带宽“量”的问题,这个测试是要说明一下带宽的“质”的问题。一些在同一地点的不同IDC提供商有时候带宽的价格相差很大,除了有个别是报价虚高的外,还有一些相对普通但报价低很多的提供商,这些提供商一部分是策略需要,也有一部分是带宽可能不是北京本地的。这些带宽是提供商从北京附近(如河北)的线路整合过来的,因为非北京的带宽会便宜很多,往往是北京本地带宽价格的1/4~1/3。

这样一来,提供商的成本会大大地降低。如果不经过测试,用北京本地的价格买了这样的带宽的话,不仅仅是使用了质量差的带宽,还损失了一笔不小的费用,所以测试是否是北京本地的带宽很重要。

我们第二个“开源”的方法是tracert。它是检测当前测试服务器通过几个路由后到达目的地IP的命令(它的具体作用和工作原理你自己搜索一下)。tracert测试虽然说不用像ping测试那样需要24小时一直不停地测试,但早晚这两个时间段还是一定要测试的。因为有一些IDC的提供商早晚走的路由是不同的,毕竟相对来说大部分的公司晚上用的带宽并不是很多。

建议根据上面的几个IP测试,把测试结果保存在文件“机房_线路_tracert”里,以便以后分析对比用。时间可以根据你的需要来定,我们需要查看每经过一个路由的IP是否为北京IP。

查询IP的脚本、数据库我已经放在附件里了,它的使用格式如图1-2所示。

图1-2

这个数据库有段时间没更新了,你可以自己找一个最新的版本使用。这里统一用的是Python 2.7,其他的版本没试过,但理论上也是可以的。

特别强调一下,ping和tracert一定要多采集几天的数据。

另外,还有一个测试是查看数据从外部到IDC内服务器的。

这个可以请全国各地的一些朋友来帮忙(在QQ群里可以喊一声,如果你运气好的话会有很多人来帮你的)。这里给你介绍几个QQ群,如“Linux饭醉团伙”(QQ群号为5019224)、“系统运维专业群”(QQ群号为3902836)。你在这两个群里求帮助的话,会有很多人帮忙,使用的方法也是上面提到过的。

只是这种手工的测试可能不太尽如人意,因为人员、地点、时间、网络等各种不定因素,所以测试结果也不是很准确,但是用来做大概的评估还是可以的。如果你那边可以多地部署的话,就使用Smokeping。

Smokeping主要是监视网络性能,包括常规的ping、用echoping监控www服务器性能、监控dns查询性能和监控ssh性能等。底层也是以rrdtool作支持,其特点是画的图非常漂亮,网络丢包和延迟用颜色和阴影来表示。

最新版本的Smokeping支持多个节点的检测结果从一个图上画出来。比如从A、B两个监视点检测C点的ping效果,可以把A、B的检测结果在一个图上表示出来,便于比较。它的安装配置比较简单,我这里就不多说了,附上几张图你大致看一下,如图1-3到图1-5所示。

图1-3

图1-4

图1-5

第三种只能是参考性质的测试,使用测试网站。你可以搜索一下相关信息,因为只是参考性质的,所以这里不过多地介绍。

再次强调,测试网站并不一定准确,只作参考。

以上的测试结果可以截图保留,以备对比使用。

以上是“开源”方法。不知道你那边是否限制比较多,还有一种是使用专业的测试方案。当然这种是收费的,并且价格非常贵。根据一些使用过的人介绍,使用第三方测试的话,效果几乎没有不好的,因为数据都是可以“修改”的,你懂的。如果你只是选择机房的话,不建议你用这些收费的测试。我介绍的这几家相对来说在行业内口碑还算是不错的,最主要的是质量好、线路有保证。

我这边当时测试的条件是Centos5.6_64位、10MB带宽、BGP多线、apache2版本。每一个机房的测试结果是都保存在一个Word文档里。

最后我向你推荐一个我自己编写的脚本,你可以从我的博客http://blog.chinaunix.net/uid-10915175-id-4998580.html中找到。它主要是用来分析访问一个站点的各项性能,如DNS解析时间、下载第一个包时间、传输时间等。

测试IDC线路大概就是以上这几个步骤,祝你顺利!

乍一看,小鑫就感觉头大,测试一个机房线路都这么麻烦。难道不是接上线部署了程序,打开网站速度快就行吗?这事儿以后找时间还得向刘老师请教。既然刘老师这么建议,相信也错不到哪去。明天到公司联系机房的人,让他们准备好相应的物品就开始测试。

刘老师:

  您好!

非常感谢!通过您的介绍,我了解到北京大概的网络情况及IDC提供商的一些“手段”,这会使我们在选择IDC时可以避免很多的损失,再次感谢您。

另外请教几个问题,一个是怎么样把已经执行的程序放到后台;另外一个是如果把tracert的路由放到一个文本里,那么多IP,我是不是要一个一个地去执行您所介绍的方法……我这方面的基础比较差,麻烦您了。

感谢!

第二天一早,小鑫就看到了刘老师的邮件回复。

小鑫:

  你好!

一般平时使用的命令行是ping xxxx的形式,不过当关掉SSH客户端(我使用的是SecureCRT)或者网络断开时,系统终端会收到HUP信号,从而关闭其所有子进程。所以一般的解决办法就有两种,要么让进程忽略HUP信号,要么让进程运行在新的会话里,从而成为不属于此终端的子进程。

nohup无疑是首先想到的办法。顾名思义,nohup的用途就是让提交的命令忽略HUP信号。所以一般在测试时,我常用的命令是nohup ping xxx & 这样的形式,如图1-6所示。

图1-6

还有一种是子shell,这种方法确实不常用,直接看我给你发的截图吧,如图1-7和图1-8所示。

图1-7

图1-8

将一个或多个命令包含在“()”中就能让这些命令在子shell中运行(更多的小技巧以后有时间再和你说)。从上面两张截图可以看到,执行命令的终端1是执行命令的终端,打开另一终端2查询出的结果是ping那个进程的父ID(PPID)为1(init进程的PID),这就说明所执行的命令不会受到终端1的HUP信号的影响了,你也可以关闭终端1再查询一下。还有一个命令是setsid,这里我就不和你多说了。

上面说的是命令前加上nohup或者子shell就可以避免HUP信号的影响。但是如果未加任何处理就已经提交了命令,想让其避免HUP信号的话就只能通过作业调度和disown来解决这个问题了。它的用法如下所示。

用disown -h jobspec来使某个作业忽略HUP信号。

用disown -ah来使所有的作业都忽略HUP信号。

用disown -rh来使正在运行的作业忽略HUP信号。

这里你需要注意的是,当使用过disown之后,系统会把目标作业从作业列表中移除,这时将不能再使用jobs来查看它,但是依然能使用ps -ef查找到它。

这里还有一个问题,因为这种方法的操作对象是作业,如果我们运行命令时在结尾加了“&”来使它成为一个作业并在后台运行,那么是可以通过jobs命令来得到所有作业列表。但如果并没有把当前命令作为作业来运行,就需要用Ctrl+Z组合键(按住Ctrl键的同时按住Z键)了!

Ctrl+Z组合键的用途就是将当前进程挂起(Suspend),然后我们就可以用jobs命令来查询它的作业号,再用bg jobspec将它放入后台并继续运行。需要注意的是,挂起会影响当前进程的运行结果。

如果在执行命令时已经用了“&”,则可以直接使用disown,如图1-9所示。

图1-9

如果提交命令时未使用“&”将命令放入后台运行,可使用Ctrl+Z组合键和“bg”将其放入后台,再使用disown,如图1-10所示。

图1-10

另外你提到的tracert所得到的IP归属地问题,测试出来的结果会有很多IP,虽然说可能有重复的,但数量还是会相当多。如果你一个一个查询的话,会浪费很多时间。不知道你对shell的了解程度有多少,整理出来的数据文件用shell脚本处理一下就可以。一般情况下tracert一次的结果如图1-11所示,将其保存在一个文件中,然后配合AWK和for就可以得出结果,如图1-11和图1-12所示。

图1-11

图1-12

这些是比较基础的内容,建议你多了解shell基础知识。shell方面的知识多而杂,需要花一些时间才可以熟练地掌握。

除了上面关于带宽方面的内容,再简单介绍一些选择IDC运营商的标准吧,以下是我收集的一些标准。

1.考察IDC机房运营的稳定性

(1)应该选择运营至少在8年以上的IDC。因为新机房管理制度不成熟,容易做机房环境调整(如变更IP、机柜搬迁、IDC机房公司变更)。

(2)调查同机房客户情况,IDC托管的客户如果比较混杂的话,很容易遭受攻击。同一机房(同一交换机)有客户经常遭攻击,自己的应用也会受到牵连。

(3)是否有正规的ICP资质,并要求提供IDC证复印件(有的IDC没有ICP资质,或借用其他公司的资质)。

(4)IDC备案是否方便?(有的机房因为资质问题很难做ICP备案)

2.考察IDC机房的带宽和机柜情况

(1)是不是多线机房,有没有自己的BGP自治域(一般小的代理商没有)?

(2)机房总的带宽是多少,增加带宽是否方便?

(3)是否存在带宽复用情况,带宽复用率是多少?

(4)可扩充机房是否充足?一般一个大的运营商会将机房分为一期、二期等。

(5)机柜可以存放的服务器数量是多少?一般有电及数量的限制。

3.考察IDC是否便于维护

(1)如果不在同城,需要计算一线城市的交通是否便利,维护一次的成本是多少?

(2)机房是不是可以24小时进行维护?

(3)故障响应时间是多少?也就是当服务器发生故障时,我们最快到达机房所需要的时间。

(4)服务器及设备迁入或迁出机房,是否有专门人员协助?

4.考察机房的温、湿度及电力情况

(1)一般机房会配备大型的空调系统,所以在温、湿度方面都不是问题。建议直接去机房感受一下即可。

(2)一般每个机柜提供的是双路电,但机房最少是两路电。一般IDC跟用户说双路电的时候,指的是分别从两个变电站(同一供电局)过来的,但对于高可靠性的机房来说,分别从两个不同供电局过来的电才算是真正的双路供电。

(3)看看是否有UPS电源供电,该电源能支撑多久的供电?

(4)了解发电机的运行使用情况。

5.其他

至于IDC机房的位置、格局、消防及安全性等可在参观机房的时候,由机房相关负责人员来介绍。

小鑫按着刘老师的建议编写了ping和tracert的脚本,交给后台执行去了。第一步算是完成得差不多了。小鑫采集了几天的数据,然后进行分析就可以了。目前小鑫的公司没有其他的机房,Smokeping是用不上了。小鑫加了刘老师介绍的QQ群,发现群里从事运维工作的人很多。

这几天小鑫也搜索了一下测试机房及服务的网站,有ping、tracert、DNS、CDN的测试,网站测试的内容还不少。小鑫输入了需要测试的IP,分析结果也挺多的。全国各地的机房、IP归属地、相应的测试时间等内容还是挺全的,不过不清楚后台的具体操作,只是看最终结果有点儿不太靠谱,只能作参考了。

一周后机房的测试结束了,小鑫把相关的测试结果文件统一地分析了一下,各个IDC提供商的各种线路之间的对比相差不多。Wget下载时的“量”是没问题的,tracert所经过的线路也都是北京的线路。真得感谢刘老师提供的工具,不然小鑫要一个一个地查这些IP的归属地不得“累死”啊!

小鑫把这些测试的结果写了一封邮件发给了领导。小鑫印象中,tracert也就是查看经过的路由,其他的作用还真不记得了。原来tracent在测试机房的时候还挺重要的。小鑫回顾了tracent的原理,即向目标地址发送不同TTL值的ICMP数据包 ,来确定到访问目标地址所经过的路由时间及数量。

要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL递减1,数据包上的TTL减为0时,路由器应该将“ICMP已超时”的消息发回源系统。这个命令使用NBT(TCP/IP上的NetBIOS)显示协议统计和当前TCP/IP连接,所以只有在安装了TCP/IP协议之后才可用。

小鑫在用tracert测试时,有时显示的是星号,如图1-13所示。小鑫知道是可以忽略且不会影响测试,但具体为什么还真不清楚。原来某些路由器不会为其TTL值已过期的数据包返回“已超时”消息,而且这些路由器对tracert命令不可见。在这种情况下,将为该跃点显示一行星号。这也是出于安全考虑,也许是网络问题没有回应,所以出现星号。

图1-13

看过测试结果,小鑫的领导和各IDC提供商沟通后就和小鑫直接去机房实地考察了。机房的人员向他们介绍了机房的电、核心设备、温度、通风、线路走向等,也回答了他们提出的一些问题,比如机柜的扩展、双线路的备份、DDOS攻击所采取的措施等,结果还是很让人满意的。

通过这次测试机房,小鑫了解到测试机房所需要的测试方法,虽然有些方法因为条件的限制而无法采用,但还是有一些“开源”的方法,既简便又实用。除此之外,小鑫还大概了解到机房里的一些注意事项,这些也是比较重要的。

除了获得的这些信息外,小鑫还发现了自己的很多不足之处,尤其是基础知识不扎实、不全面。看到刘老师的《高性能网站构建实战》里介绍刘老师曾经做过培训讲师,所以小鑫写了一封对自己很重要的邮件。

刘老师:

  您好!

这次能成功选择高质量的机房要非常感谢您的指导,在这里再次感谢您。

另外想请您给我提点建议。我个人做运维的时间不长,对于技术和架构方面懂得也不多,就只是想着做运维还不错,所以想在运维这方面提升一下自己。希望刘老师给我一些指点。

比如服务器的选择和配置、系统中常用的软件技巧等。

十分感谢!

带着很大的期望,小鑫单击了“发送”按钮。


“小鑫,我们的机房已经选择好了。下周需上架5台服务器,你去准备一下。”

“嗯,我去准备。”小鑫很干脆地答应了,心想不就是装个系统嘛,分分钟的事。

小鑫记得在《高性能网站构建实战》中介绍过用U盘的方式来安装服务器。于是他就根据书中的内容做了两个U盘,在服务器到机房上架后,直接用U盘安装还是挺顺利的。安装好系统后再配置IP,正常连通后就可以回公司配置其他的了。

通过这次安装服务器,小鑫觉得U盘的方式比较适合安装少量服务器。如果服务器多的话就会比较麻烦了。所以小鑫给刘老师写了一封简短的邮件。

刘老师:

  您好!

不知道上次的邮件收到没有?我现在不太清楚个人的职业发展方向,希望刘老师能指导我。

这次来信主要是想询问,如果想快速方便地装几十台服务器显然用U盘的方式不太合适。您能告诉我如何解决吗?谢谢。

晚上小鑫收到了刘老师的邮件。

小鑫:

  你好!

最近我在给公司搞虚拟化的东西,事情比较多,所以回你的邮件比较晚。

你可以使用网络安装多服务器。下面的内容是以前我自己做的笔记,你先看看,如果有什么不懂的再问我。

无人值守系统需要用到DHCP、HTTP、PXE、TFTP这几个服务,安装的环境适合于各种Centos系统,我这里用的是Centos6.5_64的系统。首先把安装文件mount到apache的默认路径(因为只是安装系统用,这么做是比较方便的),如图2-1所示。

图2-1

然后是安装DHCP、httpd、tftp-server、syslinux这几个程序,使用yum -y install dhcp httpd tftp-server syslinux即可。安装好后就是各软件的配置了,先配置DHCP,如图2-2所示。

图2-2

接下来配置httpd,共享ks.cfg文件和软件。

先执行mount-o loop CentOS-6.5-x86_64-bin-DVD1.iso /var/www/html/pub/。

然后修改权限,执行chmod 644 /var/www/html/ks.cfg。

/var/www/html/ks.cfg文件的内容如下,这里你主要修改一下IP即可,root密码是6个a,分区是根是50GB,Swap是9000MB,安装包是最小化安装的,这些值你可以根据实际情况更改即可。

cat /var/www/html/ks.cfg
# Kickstart file automatically generated by anaconda

install
text
url --url http://192.168.1.11/pub
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw aaaaaa
firewall --enabled --port=22:tcp --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all --initlabel --drives=sda
part / --fstype ext4 --size=50000 --ondisk=sda
part swap --size=9000 --ondisk=sda

%packages
@core
@server-policy
@workstation-policy

配置tftp-server,我们需要做的就是编辑文件/etc/xinetd.d/tftp,如图2-3所示。

图2-3

编辑好文件后,把相对应的文件复制到tftpboot目录下。如果系统中找不到pxelinux.0,请安装syslinux程序包。

cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /var/www/html/pub/isolinux/vmlinuz /var/lib/tftpboot/
cp /var/www/html/pub/isolinux/initrd.img /var/lib/tftpboot/
cp /var/www/html/pub/isolinux/boot.* /var/lib/tftpboot/
cp /var/www/html/pub/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux. cfg/default

编辑/tftpboot/pxelinux.cfg/default,需要修改的部分我使用了粗体表示。

其实PXE自动安装就是在服务器PXE启动、从DHCP获得IP后从TFTP服务器上下载pxelinux.0、default这两个文件,然后根据default文件指定的vmlinuz、initrd.img启动系统内核,并下载指定的ks.cfg文件,最后根据ks.cfg去(HTTP/FTP/NFS)服务器下载RPM包并安装系统。

default ks
#prompt 1
timeout 600

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.5!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
 menu label ^Install or upgrade an existing system
 menu default
 kernel vmlinuz
 append initrd=initrd.img
label vesa
 menu label Install system with ^basic video driver
 kernel vmlinuz
 append initrd=initrd.img xdriver=vesa nomodeset
label rescue
 menu label ^Rescue installed system
 kernel vmlinuz
 append initrd=initrd.img rescue
label local
 menu label Boot from ^local drive
 localboot 0xffff
label memtest86
 menu label ^Memory test
 kernel memtest
 append -
label ks  kernel vmlinuz  append ks=http://192.168.1.11/ks.cfg initrd=initrd.img 

等配置完成后,就可以启动相关的服务了。这里要提醒你一句,如果不是安装系统,最好把这几个服务停止。因为一旦有服务器是网络启动的话,就会导致服务器系统重装,极有可能丢失数据,后果将非常严重。

service httpd restart;
service dhcpd restart;
service xinetd restart;

这里的防火墙配置就是打开其使用的端口,所以下面简单地介绍一下。

iptables -I RH-Firewall-1-INPUT 1 -p udp --dport 67 -j ACCEPT
iptables -I RH-Firewall-1-INPUT 1 -p udp --dport 69 -j ACCEPT
iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport 80 -j ACCEPT
service iptables save

等这些都配置完成后,就可以测试了。你可以随便选择一台虚拟机从网络启动,然后就是等待了。之所以这里不用在boot:中输入是因为我们使用默认的ks。当然如果需要的话,你可以使用等待输入,如图2-4所示输入ks即可。

图2-4

建议把你自己使用的笔记本做成PXE服务器,这样以后去机房带着笔记本连上网线就OK了。当然如果要一起装N台服务器,可能你的笔记本的配置不行,还是装在机房里的服务器上吧,需要的时候再开启。

再说一下你想了解的问题。你应该没有系统地学习过Linux吧,可以去我的博客看一下视频课件,网址是http://blog.chinaunix.net/uid/10915175/cid-157259-list-1.html。这些Linux基础课件是我以前做讲师时专门做的,建议你系统地学习。

运维是整个公司互联网的基础,所涉及的方方面面的知识还是很多的。系统运维、网络运维、IDC运维、应用运维、运维开发等,我不知道你现在对哪些技术感兴趣,所以也不好给出学习建议。只要记住一是从你感兴趣的入手,二是一定要会开发。开发语言目前来看Python是必不可少的,当然会C语言的话更好,改改内核什么的还是很有前景的。

服务器配置的选择是根据业务的需要来定的,没有一个固定的说法。只有你深入了解业务,才能更好地选择。服务器常用的硬件也需要了解一下,比如内存、硬盘等。至于你说的一些常用软件我现在需要时间整理,目前手里也有不少常用的,只是比较乱。

现在你那边应该是刚装上系统,还没进行初始化的操作吧?我再给你一个初始化的脚本吧,可以正常使用(如果你的系统是Centos5.X)。脚本中的内容只是简单地配置了必要的登录信息。因为我这边正在逐渐过渡到Puppet和Salt,所以这个脚本的内容不多。

系统初始化需要的配置以及软件如图2-5所示。

图2-5

以上介绍的是装完系统后初始化的内容。目前我不太清楚你在装系统之前是否进行过一些设置,大概有这么几处需要设置。首先是打开BIOS虚拟化的支持,然后是配置Raid(如果已经有系统正在运行应用,可以使用命令行的方式来配置Raid,详见我的博客http://blog.chinaunix.net/uid-10915175-id-4396986.html)。至于远程卡的设置可以在安装Openmanager后采用脚本的形式去设置,这样可以节省大量的时间。(服务器重启一次需要几分钟,如果你那有几十台,那样占用的时间就可想而知了)。

Openmanager修改远程卡的命令如下,这里的IP、子网掩码、网关可根据你的情况自行修改,这里我只是用变量标记出来。虽然说这些命令行从英文原义上就可以看懂,但我还是建议你到服务器上配置一下(Openmanage的安装在下面的章节中会有介绍)。

omconfig chassis remoteaccess config=nic ipsource=static ipaddress=192.168.${sub} subnet=${netmask} gateway=192.168.${gw} nicselection=shared primarynw=lom1 failovernw=lom2 enablenic=true
omconfig chassis remoteaccess config=user id=2 enable=false
omconfig chassis remoteaccess config=user id=3 name=root 
omconfig chassis remoteaccess config=user id=3 lanaccesslevel=administrator
omconfig chassis remoteaccess config=user id=3 newpw=password confirmnewpw=adminpass
omconfig chassis remoteaccess config=user id=3 dracusergroup=admin
omconfig chassis remoteaccess config=user id=3 enable=true

下面介绍打开BIOS虚拟化的支持及配置Raid的方法。

Dell服务器打开BIOS虚拟化支持(不同型号的机器设置方式不同,不过可以参考以下方式)。

(1)重启服务器,在开机画面的右上角出现提示后,按F11键(按下后显示Enter Bios Booting Manager,大约需要等待1分钟)进入BIOS设置。

(2)进入BIOS选项后选择“System Setup”,按Enter键。

(3)进入BIOS选项卡后,选择“Process Settings”,按Enter键。

(4)进入BIOS选项卡后,选择 “Virtualization Technology”,按“+”号键,将“Disable”修改为“Enable”(并确认为Enable)。

(5)按Esc键一次,弹出3个选项,选择“Save changs and exit”。

(6)计算机自动重启,设置完成。

至于配置Raid的方法,由于服务器的型号不同,所以界面可能也不一样。不过大致的配置选项是相同的,因为我不方便截图,所以找了相关的图片。Raid的种类及功能我就不多说了,相信你也知道。首先启动服务器按Ctrl+E组合键进入配置Raid选项(服务器型号不同,进入配置Raid选项也有不同的快捷键),按照屏幕下方的虚拟磁盘管理器提示,在VD Mgmt菜单(可以通过Ctrl+P/Ctrl+N组合键切换菜单),按F2键展开虚拟磁盘创建菜单,如图2-6所示。

图2-6

在虚拟磁盘创建窗口,按Enter键选择“Create New VD”创建新的虚拟磁盘,如图2-7所示。

图2-7

在RAID Level选项上按Enter键,可以出现能够支持的RAID级别。RAID卡能够支持的级别有RAID0/1/5/10/50等,根据具体配置的硬盘数量不同,可能出现的选项会有所区别。选择不同的级别,选项也会有所差别。选择好需要配置的RAID级别(这里以RAID5为例),按Enter键确认,如图2-8所示。

图2-8

确认RAID级别以后,按向下方向键,将光标移至Physical Disks列表中,上下移动至需要选择的硬盘位置,按空格键来选择(移除)列表中的硬盘。当选择的硬盘数量达到这个RAID级别所需的要求时,Basic Settings的VD Size中可以显示这个RAID的默认容量信息。有X标志的为选中的硬盘,如图2-9所示。

图2-9

选择完硬盘后按Tab键,可以将光标移至VD Size栏。VD Size可以手动设定大小,也就是说可以不用将所有的容量配置在一个虚拟磁盘中。如果这个虚拟磁盘没有使用我们所配置的RAID5阵列所有的容量,剩余的空间可以配置为另外一个虚拟磁盘,但是配置下一个虚拟磁盘时必须返回VD Mgmt创建。VD Name根据需要设置,也可为空。

这里要强调各个RAID级别最少需要的硬盘数量为:RAID0=1 、RAID1=2、RAID5=3、RAID10=4和RAID50=6。

修改高级设置,选择完VD Size后,可以按向下方向键或者Tab键,将光标移至Advanced Settings处,按空格键开启(禁用)高级设置。如果开启后(红框处有X标志为开启),可以修改Stripe Element Size大小,以及阵列的Read Policy与Write Policy,Initialize处可以选择是否在阵列配置的同时进行初始化,如图2-10所示。

图2-10

高级设置默认为关闭(不可修改),如果没有特殊要求,建议不要修改此处的设置。关于这里设置的Stripe Size对性能的影响,可以参考我的博客http://blog.chinaunix.net/uid-10915175-id-4405248.html

上述的配置确认完成后,按Tab键,将光标移至OK按钮,按Enter键,会出现如图2-11所示的提示。如果是一个全新的阵列,建议进行初始化操作;如果配置阵列的目的是恢复之前的数据,则不要进行初始化。按Enter键确认即可继续。

图2-11

配置完成后就会返回到VD Mgmt主界面,将光标移到Virtual Disk 0处,按Enter键,如图2-12所示。

图2-12

可以看到刚才配置成功的虚拟磁盘信息,查看完成后按Esc键可以返回主界面,如图2-13所示。

图2-13

在此界面,将光标移至图中Virtual Disk 0处,按F2键可以展开对此虚拟磁盘操作的菜单。

和系统类似,当左边有“+”标志时,将光标移至此处,按向右方向键可以展开子菜单,按向左方向键可以关闭子菜单,如图2-14所示。

图2-14

如图2-15所示,可以对刚才配置成功的虚拟磁盘(Virtual Disk 0)进行初始化(Initialization)、一致性校验(Consistency Check)、删除、查看属性等操作。

图2-15

如果要对此虚拟磁盘进行初始化,可以将光标移至Initialization处,按Enter键后选择Start Init。此时会弹出提示窗口,初始化将会清除所有数据,如果确认要进行初始化操作,在OK处按Enter键即可继续,如图2-16所示。

图2-16

需要注意的是,初始化会清除硬盘、阵列中的所有信息,并且无法恢复。

确认后可以看到初始化的进度,左上框内为百分比表示,右上框内表示目前所进行的操作,如图2-17所示。初始化进行为100%时,虚拟磁盘的配置完成。

图2-17

如果刚才配置虚拟磁盘的时候没有使用阵列的全部容量,剩余的容量可以在这里划分使用。将光标移至Space allocation处,按向右方向键展开此菜单,如图2-18和图2-19所示。

图2-18

图2-19

将光标移至*Free Space*处,按F2键即可在弹出的Add New VD处按Enter键,如图2-20所示。

图2-20

再次进入配置虚拟磁盘的界面,此时左下框内为刚才配置的虚拟磁盘已经选择的物理磁盘信息,右上框内可以选择要划分的容量空间,如图2-21所示。同样,如果不全部划分,可以再次返回,进行下一个虚拟磁盘的创建。

图2-21

这里要提醒的是,由于虚拟磁盘的建立是基于刚才所创建的阵列,所以RAID Level与刚才所创建的相同,无法更改。

每一次创建都会在Virtual Disks中添加新的虚拟磁盘。这些虚拟磁盘都是在同一个磁盘组(也就是我们刚才所配置的RAID5)上划分的,如图2-22所示。

图2-22

经过这些配置,相信应该可以满足你那边安装系统的需要了。

祝你好运!

看完邮件后,小鑫感觉自己对现在公司的业务知之甚少,对服务器的选型基本无从下手。另外,小鑫确实没想到服务器装系统前还有这些设置,好在现在的线上应用没有正式启用,赶紧和开发人员沟通,然后去修改服务器的一些设置。

确定要做的事后,小鑫准备打开附件,好在配置PXE服务器还不是很麻烦。小鑫决定明天在自己的笔记本上配置一个,这样以后去机房一开服务器就可以自动安装系统了,还是挺方便的。然后小鑫打开了初始化的附件。

#!/bin/bash
ip='XXXXX'
change_dns (){
   resolv="resolv.conf"
    mv /etc/resolv.conf /etc/resolv.bak
    wget http://$ip:88/conf/$resolv -O /etc/$resolv
}

close_service (){
   for s in acpid anacron auditd autofs avahi-daemon bluetooth cpuspeed cups firstboot gpm haldaemon hidd hplip iptables ip6tables irqbalance isdn kudzu lvm2-monitor mcstrans mdmonitor messagebus netfs nfslock pcscd portmap readahead_early restorecond rhnsd rpcgssd rpcidmapd sendmail setroubleshoot smartd xfs xinetd modclusterd yum-updatesd
   do 
     chkconfig --level 012345 $s off
     service $s stop
   done
}
install_sshpubkey (){
    pubfile="authorized_keys"
    sshconf="sshd_config"
    mkdir -p /root/.ssh
    cd /root/.ssh/
    rm -f $pubfile
    wget http://$ip:88/conf/$pubfile
    chmod 600 $pubfile
    chattr +i /root/.ssh/authorized_keys

    #update ssh configure
    cd /etc/ssh/
    mv $sshconf $sshconf.$(date +"%Y%m%d%H%M")
    wget http://$ip:88/conf/$pubfile
    chmod 600 $sshconf
    service sshd restart
}

close_selinux (){
    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
   /usr/sbin/setenforce 0
}

close_ipv6 (){
    modfile="/etc/modprobe.d/close_ipv6.conf"
    sed -r -i -e 's/^(NETWORKING_IPV6=)yes/\1no/' /etc/sysconfig/network
cat >> $modfile <

这些服务根据情况更改如下:

  chkconfig --level 012345 acpid off
  chkconfig --level 012345 anacron off
  chkconfig --level 012345 auditd off
  chkconfig --level 012345 autofs off
  chkconfig --level 012345 avahi-daemon off
  chkconfig --level 012345 bluetooth off
  chkconfig --level 012345 cpuspeed off
  chkconfig --level 012345 cups off
  chkconfig --level 012345 firstboot off
  chkconfig --level 012345 gpm off
  chkconfig --level 012345 haldaemon off
  chkconfig --level 012345 hidd off
  chkconfig --level 012345 hplip off
  chkconfig --level 012345 iptables off
  chkconfig --level 012345 ip6tables off
  chkconfig --level 012345 irqbalance off
  chkconfig --level 012345 isdn off
  chkconfig --level 012345 kudzu off
  chkconfig --level 012345 lvm2-monitor off
  chkconfig --level 012345 mcstrans off
  chkconfig --level 012345 mdmonitor off
  chkconfig --level 012345 messagebus off
  chkconfig --level 012345 netfs off
  chkconfig --level 012345 nfslock off
  chkconfig --level 012345 pcscd off
  chkconfig --level 012345 portmap off
  chkconfig --level 012345 readahead_early off
  chkconfig --level 012345 restorecond off
  chkconfig --level 012345 rhnsd off
  chkconfig --level 012345 rpcgssd off
  chkconfig --level 012345 rpcidmapd off
  chkconfig --level 012345 sendmail off
  chkconfig --level 012345 setroubleshoot off
  chkconfig --level 012345 smartd off
  chkconfig --level 012345 xfs off
  chkconfig --level 012345 xinetd off
  chkconfig --level 012345 modclusterd off
  chkconfig --level 012345 yum-updatesd off

  service acpid stop
  service anacron stop
  service auditd stop
  service autofs stop
  service avahi-daemon stop
  service bluetooth stop
  service cpuspeed stop
  service cups stop
  service firstboot stop
  service gpm stop
  service haldaemon stop
  service hidd stop
  service hplip stop
  service ip6tables stop
  #service iptables stop
  service exim stop
  service irqbalance stop
  service isdn stop
  service kudzu stop
  service mcstrans stop
  service mdmonitor stop
  service messagebus stop
  service netfs stop
  service nfslock stop
  service pcscd stop
  service portmap stop
  service readahead_early stop
  service restorecond stop
  service rhnsd stop
  service rpcgssd stop
  service rpcidmapd stop
  service sendmail stop
  service setroubleshoot stop
  service smartd stop
  service xfs stop
  service xinetd stop
  service modclusterd stop

小鑫浏览了这个初始化脚本。感觉内容不多。邮件中刘老师说这脚本是他们前些年使用的,而现在已经过渡到Puppet了,可能只是为了使用Puppet或者Salt而做准备吧。这些应用以前只是听说过,是用于批量管理系统的,不过看样子确实需要学习一下Puppet或者Salt了。

小鑫在服务器系统安装完后做了一些简单的配置,然后就去学习Puppet了。

几周后的某天,开发人员过来找小鑫说服务器连不上了。小鑫一想,死机的话就找机房重启一下吧。小鑫联系了机房,没几分钟就接到机房的电话,确认是死机后就重启了。重启后登录系统小鑫发现内存少了8GB,怎么会没了一条内存呢?小鑫搞了半天,最后还是找供应商换了内存才恢复正常。只是小鑫没搞明白,为什么会突然死机,为什么会在重启后内存的容量减少了呢?供应商也没说出原因,只是说经常遇到这事,换根内存就能解决,所以小鑫只好请教刘老师了。

刘老师:

  您好!

我公司用的是DELL的服务器。这次情况是服务器突然死机,重启后发现少了一条8GB内存的容量。我不太清楚这是怎么回事,麻烦刘老师帮帮我,谢谢。

晚上回家后小鑫收到了刘老师的邮件,想来这种情况可能不是什么大事吧,然后小鑫打开邮件阅读起来。

小鑫:你好!

你说的这种事情对我来说是比较常见的,我自己也遇到过好多次。服务器突然死机,重启后少了一条或者两条内存的容量;或者在使用中,内存容量减少了。这种事情在DELL的服务器上比较常见(因为我用DELL的服务器已经有些年头了)。如果你们的服务器是在DELL官方购买一般不会出现这样的情况。出现这样的情况大多都是供应商的问题,因为他们手里的服务器很多且都是不同批次的。你可以找供应商换换硬件就行,因为这种情况硬件一般不是坏的。

还有一种是你装完Openmanager后的系统监控,有时候会监控到CPU损坏的报警,其实也是内存的问题,换换内存就好了。一般情况下CPU是不会坏的,这一点你注意一下。

另外就是要安装网卡、硬盘等驱动及固件(我这边安装的都是最新版本的),除了提升各硬件的性能外,还可以解决意外的情况。比如,使用DELL服务器的网卡,如果安装的系统版本比较低,在传数据比较频繁的时候会出现从丢包到不通的情况,重启即可解决所有问题(无硬件及网络故障)。

所以,建议在系统初始化时要将硬件驱动和固件升级至最高版本。

另外DELL的服务器有一套自己监控硬件信息的软件,你可以在DELL官网上找到。输入网址http://www.dell.com/support/drivers/cn/zh/cnbsd1/ProductSelector,然后输入服务器的Serial Number即可,如图2-23所示。

图2-23

当然,你可以登录你的服务器,然后使用dmidecode查找SerralNumber,如图2-24所示。

图2-24

提交正确的Serial Number后,找到相应的系统及模块,就可以下载Openmanage了,如图2-25和图2-26所示。

图2-25

图2-26

Openmanage的安装非常简单,如下所示,你修改一下文件就行了。

#!/bin/bash
for i in 'echo $*'
do
ssh $i <<'EOF'
if [ -f /opt/dell/srvadmin/sbin/omreport ];then
  /opt/dell/srvadmin/sbin/srvadmin-uninstall.sh -f
  rm -rf /opt/dell
fi

om_name='OM-SrvAdmin-Dell-Web-LX-7.2.0-6945.RHEL5.x86_64'
mkdir /opt/dell
cd /opt/dell
wget http://192.168.X.X:8989/conf/$om_name.tar.gz
tar -zxvf $om_name.tar.gz
cd linux/supportscripts/
sed -i -e 's/$/ Tikanga/' /etc/redhat-release
bash srvadmin-install.sh -x
bash srvadmin-services.sh start
bash srvadmin-services.sh enable 
rm -f /opt/dell/$om_name.tar.gz
EOF
Done

启动后,打开网址https://IP:1311/,输入系统root及root密码即可登录。由于这方面的内容比较多,我只是给出几张截图,你自己安装后体验一下吧,如图2-27和图2-28所示。

图2-27

图2-28

附件是简单的监控脚本,你可以根据自己的情况进行修改。

另外,建议你最好配置远程管理控制卡(买服务器的时候一定要买这个卡),这样一般只要计算机有电就可以自己去及时处理问题,而不用再去找机房值班人员了,会更方便且更快捷。

现在的DELL服务器的R420和R720(其他新的型号类似)的远程控制卡是需要激活的,一般由提供商负责激活。配置远程控制卡我就不多说了,需要重启服务器等配置操作,很麻烦。附件里有一个脚本是在系统安装Openmanager后直接用脚本去更改远程控制卡配置,相对来说比较方便。

另外再说一下远程控制卡的连接,不需要给远程控制卡插根网线连接到交换机,服务器及交换的绑定已经占用不少端口了,如果再加上远程控制卡的端口,交换机的利用率会低很多。

我这边用的是SSH隧道连接到机房,在本地开通一个代理,这样浏览器就可以直接访问到机房的IP了。这种方法我个人用着比较方便(当然如果你那边服务器可以接入VPN的话可能就会更方便)。图2-29是建立SSH隧道,图2-30是浏览器的设置(因为浏览器种类比较多,这里不一一列举)。这里要说明的是浏览器代理设置的类型为Sock5,连接本地的地址是127.0.0.1,端口使用的是7070。(IP及端口是图2-7所示的文件指定)。

图2-29

图2-30

设置完这些后,就能以连接的服务器为代理去访问数据了。

祝你好运!

看完后,小鑫觉得这些东西太实用了,自己完全可以用omreport命令为基础来写一些监控,回头和领导提下需求,想必领导也会同意。另外没想到的是,新装完系统还需要升级各种硬件的驱动和固件,以前从来没考虑过这方面的事。这还多亏刘老师提醒,不然以后网卡用一用就丢包,还真不好检查。

小鑫和领导提出了监控硬件的需求并且加到了运维平台里,领导得知相应的需求后就着手让开发人员去做相关的事情了。然后小鑫根据刘老师给出的附件文件安装Openmanager,并设置远程控制卡。

在配置过程中,小鑫发现,如果要通过远程控制卡的虚拟终端来访问服务器(远程控制卡里访问系统的console),还需要安装Java环境和使用IE内核的浏览器,配置IE的代理如图2-31所示。

图2-31

小鑫配置检查了一下需要使用的功能,一切正常后就开始全面部署,这样以后服务器出现问题就可以直接远程解决了,这比起叫机房值班人员会更快捷、更方便。

通过这次对服务器初始化的一些操作,小鑫了解到不是装好系统就可以交付了,还需要配置及安装来完善服务器硬件及系统软件的需求。这样做不但可以提高服务器性能、降低服务器故障率,还可以方便、快速地解决问题。这些都很重要,也是应该掌握的。

小鑫希望下次能够了解到在运维中常用的知识。


相关图书

物联网全栈开发原理与实战
物联网全栈开发原理与实战
区块链技术本质与应用
区块链技术本质与应用
网络调研技术与实战
网络调研技术与实战
区块链架构与实现:Cosmos详解
区块链架构与实现:Cosmos详解
TongWeb中间件实用教程
TongWeb中间件实用教程
2020区块链漫游指南
2020区块链漫游指南

相关文章

相关课程