1、线上操做规范
1.测试使用
当初学习Linux的使用,从基础到服务到集群,都是在虚拟机作的,虽然老师告诉咱们跟真机没有什么差异,但是对真实环境的渴望日渐上升,不过虚拟机的各类快照却让咱们养成了各类手贱的习惯,以至于拿到服务器操做权限时候,就火烧眉毛的想去试试。php
记得上班第一天,老大把root密码交给我,因为只能使用putty,我就想使用xshell,因而悄悄登陆服务器尝试改成xshell+密钥登陆,由于没有测试,也没有留一个ssh链接,全部重启sshd服务器以后,本身就被挡在服务器以外了,幸亏当时我备份了sshd_config文件,后来让机房人员cp过去就能够了,幸好这是一家小公司,否则直接就被干了……庆幸当年运气比较好。mysql
第二个例子是关于文件同步的,你们都知道rsync同步很快,但是他删除文件的速度大大超过了rm -rf,在rsync中有一个命令是,以某目录为准同步某文件(若是第一个目录是空的,那么结果可想而知),源目录(有数据的)就会被删除,当初我就是由于误操做,以及缺少测试,就目录写反了,关键是没有备份……生产环境数据被删了linux
没备份,你们本身想后果吧,其重要性不言而喻。nginx
当你发现执行完以后,你的心至少是凉了半截。web
你们可能会说,我按了这么屡次都没出过错,不用怕,我只想说,当出现一次你就明白了,不要觉得那些运维事故都是在别人身上,若是你不注意,下一个就是你。sql
一般咱们运维接到任务,都会进行简单查看。若是没法解决,就请求他人帮忙,但是当问题焦头烂额的时候,客服主管(懂点linux),网管,你上司一块儿调试一个服务器,当你各类百度,各类对照完了发现,你的服务器配置文件,跟上次你修改不同了,而后再改回来,而后再谷歌,兴冲冲发现问题,解决了,别人却告诉你,他也解决了,修改的是不一样的参数……这个,我就真不知道哪一个是问题真正的缘由了,固然这仍是好的,问题解决了,皆大欢喜,但是你遇到过你刚修改的文件,测试无效,再去修改发现文件又被修改的时候呢?真的很恼火,切忌多人操做。shell
4.先备份后操做
养成一个习惯,要修改数据时,先备份,好比.conf的配置文件;数据库
另外,修改配置文件时,建议注释原选项,而后再复制,修改;apache
再者说,若是第一个例子中,有数据库备份,那rsync的误操做不久没事了吧;安全
因此说丢数据库非一朝一夕,随便备份一个就不用那么惨。
2、涉及数据
1.慎用rm -rf
网上的例子不少,各类rm -rf /,各类删除主数据库,各类运维事故……
一点小失误就会形成很大的损失。若是真须要删除,必定要谨慎。
2.备份大于一切
原本上面都有各类关于备份,可是我想把它划分在数据类再次强调,备份很是之重要哇~
我记得个人老师说过一句话,涉及到数据何种的谨慎都不为过。
我就任的公司有作第三方支付网站和网贷平台的。第三方支付是每两个小时彻底备份一次,网贷平台是每20分钟备份一次。
我很少说了,你们本身斟酌吧
3.稳定大于一切
其实不止是数据,在整个服务器环境,都是稳定大于一切,不求最快,但求最稳定,求可用性。
因此未经测试,不要在服务器使用新的软件,好比nginx+php-fpm,生产环境中php各类挂啊~
重启下就行了,或者换apache就行了。
4.保密大于一切
如今各类路由器后门,因此说,涉及到数据,不保密是不行的。
3、涉及安全
禁止 root 登陆
使用普通用户+key认证+sudo规则+ip地址+用户限制
使用hostdeny相似的防爆力破解软件(超过几回尝试直接拉黑)
筛选/etc/passwd中login的用户
3.精细权限和控制粒度
能使用普通用户启动的服务坚定不使用root,把各类服务权限控制到最低,控制粒度要精细。
4.配置文件检测和日志监控
使用第三方软件,时刻检测系统关键文件以及各类服务配置文件的改动。好比,/etc/passwd,/etc/my.cnf,/etc/httpd/con/httpd.con等。
使用集中化的日志监控体系,监控/var/log/secure,/etc/log/message,ftp上传下载文件等报警错误日志。
另外针对端口扫描,也可使用一些第三方软件,发现被扫描就直接拉入host.deny。这些信息对于系统被ruqin后排错颇有帮助。有人说过,一个公司在安全投入的成本跟他被安全gongji损失的成本成正比,安全是一个很大的话题。
也是一个很基础的工做,把基础作好了,就能至关的提升系统安全性,其余的就是安全高手作的了。
4、平常监控
1.系统运行监控
好多人踏入运维都是从监控作起,大的公司通常都有专业24小时监控运维。系统运行监控通常包括硬件占用率,常见的有,内存,硬盘,cpu,网卡,os包括登陆监控,系统关键文件监控。
按期的监控能够预测出硬件损坏的几率,而且给调优带来很实用的功能。
2.服务运行监控
服务监控通常就是各类应用,web,db,lvs等,这通常都是监控一些指标,在系统出现性能瓶颈的时候就能很快发现并解决。
3.日志监控
这里的日志监控跟安全的日志监控相似,但这里通常都是硬件,os,应用程序的报错和警报信息。
监控在系统稳定运行的时候确实没啥用,可是一旦出现问题,你又没作监控,就会很被动了。
5、性能调优
1.深刻了解运行机制
其实按一年多的运维经验来讲,谈调优根本就是纸上谈兵,可是我只是想简单总结下,若是有更深刻的了解,我会更新。
在对软件进行优化以前,好比要深刻了解一个软件的运行机制,好比nginx和apache,你们都说nginx快,那就必须知道nginx为何快,利用什么原理,处理请求比apache,而且要能跟别人用浅显易懂的话说出来,必要的时候还要能看懂源代码,不然一切以参数为调优对象的文档都是瞎谈。
2.调优框架以及前后
熟悉了底层运行机制,就要有调优的框架和前后顺序,好比数据库出现瓶颈,好多人直接就去更改数据库的配置文件,个人建议是,先根据瓶颈去分析,查看日志,写出来调优方向,而后再入手,而且数据库服务器调优应该是最后一步,最早的应该是硬件和操做系统,如今的数据库服务器都是在各类测试以后才会发布的
适用于全部操做系统,不该该先从他入手。
3.每次只调一个参数
每次只调一个参数,这个相比你们都了解,调的多了,你就本身就迷糊了。
4.基准测试
判断调优是否有用,和测试一个新版本软件的稳定性和性能等方面,就必需要基准测试了,测试要涉及不少因素。
测试是否接近业务真实需求这要看测试人的经验了,相关资料你们能够参考《高性能mysql》第三版。
个人老师曾说过,没有放之四海皆准的参数,任何参数更改任何调优都必须符合业务场景。因此不要再谷歌什么什么调优了,对你的提高和业务环境的改善没有长久做用。
6、运维心态
1.控制心态
不少rm -rf /data都在下班的前几分钟,都在烦躁的高峰,那么你还不打算控制下你的心态么?
有人说了,烦躁也要上班,但是你能够在烦躁的时候尽可能避免处理关键数据环境。
越是有压力,越要冷静,否则会损失更多。
大多人都有rm -rf /data/mysql的经历,发现删除以后,那种心情你能够想象一下,但是若是没有备份,你急又有什么用,通常这种状况下,你就要冷静想下最坏打算了,对于mysql来讲,删除了物理文件,一部分表还会存在内存中,因此断开业务,可是不要关闭mysql数据库,这对恢复颇有帮助,并使用dd复制硬盘,而后你再进行恢复
固然了大多时候你就只能找数据恢复公司了。
试想一下,数据被删了,你各类操做,关闭数据库,而后修复,不但有可能覆盖文件,还找不到内存中的表了。
2.对数据负责
生产环境不是儿戏,数据库也不是儿戏,必定要对数据负责。不备份的后果是很是严重的。
3.追根究底
不少运维人员比较忙,遇到问题解决就不会再管了,记得去年一个客户的网站总是打不开,通过php代码报错,发现是session和whos_online损坏,前任运维是经过repair修复的,我就也这样修复了,可是过了几个小时,又出现了。反复三四次以后,我就去谷歌数据库表莫名损坏缘由:一是myisam的bug,二是mysqlbug,三是mysql在写入过程当中被kill,最后发现是内存不够用,致使OOM kill了mysqld进程,而且没有swap分区,后台监控内存是够用的,最后升级物理内存解决。
4.测试和生产环境在重要操做以前必定要看本身所在的机器,尽可能避免多开窗口。