众所周所,现在搞系统运维的一般会区分二种环境,一种是开发环境,我们一般称之为内网,用的服务器系统一般是FreeBSD8(64位)或Ubuntu系列;一种是运维环境,即我们托管的系统或网站,一般放电信机房或双线机房,我们称之为外网,用的服务器系统为CentOS5系列(64位)。玩了几年Linux/UNIX,我这里有几点心得技巧,可能是大家平时在工作和学习中容易忽略的,特与大家交流分享下,希望能提高大家的运维水平。
一、选择一个合适的远程操作工具
Linux/unix下我推荐X-manager 3.0企业版,windows2003/2008下我推荐用RA和远程桌面。这里稍为介绍下它们的优点:
X-manager 3.0企业版
官方网站:http://www.netsarang.com/products/xmg_detail.html
①跟putty不同,它只需要一个程序窗口就可以同时控制成百台Linux/unix服务器;
②X-shell的乱码情况比putty更好;
③X-browser能很好的从windows桌面控制Linux桌面,尤其是操作Linux下的oracle数据库时;
④X-sftp很方便的和安全的上传和下载Linux/unix服务器的东西,尤其是在windowsXP下。
Remote Admin
抚琴煮酒外出公干时,有幸经HP工程推荐使用Remote Admin(以下简称为ra)用来远程管理windows2003机器,后来在公司60k的限速环境下一直运行得很好。家里的机器是二台XP机器,用windows自带的远程桌面效果非常不佳,这时想起了ra,效果非常好,这里将其使用心得与大家分享交流一番:
①windows的远程桌面用于windows2003效果不错,反而用于xp效果不佳:局域网连接速度慢,鼠标有延迟情况等,这应该有由于系统自身的bug引起的;因为对比公司局域网中windows2003的远程桌面,完全没有这种现象;
②二台XP之间共享文件很麻烦,而且传输速度相当慢;用于ra的File transfer效果就不一样了,抚琴煮酒有了这个后,基本放充了xp的网上邻居了。以前如果有超过10G的连续剧要共享的话,用飞秋和飞鸽在XP下传输速度居然都很慢,改用ra后速度有明显提高;
③每次用完远程桌面后,被控机必须输入管理员密码才能进,而ra可以选择性的是否锁定,这点设计我感觉反而更人性化;
④同事从公司远程上传大约SQL Server2008的数据库大约40G,在60K限制的情况下也能很稳定的成功上传,基本上一晚上来个无人值守上传就OK了,呵呵。
现在内网我就用远程桌面,外网windows2003服务器操纵时我喜欢用RA。
二、小心谨慎的使用X-manager
使用X-manager时需要注意区别三种环境,一般为虚拟机环境、内网环境、外网环境。喜欢用X-shell的小伙都应该知道,有时你同时连上二三十台Linux或FreeBSD服务器时,特别是连上Linux服务器时,许多SA估计都跟我一样,都喜欢用root操作,稍不留心就会铸成大祸,这里我有个心得,如果是操作的的是内网或线上环境服务器,操作完毕后建议马上退出登录,如果需要再操作时就再登录,这样更安全。
三、用sudo,避免使用root
如果操作的是FreeBSD服务器,建议用带sudo权限的用户操作(强烈建议不要用root),有时许多操作对于系统而言是非常危险的,尤其是rm -rf,而这个时候sudo会要求输入你具有root权限的用户密码,提醒你是否执行此危险操作;我从Linux转到FreeBSD下操作时也非常不习惯了,现在也喜欢用sudo了,建议你的Linux也可按FreeBSD操作。
四、巧用crontab
如果你的Linux机器处于IDC机房,前端没有硬件防火墙时建议开启iptables防护;但此时就有一个问题,你可能要在处于千里之外的公司调试iptables脚本,稍一出错后果就很严重。
我在配置一台服务器的iptables时,不小心设置了某一项错误参数,结果锁定了SSH会话,导致我们经理及另一技术员连不上服务器。郁闷之余,看到此法特推荐给大家,极其有用,建议大家学习参考:可以配置一计划任务crontab,每5分钟运行一次,即*/5 * * * * root /bin/sh /root/firestop.sh,firestop.sh内容为:service iptables stop;这样即使你的脚本存在错误设置(或丢失的)规则时,也不至于将你锁在计算机外而无法返回与计算机的连接,让你放心大胆的调试你的脚本。同学们可参考学习下,这毕竟是生产环境下逼出来的办法。
五、合理利用虚拟机来组构开发环境及实验环境
Linux和windows服务器环境下,我比较推荐Vmware vSphere和Vmare GSX,FreeBSD我推荐下jail。目前我将Vmware vSphpere和GSX均用于了生产环境,效果也比较稳定和安全,这里重点推荐下其特点。
最近在公司的DELL2850(开发服务器)部署成功了VMware vSphere,一直在测试其性能,目前除了它的兼容性以外(成功率10%),其它还算不错;最近一直在关注其中的新技术,在讲到HA的时候,资料要求中有几个需要注意的:
①HA是针对安装有ESX主机的硬件的,在ESX主机故障后,虚拟机在其它主机恢复时使用了VMotion技术,但VMotion则是针对虚拟机的(建议参考VMwareHA、DRS、VMotion相互关系)
②HA实现过程也就是虚拟机故障恢后在其它主机的过程中,虚拟机对外的服务会中断,但是时间相对较短罢了,这和VMotion上也有不同之处。
③所有的虚拟机硬盘文件等必须要放在共享存储上。
④需要使用到DNS或HOSTS服务,这个容易实现,以前部署lvs+heartbeat我就蛮喜欢用hosts的,推荐hosts服务。
⑤ESX主机在同一子网内,如果有多个网段,要确保ESX主机上有足够的网卡去连接。
⑥公司其它有虚拟要求的服务器,实在装不上VMware vSphere的,我安装完VMware GSX v3.2.1后作了系统相关负载测试,跟vSphere作了对比,没发现性能上有明显差异;而且前期在电信机房GSX v3.2.1用于生产环境也相当稳定。
⑦VMware vSphere至少需要二台服务器作infrastructure环境,其中一台用来作vmware VirtualCenter,毕竟vSphere的其中卖点之一就是它的高可控性。
⑧ESX Server系列对服务器的要求比较高,必须要有两个以上的网卡,其中一个作为控制用途(Control Console),就是管理员通过这个网卡使用浏览器和 VMware vSphere Client来进行管理,这个网卡设定的ip地址就是ESX Server的ip地址,另外一个网卡就作为 Virtual Network 设备使用。
六、Linux下用crontab定时执行PHP程序的正确方法
这种情况,涉及得比较多的是要定期执行一段邮件或短信任务。以前我用是的wget程序,感觉虽然实现了目的,但还是没有研究透彻。后来花了些时间测试发现在linux下,可以使用crontab+php的方法:
1、使用crontab -e编辑定时任务
内容为:
xx:xx:xx 执行一个test.php文件
2、php文件必须在文件头一行,加上解释器路径(就象perl做的那样)
#!/usr/local/bin/php
PHP的执行需要Apache的支持,shell脚本的执行需要Linux的支持,而Linux支持定时运行某个程序的功能。
※以上是第一种办法。另一种方法就是直接在/etc/crontab里直接带上php路径,如
*/5 * * * * root php test.php
这样就设定为每隔五分钟执行一次test.php。有兴趣的朋友可写一个hello程序测试,将其所有输出到一个文件即可测试。
七、点分十进制
另外值得一说的是,大家玩Linux服务时应该会发现,Linux下的服务众多。签于Linux中此类安全限制众多,比如samba,nfs,rsync,tcp_wrapper,xinetd等,而每个又要各自支持的写法,这样对于考试学习及工作记忆很不方便。其实它们均支持192.168.0.0/255.255.255.0这样的点分十进制写法,这里特指出来,希望对大家学习及工作有所帮助(感谢众多RHCE们的努力)。
(注:iptables的语法不支持这样的写法,只支持192.168.0.0/24此类写法。)
八、学习网络知识
另外,系统管理员虽然主要处理的是系统方面和应用方面的事情,但有时遇到了故障,第一时间应该处理的是网络方面的事情;我以前所在的公司,规模都比较大,Network Engineer和System Admin的职责范围都区别开了,虽然网络工程师可以不懂,但SA最好是掌握网络方面的知识,这样对自己的职业生涯还是有帮助的。