敬畏生产环境

简介: 生产环境即是运行用户正在使用的系统环境。有时,一些粗心的用户会把他们的生产环境交给我们,希望我们来进行变更操作,如部署Agent等。但我们实际上并不清楚这些生产环境有多重要,有时也不清楚我们的变更操作有多危险,其中一些操作很可能导致机器宕机,出现重大生产事故,让用户受到重大损失。

生产环境即是运行用户正在使用的系统环境。有时,一些粗心的用户会把他们的生产环境交给我们,希望我们来进行变更操作,如部署Agent等。但我们实际上并不清楚这些生产环境有多重要,有时也不清楚我们的变更操作有多危险,其中一些操作很可能导致机器宕机,出现重大生产事故,让用户受到重大损失。
所以我们对生产环境需要敬畏,本文罗列出一些禁忌操作,需要大家一定要避免的。

禁忌操作

替换系统文件

系统文件包括:

  1. 动态库文件:/lib、/lib64、/usr/lib下的文件,尤其是libc.so、libssl.so等文件
  2. 系统命令:/sbin、/bin、/usr/bin下的文件,包括不能替换其下的软链接
  3. 系统程序:/opt/jdk等
  4. 系统配置:/etc

系统文件的替换隐含了极大的风险,以下是运维中发生的一个实际故障:

在部署Agent时,由于执行时报libc.so相关的错误,操作人员就从其它机器复制了一个libc.so到目标服务器。

由于libc.so替换,导致依赖libc.so的所有程序,包含ksh、sshd等系统程序均无法启动。

由于这台AIX服务器已经几年没有重启过一次了,经过协调,大家在承担极大风险的情况下,使用光盘引导并恢复libc.so后才恢复了系统。

部署或升级系统包

包括:

  1. 部署新版本的libc、gcc、openssl等系统包
  2. 执行yum upgrade等升级命令

这些操作与替换系统文件的风险是一样的。以下也是一个我们操作导致的实际故障:

在部署Agent需要的ipmitool命令时,由于需要一些依赖的rpm包,操作人员就将相关的包复制到目标机器并部署。

由于包中包含了ssl等系统包,导致目标机器上的跳板程序(依赖旧版本ssl包)无法启动。

最后经过商务协调,用户自己重装了跳板机来恢复。

此案例中,尽管操作人员已经在公司内部作过同样的测试并部署成功,但依然在生产环境中导致了故障。因为生产环境确实有其历史,其中的细节是我们无法在短时间内了解并评估出风险的。

所以对生产环境要敬畏。

rm -rf 命令

这个操作的危险性在于,有时我们会疲劳驾驶,我们以为我们在做什么,但实际上只是机械性的快速敲打键盘,结果一不小心就输入了:

rm -rf / <回车>

这样的操作。
2017年初的Gitlab误删300GB的事故,就是疲劳驾驶rm引起。

重启系统

在生产环境中,看似无害的重启系统,实际上风险很大。最好清楚这些系统的实际情况,并与有关方面沟通。

提倡操作

不使用root用户

拒绝他人提供的root用户,可以杜绝自己背锅的可能性。不使用root用户,就避免了无意的禁忌操作。

使用绿色软件

运维程序不同于生产系统,它是辅助系统,所以我们部署的运维产品或工具,都应以绿色软件的思路开发与部署,避免对系统产生变更。

目录
相关文章
|
监控 测试技术 程序员
解决线程死循环问题的有效方法
作为开发者想必都清楚,多线程应用程序的开发为我们日常开发工作中提供了并发执行任务的能力,但线程死循环问题却是一个常见而令人头疼的挑战,因为线程死循环可能导致系统的不稳定性、资源浪费以及应用程序的异常运行,所以准确地定位和妥善处理线程死循环现象,并在编码阶段就避免潜在风险,成为开发人员必须面对的重要问题,线程死循环问题的解决不仅有助于提高系统的稳定性和可用性,还能优化资源利用和提升应用程序的性能,通过采取适当的预防和处理措施,开发人员能够避免线程陷入无尽的循环,并及时发现和解决潜在问题。那么本文就来分享一下关于如何处理线程死循环问题,以及如何在编码阶段规避潜在风险。
576 2
解决线程死循环问题的有效方法
|
数据采集 自然语言处理 监控
|
Kubernetes 调度 容器
【赵渝强老师】K8s的Job控制器多工作队列的并行方式
Kubernetes Job 是一次性任务控制器,用于控制 Pod 中的容器执行特定任务。本文介绍了 Job 控制器的工作原理、运行方式及多工作队列并行执行的示例。示例中创建了 5 个作业,以 3 个队列并行执行,整个过程需 2 分钟。文中还提供了详细的 YAML 文件配置和执行命令。
302 0
|
缓存 运维 负载均衡
java面试题之个人对正向代理和反向代理的理解
java面试题之个人对正向代理和反向代理的理解
1320 3
|
Prometheus 监控 Cloud Native
prometheus-operator入门使用上篇之ServiceMonitor
关于使用Prometheus Operator和Kube-Prometheus Stack进行监控的入门教程,涵盖了从部署到监控云原生和非云原生应用的详细步骤,以及监控失败的排查方法。
1103 3
prometheus-operator入门使用上篇之ServiceMonitor
|
SQL 存储 Ubuntu
打开general_log对性能的影响
打开general_log对性能的影响
1754 0
打开general_log对性能的影响
|
存储 机器学习/深度学习 SQL
什么是LakeHouse?
什么是LakeHouse?
448 0
|
存储 运维 容灾
打造具备极致容灾能力的对象存储
本文介绍本地冗余,做了哪些容灾设计、应对AZ故障的ZRS(同城冗余)产品的容灾设计以及应对Region故障的跨区域复制功能。
20648 2
打造具备极致容灾能力的对象存储
|
SQL 运维 Cloud Native
|
存储 SQL NoSQL
别再分库分表了,试试TiDB! 上
别再分库分表了,试试TiDB! 上

热门文章

最新文章