为什么有这次迁移,主要是因为年前针对nagios的扩展做了很多研究测试,希望应用到生产环境中去,但是生产环境的nagios所在服务器是个集中的管理服务器,上面运行了很多开源软件,而且大部分都是前人安装部署,结构已经固化,坑太多已经无法扩展;其次管理服务器操作系统版本为Centos5.4,老实说现在很多软件在6x的系统上安装起来比较方便,默认环境基本都能满足各种开源软件的运行,而且线下测试都是在6.5的系统上测试的。最后是因为管理服务器太老了,害怕哪一天Down了,虽然配置文件每天都有备份,但是软件一个个安装起来还是比较头疼的。所以最后决定将管理服务器上的所有服务全部迁移到虚拟机上,这样在软件安装完毕之后备份虚拟机就可以解决服务器Down后的恢复问题。


为什么说这次迁移是惨痛的呢,因为本人花了一个星期在新的虚拟机上安装各种程序,迁移各种配置、脚本,解决安装过程中的各种问题(虽然很多程序在本地已经安装测试过,但是线上还是碰到很多之前没有遇到的问题),同时还要修改所有服务器的相关配置,每天弄的昏天暗地,头疼眼花的,心情烦躁。


首先说说迁移过程中都遇到了那些比较头疼的问题。

1.nagios采用NRPE去监控每个服务器,但是NRPE有个比较变态的配置allowed_hosts,就是允许哪个IP来访问它,之前所有服务器都是配置的老的管理服务器的IP,而且本人研究了好久发现它无法配置IP段。好了,新的管理服务器是另外一个IP,那么死人了,所有服务器的NRPE这个参数都要增加新IP,线上有30台左右的物理机,N台虚拟机,全部来一遍二个小时没有了。


2.本人有点轻微的强迫症,对界面美观有比较高的要求,nagios4x的版本界面很好看,所以在线上新的服务器上就安装了Nagios4x的版本,结果与之配套使用的pnp4nagios和ndoutils都无法工作(线下测试使用的是nagios3x的版本)。然后为了解决这二个问题浪费了一天的时间。ndoutils这个最坑爹,直接从笔记上复制的配置,导致ndoutils一直无法正常运行,然后各种百度、google,看官方文档,最后从别人的文档上复制了下同样的配置奇迹般的正常了。后来发现是笔记软件有缺陷,很多纪录的命令直接复制出来都无法正常使用的。


3.运维管理平台(我们自己写的管理平台),里面有很多迁移脚本,迁移到新服务器上之后要测试,结果因为之前写的各种不规范(我自己的开发水准那叫一个渣渣,能跑就可以),改啊,测试啊,再改,头都大了。


4.jenkins。前任部署使用的root用户,迁移之后为了规范使用了普通用户,结果可想而知,也是各种改,各种测试。


5.管理平台上还有二个服务:ntpd和nfs,好了,迁移过来之后那就跟NRPE一样,所有服务器全部来一遍。


6.调试阶段:在头疼脑列几天之后,所有程序、配置都迁移完毕了,启动测试,发现各种丢啊,这里忘记迁移了一个脚本,那里忘记迁移了一个配置,这里忘记安装了一个rpm包,手忙脚乱


针对这些问题,总结了几点:

1.迁移之前的准备太粗糙,只是简单的调研了下老服务器上运行的程序,没有纪录文档,没有仔细整理,没有扩展思维,很多和主程序相关的小东西都是在调试的时候发现缺失了才想起来。


2.没有批量管理工具,只要是动到公共配置,那么好了所有服务器来一遍,太伤人。自动化运维管理工具学了几样,后面对比下准备在生产环境上部署一个。


3.规范,以前的坑就不说了,后面所有的操作要规范,这样迁移就不会那么的痛苦。