我是一家小公司的全栈工程师,负责与技术相关的一切工作,从基础设施到代码。
几个月前我刚来,很快就意识到有很多问题,既有代码问题,也有基础设施问题,因为自从第一个创建整个基础设施的技术人员离开(两年前)以来,公司没有进行任何更新或升级
由于我打算留在公司,我知道升级服务器是强制性的,但基础设施不是我的强项,所以我希望您能给我一些建议。
由于问题很广泛,下面我将介绍如何缩小范围,这就是我现在所拥有的
Ubuntu 16.04.5 上的 3 台服务器:2 台作为后端,1 台充当负载均衡器 这些服务器是 mongoDB 集群的一部分(如果重要的话) 当前所有服务器使用的 apache2 版本是 2.4.18(构建于 2018/06/07) 应用程序使用 Ansible 部署在服务器上,这是一件好事。
但是许多两年前设置的东西现在已经坏了,比如 Nagios、Jenkins 或 SonarQube,问题是没有关于如何/何时/为何设置这些东西的文档。
因此对于这个问题:
我正在研究清理无用的库,修复/安装所有必要的监控工具,通过升级等方式修补漏洞......但不会中断服务器上运行的应用程序。
你们中有人遇到过类似的情况吗?你有什么建议吗?你有任何有用的指南/工具*命令可供参考/使用吗?
附言:我知道这个问题相当广泛,因为我被这个问题弄得不知所措,我还不知道如何正确地把它分成简洁的问题,但如果我能得到一个指向我全球方向的答案,我可能会针对每个问题更精确地写出其他后续问题。
答案1
好消息是该操作系统仍然受支持,但不会持续太久(Ubuntu 16.04 将于 2021 年 4 月终止支持)。
我首先要确保所有系统都是最新的。
然后我会确保我有一个可用的备份,包括恢复程序的测试(理想情况下这是第一点,但两年后如果没有更新,很有可能您将无法轻松安装备份解决方案)。
接下来,我会检查每项服务(Nagios、Jenkins 等),检查其状态,决定是否要继续使用它,还是要切换到我更熟悉的东西。如果是前者,我会修复它,如果是后者(或者如果它处于非常糟糕的状态),我会用最新版本的 Ubuntu 重新安装系统,并从头开始重新安装我需要的东西。
之后,我会开始将系统更新到较新版本的操作系统,最好是更新到 20.04。
需要计划的一些事项:
- 运行系统更新将导致短时间中断(服务在软件包更新期间重新启动,需要重新启动)。如果可以,请将其安排在使用率较低的时间
- 对于形成集群的系统,请确保节点之间有足够的时间,以便集群可以恢复(由于我不熟悉 MongoDB,因此无法更具体)。
- 选择一个维护窗口并将其传达给您的用户,以便他们提前知道将会发生中断。
- 如果可以,请在生产系统上运行主要升级之前设置一个测试环境来测试它们。
答案2
如果可能的话,请对服务器进行快照,启动您最喜欢的虚拟化软件,然后首先尝试对其进行任何升级。
你说其中一些是通过 ansible 安装的。假设你可以得到一个虚拟机来测试,尝试 ansible 代码(首先--check
)