有句话说得好:运维做到极致,不是涌现问题时能轻松办理,而是知道怎么提前预防问题的涌现,能将故障扼杀在抽芽里。
今日我特来总结总结一个高等运维干什么,希望能帮助即将跨入该行的人形成一个整体的思路。
运维工程师干些什么?

总结两句话
1、 保障业务长期稳定运行(如网站做事器、游戏做事器等等)。
2、 保障数据安全可靠(如用户名密码、游戏数据、博客文章、交易数据等等)。
由这两句话推演运维工程师要学些什么?
一、保障业务长期稳定运行
出一点点差错,用户就要投诉了。
1、业务跑在什么上面?
网站做事器一样平常是apache,nginx,tomcat等。但是真正跑通流程还须要Mysql数据库来存储用户密码及其它。很多程序都要php的解析,以是LNMP、LAMP(即nginx、apache、mysql、php)环境支配是必须节制的技能。
2、业务出了问题怎么及时知道?
这就须要监控软件来邮件或短信来关照你,常用的有zabbix,nagios等。报警发邮件,也得一个邮件程序呀,sendmail或postfix。
3、在家里收到报警,但做事器是内网IP,怎么也得办理问题吧?
在公司搭建openvpn或pptp或openswan,在家里通过VPN拨入内网,24小时办理问题…唉,半夜爬起来办理问题也没人为。
二、保障数据安全可靠
出一点点差错,领导要找你喝茶了。
1、有时须要手动改数据库内容?
以是要会基本的Mysql数据库增删查改命令。
2、万一数据库做事器硬件坏了怎么办?
须要有个备库以备时时之需,以是须要Mysql主从复制。
3、 数据库要还原怎么办?
以是须要在crond中定期全备Mysql数据,以便还原利用。如果要还原到指定时间点,还要学会Mysql增量备份与规复。
4、 如果是用户上传的图片或文件做事器坏了怎么办?
定时备份可能还不足,须要利用rsync加inotify来实时备份。以便任一时候主理事器坏掉,也能保障所有图片有备份可以用来规复。
5、小心黑客,要增加做事器安全性?
ssh轻易不能让外人访问,那么就设置只许可公司的IP或跳板机IP访问,这些都通过iptables来掌握。
三、大性能
小公司总有一天会牛逼起来的,实在牛不起来咱也可以跳到大公司。
1、越来越多的用户来访问我们的网站,一台web做事器抗不住了怎么办?
那就须要多台web做事器来包袱,但多台做事器之间怎么进行负载均衡呢,这就须要用到nginx反向代理或LVS+keepalived或haproxy+heartbeat了。
2、用户注册揭橥的文章与评论太多,一台数据库抗不住了怎么办?
数据库压力分为读和写,如果写抗不住,须要进行分表分库到多个做事器上。如果是读压力不足了,可以利用mysql-proxy读写分离,来分担读的压力。更大略方便的方法,把数据库里的内容放到内存上,这就用上memcache或redis了。
3、N多用户上传下载文件,磁盘抗不住了怎么办?
把多块磁盘做成raid,或者利用分布式存储文件系统如MFS,GlusterFS来提高磁盘的读写能力。
4、网站上好多图片,总有用户反应网站加载太慢,怎么办?
这时可以把网站上的图片通过squid或varnish缓存到网站前端,尽可能的增加访问速率,当然,最好是购买商业的CDN加速。
5、运营商是个大难题,他们之间的带宽彷佛很小,联通IP访问我电信网站怎么就这么慢呢?
这时可以利用bind自建一个DNS做事器,把网站的DNS记录指向自建DNS做事器上,配置好解析规则,往后联通IP解析到联通网站上,电信IP解析到电信网站上,体验就会好很多啦。
大数据运维架构
四、自动化
终极目标:跑去世机器,闲去世人。
1、 公司新买100台做事器,公司竟然就1个移动光驱,这装系统得到什么时候?
利用kickstart或cobbler来网络远程自动安装系统吧。
2、 每次装完机要优化很多内容,什么文件描述符、端口、软件安装啊,手动操作不累去世去?
赶紧学会shell,将解放非常多的事情量。
3、系统装完后上岸要输入密码,这么多台啊?
利用expect吧,自动读取提示来输入密码,并实行命令。
4、要批量把新代码发布到线上做事器,怎么办?
利用saltstack或puppet或ansible吧,绝对爽歪歪。
五、其他
1、搭整套测试环境须要5台做事器,但公司穷的只有一台空闲做事器?
学会xen或kvm或docker吧,虚拟出多台做事器,就能办理资源问题了。特殊是docker,强烈推举,往后某个研发职员让你支配一套新环境,分分钟帮他办理。
2、研发职员的代码掌握,权限掌握,总要运维职员管呀?
svn或git,这个是肯定要有的。
结尾:
现在我们在回过分来思考,运维工程师平时干些啥呢?
1、 随时办理报警故障。
2、 业务程序更新。
3、 编写一些脚本,监控或完成其他可自动完成功能。
4、 运维架构完善,支配一些用起来更方便更可靠或性能更好的开源工具以及制订运维流程规范。
5、 打杂,如调交流机,装系统,支配新环境等。