服务器部署的决策与实践(1) 服务器操作系统的选择

CentOS 8 生命周期的突然缩短,让我再次面对服务器操作系统的选择。

如果你使用一个公司的产品,但不向他付钱,那么你就只是用户,而非客户。网游行业的从业经验又告诉我,不付钱的用户是产品的一部分。

Red Hat 决定将 CentOS 8 的支持周期将从原来预计的 2029 年缩短到 2021 年年底,并劝大家都去用 CentOS Stream,或者买他们家的商业服务,就是一个很好的例证。原来的 CentOS 用户,现在要么选择成为 Red Hat 的编外测试人员,为他们的商业客户提供价值,要么选择成为“氪金玩家”。

商业行为毕竟不是慈善事业,我们没啥好说的,只是又到了做选择的时间。

本文是 服务器部署的决策与实践 系列的一部分。

首先,最容易的就是交钱,当然,在技术上也没啥好讨论。

你也可以选择 CentOS Stream ,但它是个滚动更新的发行版,官方也不推荐用于生产服务器。

滚动更新的一个极端是 Arch Linux,如果你和我一样用过 Arch,就比较容易理解滚动更新的发行版确实不适合做服务器。因为有些更新是会打破兼容性的,需要用户手动干预并且谨慎操作才能确保日常更新不会打破系统的平稳运行。好比你发现一个组件有安全漏洞,想打个安全补丁,运行了 yum update,结果就从 CentOS 7 升级到了 CentOS 8,原因只是你没留意官方的一个升级公告,不过就算留心也没用,总会有安全补丁是某次不兼容改动后才提供的,要么留着漏洞,要么打破兼容。在用 Arch 时,这样的事情大概半年就会发生一次,解决倒也都不难,发现出问题了,去官网找到升级公告和提示,照做就搞定。但这样的事情发生在生产环境就会干扰到业务的持续运行,运维可不希望没事找事。用 Crontab 升级系统补丁的日子也一去不复返了。

当然,CentOS Stream 毕竟是个面向服务器的发行版,不会像 Arch 那么激进,平时大概不会做出不兼容的改动。但是不管怎样,定位摆在那里—— RHEL 的演习版本,也就是说 RHEL 发布大版本之日,就是 CentOS Stream 经历阵痛之时,根据最近三个大版本的更新情况,这个间隔略超 4 年,也就是说即便官方非常保守,CentOS Stream 也只能是一个可以连续稳定运行 4 年左右的发行版。

这一点可以从 CentOS 的 FAQ 中找到依据:

7. What happens when CentOS Stream switches from RHEL 8 to RHEL 9 based content?

Around the time the RHEL 9 Public Beta is issued, an additional set of CentOS Stream repositories and ISOs will be available. The existing CentOS Stream repositories representing RHEL 8 bits will continue to be available, and changes to these bits will continue as before, until approximately one year after the general availability of RHEL 9. At that time, the older repositories will be discontinued, although sources will continue to be available.

As the cut-over approaches, Red Hat will evaluate the situation at that time to determine how long the overlap will be. CentOS Stream is envisioned for primary use in situations where pinning to a specific set of binaries for the long-term is not required. Therefore the goal of the overlap is to serve either specific development needs or to allow for time for testing and upgrades.

RHEL 9 公开测试版发布之后,CentOS Stream 就有 8 和 9 两个源可以用,期间用户可以选择升级 9 或继续使用 8 ,等到 9 正式发布大概一年后,8 的源就下线了。如此说来,比我上面的算法多了 1 年,大概在 5 年出头,但因为这次推迟了一年更新,距离下次更新就少了一年,总的来说,还是 4 年。

根据 Red Hat 的说法,对于有研发能力的用户,CentOS Stream 提供了一个参与建设的机会。但像我们这样的最终用户,失去了些许稳定性和长期的更新,却什么也没得到。

再有就是换其他发行版了,一个特殊的例子是 Rocky Linux,只有一个名字,还没发布任何实质内容的发行版,由 CentOS 的一个创始人发起,旨在继承 CentOS 最初的使命。类似的事情不是第一次发生,2009 年 Oracle 收购 Sun,引发人们对 MySQL 前途的担忧。此时 MySQL 的创始人发起了 MariaDB 项目。时至今日,MariaDB 发展不错,甚至取代了 MySQL 在 CentOS 中的位置。但它和 MySQL 已不再完全兼容,市场表现也有很大差距。回到当时,我想的问题是:MySQL 的创始人既然这么重视它,最初又为什么把它卖掉?当然,最初是卖给 Sun 而非 Oracle ,也许他没想到会有这一天。就像 CentOS 并入红帽的时候,也没想过会是今天的局面吧。Rocky 的 FAQ 特别强调了这会是一个社区驱动的项目,永远不会被出售或被商业利益驱使。而且在技术上,Rocky 要比 MariaDB 幸运,毕竟反正是 RHEL 的复制品,只要是 1:1 复制,叫什么又有什么关系呢。但总体上,我对此还是持悲观的态度,信任一旦丧失,重新建立谈何容易。受伤的用户们能相信 Rocky 不会重蹈 CentOS 覆辙吗?

最后是 CentOS 的老对手们,多少可以从这次事件中分得一些从流失的用户,但具体选择哪个发行版,和这次事件应该不会有太大的关系,就不展开了。

码力不足,原本想谈谈“软件版本的选择”,以 CentOS 8 事件做个引子,结果都绕在上面了。