每个程序员都应该知道哪些系统管理的事情?

每个程序员都应该知道哪些系统管理的事情?

作为一名程序员,我们往往认为系统管理员是理所当然的。有几次我遇到一个好的系统管理员,这让我非常感激你们所做的一切。当我们进入一个没有系统管理员的环境时,你们能给我们提供什么智慧之言?

答案1

我首先要说的是:

  1. 总是有某种备份系统。如果有历史记录就更好了。
  2. 考虑单点故障以及发生故障时如何处理。
  3. 根据所涉及的计算机数量,研究某种方法来制作和创建跨计算机的标准图像将使每个人的生活变得更轻松 - 不会出现“它在我上运行”的情况,因为他们有这样或那样通常不会安装的程序。
  4. 记录一切,仅仅因为你将要忘记如何设置某些东西。
  5. 随时了解安全更新。

答案2

<在此处插入大帖免责声明>

有些内容以前已经说过了,但值得重复一遍。

文档:

  • 记录一切。如果你没有,可以安装一个不为人知的 wiki,但一定要备份。从收集事实开始,总有一天,一幅大图景会形成。

  • 为每个逻辑块创建图表并保持更新。我无法计算出准确的网络图或集群图拯救了我多少次。

  • 保留每个系统的构建日志,即使只是复制和粘贴构建命令。

  • 在构建系统时,安装并配置应用程序,测试其是否正常工作并执行基准测试。现在,擦除磁盘。认真地说。从磁盘正面“dd”第一个兆字节,否则将导致机器无法启动。时间紧迫:证明您的文档可以从头开始重建它(或者,更好的是,证明您的同事可以仅凭您的文档就可以重建它)。这将构成您的灾难恢复计划的一半。

  • 现在您已经有了灾难恢复计划的前半部分,请记录其余部分;如何恢复应用程序的状态(从磁带恢复文件、从转储中重新加载数据库)、供应商/支持详细信息、网络要求、如何以及在何处获得替换硬件 - 您能想到的任何有助于恢复系统的内容。

自动化:

  • 尽可能地实现自动化。如果你必须做三次,那么确保第二次用于开发自动化,以便第三次完全自动化。如果你无法实现自动化,那么就记录下来。市面上有自动化套件 - 看看你是否可以让它们为你工作。

监控:

  • 应用程序检测是黄金。能够观察通过系统的事务使得调试和故障排除变得容易得多。

  • 创建端到端测试,不仅证明应用程序处于活动状态,而且确实可以完成预期任务。如果可以将其接入监控系统以发出警报,您将获得积分。这具有双重作用;除了证明应用程序正常运行外,它还使系统升级变得更容易(监控系统报告绿色,升级成功,回家的时间到了)。

  • 对所有事情进行基准测试、监控和收集指标,这样做是明智的。基准测试会告诉您什么时候可以预期某样东西会释放出魔法烟雾。监控会告诉您什么时候释放了魔法烟雾。指标和统计数据使通过管理获得新装备(带有新鲜的魔法烟雾)变得更加容易。

  • 如果您没有监控系统,请实施一个。如果您确实将上述端到端测试纳入其中,则可以获得加分。

安全:

  • “chmod 777”(又名授予所有访问/权限)永远不是解决方案。

  • 遵循“最少”原则;如果它没有安装、复制或以其他方式存在于磁盘上,它就不会受到损害。“厨房水槽”操作系统和软件安装可能会在构建阶段让生活变得更轻松,但最终你会为此付出代价。

  • 了解服务器上每个开放端口的用途。经常审核它们以确保没有出现新的端口。

  • 不要尝试清理受感染的服务器;它需要从头开始重建。使用新下载的媒体重建到备用服务器,仅从备份中恢复数据(因为二进制文件可能受到感染)或将受感染的主机克隆到某个隔离的地方进行分析,以便您可以在同一个套件上重建。这会带来一场法律噩梦,所以如果您需要寻求法律途径,最好选择保留。(注:我不是律师)。

硬件:

  • 永远不要假设任何东西都会像包装盒上说的那样发挥作用。证明它能满足您的需要,以防万一。您会发现自己说“它几乎有效”的频率比您预期的要高。

  • 不要吝惜远程硬件管理。串行控制台和无人值守管理应被视为必需品。当您别无选择时,远程控制电源板将为您带来加分。

(题外话:凌晨 3 点解决问题有两种方法,一种是保持温暖,穿着睡衣通过 VPN 在笔记本电脑上工作,另一种是穿上厚外套开车去数据中心/办公室。我知道我更喜欢哪一种。)

项目管理:

  • 从项目生命周期的第一天开始就让维护系统的人员参与进来。工具包和脑力劳动的交付周期可能会令人惊讶,而且毫无疑问他们会(应该?)制定标准或要求,这些标准或要求将成为项目的依赖项。

  • 文档是项目的一部分。项目结束、系统进入维护阶段后,您就没有时间将整个文档记录下来,因此请确保在开始时就将其作为工作量纳入计划中。

  • 从第一天起就在项目中实施计划报废,并在项目文档中指定的关闭日期前六个月开始更新周期。

当服务器适合用于生产时,它们具有确定的使用寿命。该使用寿命的结束时间通常定义为供应商每年收取的维护费用高于更新套件的成本,或大约三年(以较短者为准)。在此之后,它们非常适合开发/测试环境,但您不应依赖它们来运营业务。在 2 1/2 年后重新审视环境,可以让您有足够的时间完成订购新套件所需的管理和财务环节,并在将旧套件发送给大型供应商之前实现平稳迁移。

发展:

  • 确保您的开发和准备系统与生产类似。VM 或其他虚拟化技术(区域、LDOM、虚拟服务器)可以轻松实现在各方面都与现实世界相符但性能却不尽如人意的生产克隆。

备份

  • 您不备份的数据就是您不想要的数据。这是一条不变的法则。确保您的现实符合这一法则。

  • 备份比想象中要难得多;有些文件会处于打开或锁定状态,而另一些文件则需要处于静止状态才能恢复,所有这些问题都需要解决。有些备份软件包有代理或其他方法来处理打开/锁定的文件,而其他软件包则没有。将数据库转储到磁盘并备份这些数据库算作一种“静止”方式,但这不是唯一的方法。

  • 备份未经测试就毫无价值。每隔几个月,从档案库中取出一盘随机磁带,确保其确实有数据,并且数据一致。

最重要的是...

选择你的失败模式,否则墨菲会......而且墨菲不会按照你的时间表工作。

为故障而设计,记录每个系统的设计弱点、触发这些弱点的原因以及如何恢复。当出现问题时,这将起到至关重要的作用。

答案3

不要以为这很容易。我知道很多程序员认为,只要他们可以在开发机上设置 IIS 或 Apache,他们就可以运行 Web 农场。了解这项工作涉及的内容并做好研究和规划,不要只是认为系统管理员的工作是你在 10 分钟内就可以完成的简单工作,以部署你的应用程序。

答案4

安全不是事后才考虑的问题。虽然被黑客入侵的应用程序可能会让程序员看起来不称职,但对于系统管理员来说,这(至少)是一个浪费的周末,需要验证、清理和/或从备份中恢复。

就此而言,不要将备份视为版本控制。它们是用于灾难恢复的,并非真正用于恢复代码,因为您忘记了更改的内容。

不要盲目地将代码损坏归咎于 Windows 更新。我不在乎它之前是否能正常工作,告诉我为什么它现在不能正常工作 - 然后我们就能知道是谁的错。

相关内容