【51CTO独家特稿】上个月的最后一个星期五是全世界的第十一个“系统管理员日”。在有关系统管理员日的介绍中,我们可以看到这样一句话:
系统管理者有许多绰号:技客(Geek)、大大、无名英雄、黑客斗士、第一线救火员、企业的生命线。 |
在大多数非IT人员的想象中,系统管理员是一个类似于勤杂工和服务员的角色,是在自己和同事的电脑死机、蓝屏或上不了网的时候求助的对象。
对很多企业老板而言,只有在服务器出问题的时候才会想起公司里还有这些系统管理员,而在业务运行正常的时候,往往会将他们遗忘。
这是很多系统管理员的工作现状——救火队员。而很多非IT人士和业内新人也误以为救火就是系统管理员主要的工作。但是事实上,一个企业如果仅仅把系统管理员当做救火员来使用,那么只有两种可能:
1、他们把IT技术支持人员(最终用户支持)和系统管理员的工作职能搞混了
2、他们的服务器们正处于岌岌可危的状态下
保证系统和服务尽可能长时间不间断的正常运行,是系统管理员的主要工作。简单的说,系统管理员的职责主要是防火,而非救火。一般规模不大、业务重要性不强的企业可能容易对平时的防护有所忽略,然而对于电子商务、网上银行、乃至于规模大一些的门户网站而言,哪怕是一秒钟的服务中断都会造成极大的经济损失,所以除非是遇到地震或是大规模断电断网这种情况,原则上是不允许业务出现中断的。
虽然防护的等级不同,但是无论对于哪个企业的系统管理员而言,针对自己企业的业务对稳定性和连续性的需求,配合手上可以调配的资源,尽可能的保持服务正常运行,都是他的本职工作。
下面让我们来看看系统管理员们平时可能会遇到哪些故障,以及如何进行基本的防护。
服务器可能遇到的故障多种多样,比较常见的有:
◆硬件坏了
◆一台服务器跑多个服务造成服务紊乱
◆服务器流量忽然大幅上涨(如Slashdot Effect就属于这种),服务器由于短时间内过于繁忙而宕机
◆安全攻击
还有其他一些不算是故障,但是属于隐患的问题,比如Apache或Nginx的漏洞,远程用户的权限,可能被当做攻击目标的端口等等,也需要运维人员及时处理。
以下内容根据与做运维的几个朋友的聊天整理而来,描述了众多管理员平时遇到的问题中的很小的一部分,算是管理员防火救火工作的一个缩影吧:
◆我们公司硬件少,一台服务器上要跑很多程序,动不动就紊乱了!
◆硬件问题软件问题,多多少少都遇到过啊,无非就是换设备或者重启。
◆我们公司那个JBOSS端口总是被Java占用,导致公司主页无法打开,每次我都要去kill。
◆被黑过。不过一般黑客还是比较客气的。
◆曾经发现过被放了一个木马在目录下,后来发现是php的漏洞搞的!
◆硬盘啊,内存啊,主板啊……都坏过。
◆服务器这两天总是莫名其妙自动重启……
根据51CTO编辑的了解,在很多中小规模的网站中,大多数服务器故障都是由于服务紊乱所引起,服务器被黑也比较常见;而由于中小网站的服务器数量比较少,对于单独服务器宕机的预备处理做的往往并不到位,因此一台服务器的瘫痪很容易就造成整个服务的访问速度变慢甚至中断。这种问题随着硬件的添加和相应容错策略的完善,往往会有所好转。
在规模较大的企业中,由于硬件充足,服务紊乱的状况基本没有,主要面临的问题在于流量过大与黑客的攻击,而且由于硬件多,硬件仿佛也更加容易坏掉了(有一句话是这样说的:如果你有一千台服务器,那你平均每天都会遇到一台挂掉的服务器;如果你有很多万台服务器,那么每时每刻都会有某些服务器是挂掉的)。由于大型网站的高可用性方面都做的比较充分,即使一两台服务器停止运行,它们上面的服务自动就被转移到其他服务器上处理了,只要及时恢复这些节点,完全不会影响到整个服务的运转。
而像是Google这样规模的企业,它在购买服务器的时候都是捡便宜的买,大量的购买(Google现在总共大约有100万台服务器),同时Google的服务从架构设计层面就包含考虑了服务器坏掉的因素,可以说是把服务器当做消耗品来使用。这样即使每天都有很多服务器挂掉,也是在预期范围内(所谓的高容错)。说起来在运行大规模服务(云计算)这个领域,Google也算是数一数二了,如果你对Google的数据中心架构感兴趣,可以阅读一下《Google的整体架构猜想》以及《探索Google App Engine背后的奥秘》这整个系列,其中叙述的十分深入;同时Google自己开发的GFS文件系统,也处处体现了这方面的考虑。
当然,无论是在中小网站还是在大企业,预防服务中断的首位指导原则都是一样的:监控系统,分析系统日志。
- 你怎样才能知道你有哪些程序占用了多少硬件和网络资源?
- 你怎样才能知道你的硬件是不是总是很繁忙?
- 你怎样才能知道你的服务器受到了攻击?
- 你怎样才能知道某个进入了服务器的木马是从哪里来的?
所有这些有关你服务器的情况,服务器的管理员必须要时刻掌握。想要时刻明明白白你的服务器?51CTO编辑为大家提供了一系列小技巧进行分享。
Linux/Unix下的监控工具很多,有命令行的和GUI的,51CTO将其整理成为一个Linux监控工具的展览馆,以供参考。另外还有抚琴煮酒的一个系列:
明明白白你的Linux/Unix服务器:硬件篇 网络篇 日志篇 安全篇
里面的很多技巧都可以省系统管理员不少心力。
对于Windows系统而言,微软推荐使用SCOM这款专门的监控和运维软件,不过这款软件需要另外购买,配置起来比较麻烦,而一般规模的业务也用不到,所以主要使用的是Windows Server自带的Windows可靠性与性能监控器。日志也是,用Windows自带的日志一般就够了。
如果你的企业有足够多的硬件,那么负载均衡、高可用这些策略你应该也不陌生。这些相关的文章可以在51CTO组网频道的负载均衡栏目下找到很多,比如抚琴煮酒的揭秘企业级web负载均衡完美架构,19个心得 明明白白说Linux下的负载均衡,都是不错的参考文章。Windows环境下的高可用实现更加方便,尤其是Windows Server 2008上面的故障转移群集、网络负载平衡等功能,灵活性强,操作起来也十分方便。
上面这些都是属于防火的工作。至于真正遇到故障发生,需要排障的时候,则情况比较复杂了。除了检查硬件、换硬件、加节点、检查病毒和系统补丁、kill进程和重启服务器之外,一些常见的故障和解决方案可以参考《网管员必读——故障排除》这本书。但是,真实环境下遇到的故障是多种多样的,需要更为灵活的处理方式和更多的经验。51CTO将一直关注这方面的内容与大家分享,您可以长期关注我们的频道。
当然,除了所有这些防火和救火的策略之外,还有最后一个终极杀手锏:备份,频繁备份,并定期确认备份是可以恢复的。系统的备份,数据库的备份,重要服务的备份,在不同服务器之间的备份,异地的备份……51CTO系统频道的专题提供了一些Windows备份和Linux备份的基础策略和工具介绍,而更加深入的备份概念与技术,读者们可以参考51CTO的子站Watchstor.com。
如果您是一位系统管理员,而您整日被救火的工作所困扰,那么您应该要好好规划一下自己的技术成长和职业发展道路了。
【编辑推荐】