操作安全

  • 稳定性是运维的生命线!
  • 稳定压倒一切!
  • 线上问题无小事!
  • 操作虽然小,影响却很大!
  • 线上操作需分级,double-check 要牢记!
  • 上线操作需授权!
  • 线上服务禁止裸奔!
  • 止损优先!
  • 切忌想当然!
  • 行如风坐如钟,维稳意识不能松!

上线操作

常规升级、上线裸奔、回滚、备份、数据拷贝删除、判断程序生效

  • 时间窗口:常规升级禁止流量高峰进行,应该在服务流量低峰期进行上线或操作,减少上线或操作对用户的影响,在异常时候减少损失.
  • 禁止程序在线上"裸奔":应该在程序上线前增加相应的"监控","统计"等,防止服务异常时,op无法知晓,不能及时处。
  • 禁止程序上线时没有回滚方案:所有上线必须有回滚方案,防止因回滚准备不足,导致回滚时间变长或出错.
  • 禁止不进行备份:上线前,至少备份其变更部分,避免回滚时无法快速进行有效回滚。
  • 进行数据拷贝或删除之前,要查看系统性能、负载,分析和判断后进行,避免大数据操作对系统影响
  • 程序上线后,应检查服务启动时间和程序时间戳,以判断新服务是否生效

定时任务

整点运行、日志输出到屏幕、裸奔、crontab中写shell

  • 不能在整点时间运行任务,如 00:00,应该跳过整点运行,如:00:01,避免因系统时钟提前运行或不运行
  • 不允许程序屏幕打印日志.应该将输出重定向到其他文件,或以 &>/dev/null 结尾,或配置mailto.避免系统将标准输出,打到/var/spool/clientmqueue/下,引起根分区空间不足,导致硬盘报警.
  • 不允许定时任务“裸奔”.应该对定时任务程序进行监控.避免因程序异常退出,不能及时处理,导致任务不按时执行.
  • 不准在crontab中直接写shell命令(cd命令除外).如果有需求,必须用脚本来实现.避免由于crontab 解析问题引起运行异常.

日志方面

分割、vi查看、重定向文件覆盖

  • 日志文件不能不切割.日志文件必须切割处理。常用的切割方法包括cronlog/定期mv等.防止服务程序日志过大引起服务故障,程序日志大小有限制,磁盘空间不足.
  • 禁止用vi(vim)查看日志.应该用tail more less命令查看日志.防止改变文件和用vi打开比较大的日志文件,系统资源消耗过多.
  • 对于IO敏感的服务,禁止使用重定向的方式进行文件覆盖.mv后,低优先级删除的方式进行或者停服务删.防止IO抢占影响服务

文件修改

禁止直接修改激活状态程序相关数据、线上改代码

  • 对于正在运行的程序,其配置,数据,程序文件禁止直接修改.应该修改其副本,diff确认正确后,再进行替换.防止程序重启或重载时加载正在修改的文件.
  • 禁止在线上直接修改程序代码.应该走程序的上线流程来进行上线操作.

文件权限

  • 文件权限不能设为777,755.可执行文件应该设为744.非可执行文件应该设为644.系统文件权限为安装时的默认权限.
  • 目录权限不能设为777 .日志、配置及非关键数据的目录权限为755。含有密码及敏感信息的文件/目录,不允许同组帐号和其他用户帐号有读、写和执行权限.

数据传输

  • 禁止不限速的数据传输.应该在有效通报后,进行数据传输,建议低于5MB/s。减少数据传输给系统的资源消耗。
  • 大规模数据传输启动前邮件通报组内及相关的sa,避免对其他服务造成影响.预算内的大规模数据传输通报组内知晓就可以,但临时或突然上线的大规模数据传输一定要通报。

Root 用户

  • 禁止将root,工作账户密码设置为弱口令或者安装时候的初始密码.如:123456等。最好用ranpwd工具生成随机密码,该工具生成的密码符合密码管理的要求。
  • 重启服务器后应该先进行扫描硬盘后,再启动服务.

命令使用

  • 停止服务,谨慎使用killall "程序名"方式.使用相应程序的控制接口进行启停。如果程序暂时没有控制接口,需要严格防止误杀.
  • 慎用rm -rf * 进行文件删除.
    • 确认目录包含文件,确认操作的目标路径
    • 批量的删除应该先进行一台,确认无误后再进行,每台都需要确认
    • 严格避免cd错误导致的误删除
  • 慎用killall -g命令.同源程序会被错误杀掉,如a和b都由同一个supervise调用,就会出问题.
  • 禁止CD后不检查当前路径.CD命令后,必须判断是否已经在预期的路径下,再进行相关操作
  • 当服务突然停止,禁止盲目启服务,确认一下之前服务杀掉或停止的原因,再进行服务启动。

double check

  • 操作的时间是否合适?
  • 操作的命令是否安全?
  • 操作的顺序是否正确?
  • 操作的并发度是否合理?
  • 回滚方案是否完备?
  • 操作的效果是否正常?

results matching ""

    No results matching ""