作为一名项目施工人员,抚琴煮酒前前后后也实施过一些大大小小的项目了,有并发量大的CDN广告网站,还有证券类资讯网站以及电子商务网站等,还有就是一些并发不大但要求作成HA的小型网站等,感觉其实在实施过程还是有蛮多技巧和心得的,特写出来与大家分享一下。
一、准备工作一定要做好做细
做为项目实施工作,还是比较有技术含量的,有的还因为合同期限,有时间限制,所以一定要在公司将所要布署的施工方案的技术活细化,最好是做个几十遍,将各种各样的意外都设想进去。众所周知,Linux下软件如果是源码编译安装的话,有的也区分32位和64位的;更别说windows下的程序了,吃了一次亏后。我后期就直接建议上级领导,以后程序的开发环境和测试都统一为64位了,布署环境我们现在都统一为64位的CentOS5.x及 windows2003 企业版+SQL Server2008,这说的是服务器的操作系统的统一性。再说下软件版本的问题,比如说我们要用Nginx作负载均衡,这时候是用nginx 0.7x还是nginx0.8.15呢,我们经过了大量测试,并且作了相关的压力测试,最后决定了用nginx0.8.15,在项目实施后发现其稳定性相当不错,所以后期的项目实施中一直采用nginx0.8.15,其它的软件版本类似,即测试的工作一定要作好做细做多,可能要浪费不少时间和精力,但这个工作一定要做,必须的。另外的是就是要跟客户那边的IT技术部门多沟通,弄清楚他们的机房带宽,服务器是放在自己机房还是放在电信机房,值班人员是否24 小时监控,服务器的性能如何?是否是四核至强,单台大约能承受多少并发(很遗憾,这个问题基本没多少IT技术能弄得很清楚),最好的做法是给对方的IT技术一张关于网络和系统的调查表,然后一定要得到对方肯定的反馈,我最喜欢的情况之一是对方什么都没,从路由器到服务器和存储都是我们推荐,他们购买,这种情况就能对服务器性能一清二楚了。根据我所了解的系统管理员,一般都很熟悉windows系列,但一谈到Linux和unix,尤其是Centos和 FreeBSD,基本就处于空白期了,所以一定要耐心跟他们核对。另外有一个件事,一定要跟大家提个醒,我们带过去的程序,如果是Linux的源码和数据库的文件估计还
好,但如果是windows的文件,尤其是执行文件(一般是移动硬盘直接携带),一定要用最新的杀毒软件,我们一般是NOD32和卡巴斯基,但这样还不保险。最后是跟对方的技术支持多沟通,用对方的杀毒软件来进行检查,这个我们是有教训的;如果你的软件有病毒,损失全由你方来承担,而且这个对于系统管理员而言,太不专业了。由于我负责的多是 linux/unix机器(我安装的MySQL机器也很多),我这边基本是从没出过问题;而同事携带的移动硬盘,由于用的人太多了,结果拿到客户的机房一扫,居然有毒,所以这事最好是在己方公司做好,不要因为细节影响大局。另外要多了解下对方那边有无网络安全方面的防火墙,一定要一台防DDOS攻击的,目前这方面还比较好,客户做的多是证券系统和电子商务的,非常注意安全,一般都有Juniper系列的防火墙。
二、在项目实施过程一定要注意多部门的沟通和配合
这一点其实也很重要,一套系统,一般包含的是程序+数据+图片等文件,所以你作为项目实施人员,平进一定要注意与这些部门多沟通多了解,我的同事们很不了解,我为什么总是跟开发的一起工作和探讨问题。其实作为系统工程师,即System Admin,你可以不精通C++或PHP,但一定要懂这些,比如php、比如java,另外跟数据部门也要多注意交流,看数据库是运行在什么平台下?是 MySQL还是SQL server2008,这样才能做的有的放矢,胸有成竹。公司内部的交流基本应该还算是比较顺利的,难点就在于项目施工过程中的多部门协调和交流问题。我跟同事的做法是,我们会提前跟客户的业务领导打招呼,约定在一个时间段将所有的施工人员召集起来开一个交流会。比方说,我在南京做的某证券系统,我们是从武汉出飞,三小时的动车。下了火车后我们直接就去客户的办公室,拿出了项目的施工拓补图,迅速的跟所有的施工人员开了一个会,说了项目施工中的重点和困难。人确实很辛苦很累,但这事最好提前和迅速,鬼知道项目实施过程中会出现什么样的意外。第二天我们去电信机房时,还是有的吃惊。HP的工作人员一下子来了六位,刚开始我不是特别理解,后来明白了,4U的服务器确实长得彪悍,小弟我在北京时练就了一点本领,就是能扛着1U的服务器,奔流如飞。结果在4U的服务器前硬楞了,怕闪腰不敢上;还是HP想得比较周到,派的都是年轻小伙,呵呵。言归正传,我记得那个项目算是中等项目,一共有六位HP的工程师,华赛派了一位网络工程师,天泰派了一位安全工程师,我们的客户是派了三个IT技术支持过来,我们这边是我和同事二人。人多力量大,毛爷斧说的好,各人各司其职,迅速的做事,效率还是蛮高的,HP用了KVM来安装系统,8台服务器同时安装;那边的二位工程师也很迅速的设定IP,做内网IP映射等。总之,我担心的意外也没发生,基本一天的时间,可以将所有服务器的系统安装正常,开放Linux的远程(SSH:22)和windows的远程(我们是用Remote Admin),网络方面基本也畅通。天泰的安全工程师也调试了一天,开启了防火墙的透明(Transparent模式)后,留下了他的联系方式给我们就回上海了,临走时说我们可以24小时找他。我们都笑了,白天上班时间还是可以找的,晚上就算了,免得大煞风景。这是比较成功案例,失败的例子我也经常遇到,比如网络不通或对方将我们的网络设置错误等等,那就是比较折磨人了,这事我放在第三点来说。
三、迅速和稳定的处理项目实施中遇到的突发事件
这一点不好说,看项目实施人员的经验和能力了。比如我有次去武汉某证券公司布署Nginx+Apache(web)的1+3的小型网站时,忽然发现有台HP360的主板坏了,怎么也装不上系统;我当机立断,立马放弃这台,只部署成1+2方案,然后最后将情况跟负责我们的副总汇报了下,保证整台系统还是按额定的时间上线,然后我又跟公司的Qs做了大量的压力测试,发现能顶上,所以就暂时就定成1+2了;还有一次就比较郁闷了,我们过去实施时,发现客户已请了家外包公司将机房的网络做好了,让我无语的是,由于客户要求做HA系统,所以我们将施工拓补图上多画了一个网段,即10.0.0.0网段,然而客户这边的IT老总意图理解错了,居然将整套系统做成了二个网段,还划分了VLAN,当时就彻底把我雷翻了,本来明明就是在局域网的一套系统,怎么搞得这么复杂啊?没办法,只好花了一下午时间跟他解释什么叫Heartbeat,然后跟他解释这世上还有一种东东叫双绞线,等他明白过来,再让外包公司的人过来重新布线和分配交换机的IP时,宝贵的工期已足足过了三天;我那三天也没办法,只能先将系统和能布署的全布署上去,最后只等网络ping通了,期间也想过增加一条静态路由的方法,但对方的网络工程师不停的做抽插网线的实验,最后只有作罢。还有一件事也比较郁闷,也是替客户将所有系统布署好后,发现80端口怎么也通不了;仔细盘查了对方的网络工程师,确定问题不出在对方这里(熟练的网工难道还不会映射一个80端口?),我用远程telnet 对方映射的外网IP 80端口时发现好无反映,忽然想到:是不是机房封了80?我的神额,这么简单的问题难道事先没沟通好,晕死我了,立马让对方的老总跟机房备案,开通80,但时间还是浪费了不少...总之,在项目施工中,不断的会遇到许多烦心的事,让你焦头烂额,让你心跳加速,所以这也要看你的应变能力了。注意的是,耐心的跟对方沟通,毕竟人跟人之间需要交流;你要理解的是:就是你是某方面的权威,但在另一方面,你可能什么都不算。所以,低调做人,高调做事,这也是项目施工中应该注意的。
四、在项目施工中多学习,提高个人的能力
实际的线上环境还是很锻炼人的,这也是现在不少公司为什么一定要招有项目实施经验的人的原因。我个人感觉,一个成熟并安全的系统,还是很有技术含量的。你要了解网络、程序、数据库,还要了解什么叫并发,什么叫SSL(哪家公司支持多域名的SSL),什么叫网架架构,你的网站安全吗,监控怎么办呢?文件服务器压力大吗,单台web崩溃了怎么办,PHP的session共享怎么解决,MySQL数据库做成什么样的,是主从复制还是做成MySQL- cluster(别被MySQL群集忽悠了,还是主从复制更适用于你的线上系统,相信哥吧),你的SQL Server2008是单台还是做成SQL Server 2008故障转移群集?shell很熟悉了吧,Apache下的正则熟悉不,能不能在十分钟搞定,兄弟,别笑,我现在经常被我们的Manager鄙视,写得太慢了,要努力加强啊(没办法,这几年迷住了nginx,喜欢上了在它下面玩正则,唉),有时候,做系统集成这块也挺累的,你要掌握的东西太多了,而网工相对而言压力就小多了,你只要保证网络通畅即可;小公司就不说了,一个IT技术支持就要做N多的事,有意思吗?我不知道大家有没有这种情况,我现在维护的电子商务网站,我跟同事经常会遇到老大就站在身后,看你处理故障的事情,如果2分钟能处理的事,我绝对不会拖到第3分钟,没办法,压力逼着人成长。项目实施一般都是有合同时间期限的,所以需要大家在短期内做好布署工作,测试这块可以跟对方商量,对方也要花一段时间进行内测的;一个成熟安全的系统下来,你会发现你成长得非常快,平时不太注意的细节在线上就是重大的安全生产问题了。所以公司一般有外出部署项目,我一般会同意出去,虽然累,虽然项目提成少得可怜,但为了成长值也就忍了。
五、最后就是系统的测试和监控了
压力测试和性能测试一般由公司和对方的测试人员进行,这个大家一般都会给比较充分的时间,这个问题不大。特别是压力测试这块,公司很多Qs不是太懂并发,所以你可以耐心跟他们沟通,顺便熟悉下他们用的Load Runner,那东东我了解了几次,说老实话,很复杂,还是Apache自带的工具和webbench简单些,呵呵。监控这块我强烈建议用Nagios,邮件和短信通知都要做,并求对方的系统工程师24小时开机,遇到紧急事件要即时处理。事实证明,如果都是做双机HA,并且有DDOS防火墙的话,紧急事件还是比较少的。