在生产环境中运行有效的 Web 应用程序的情况下,将 Ubuntu 从 16.04 LTS 升级到最新 LTS 版本是否安全?我理解需要停止所有进程等。我的意思是,如果不讨论依赖关系,还有其他东西可以阻止 docker 工作吗?那么,这是一种好的做法吗?
答案1
您面临多种风险。仅举 2 例:您说的是 Web 应用程序,因此我假设存在 Web 服务器和数据库。如果存在您仍在使用的已弃用的设置怎么办?找到并解决该问题可能需要很长时间。我怀疑是否存在这种情况(因为我已经将 Google Cloud 实例从 16.04/18.04 升级到 20.04 5 个月了),但还会有更多这样的情况。
编辑:我有一个现实生活中的例子。MySQL 中的日期格式已更新。与日期“2000-00-00”的比较仍然有效,但“2000-01”不再允许。您必须在日期中使用 mm 和 dd,在旧版本中会对此发出警告,但现在是强制性的。未来版本中的 ! 也将从 MySQL 中删除(我们必须使用 NOT)。
所以,在生产服务器上做这样的事情永远是不安全的。即使有备份。简单的断电都可能是致命的。停机时间可能会持续几个小时。
实现此目的的方法可能是...
- 获取第二台服务器并进行设置。在该服务器上安装生产服务器的备份。
- 测试第二台服务器直到满意为止。
- 将第二台服务器设为生产服务器。
- 将旧的生产服务器设为第二服务器。
- 冲洗,重复进行下一次升级。
我确实知道并不总是可以拥有备份系统。
因此,另一种方法是将系统克隆到外部磁盘上,然后进行升级。如果升级出错,您可以将外部磁盘的内容克隆回系统。这可以确保您能在最短的时间内恢复当前的工作状态。
无论你选择哪种方法:不要只是升级。做好失败的准备。