一个镜像管理系统,用于简化 MariaDB 二进制文件和软件包的分发

MariaDB 基金会依靠公共镜像向全球分发二进制文件和软件包。完整列表的概览可以在 https://mirmon.mariadb.org 查看。如果您愿意志愿成为镜像站点,请查看 https://mariadb.com/kb/en/mirror-sites-for-mariadb/

我们的下载页面已经自动为您推荐其中一个镜像来下载我们的二进制文件。仓库配置工具也是如此;请参阅 https://mariadb.org.cn/download

这篇博文的目的是向大家介绍一个自 2021 年 12 月以来我们一直在测试的新系统,我们相信它现在已经准备好供公众采用。

Mirrorbits

VLC 的开发者开发了一个可以充当“地理位置下载重定向器”的工具。我们决定试用它,因为他们似乎成功地依靠它来分发著名的视频播放器。

该系统由我们管理,并托管在我们位于德国的云提供商 Hetzner 上。它可以在 https://mirror.mariadb.org 访问。初看起来,它就像是另一个 nginx 自动索引的网站。

mirror.mariadb.org index

但如果您查看 https://mirror.mariadb.org/mirrorstats,那么您可以看到此服务背后的所有镜像及其状态。

它是如何工作的?

mirrorbits 工具将定期(通过 FTPRSYNC)扫描定义的镜像列表,并将其内容与其本地内容进行比较。如果内容可用(且具有相同的 sha256),该镜像就可以被选定来提供内容。

然后 mirrorbits 将使用 Maxmind geoip 数据库来决定在接收到的每个请求中选择哪个镜像。您可以通过在 URL 末尾添加 ?mirrorlist 来查看此“重定向”决策,例如 https://mirror.mariadb.org/repo/10.6/debian/sha256sums.txt?mirrorlist

最后,但也可能是最重要的一点,如果 mirrorbits 无法访问(每分钟 ping 一次),不可用的镜像将自动禁用

(deb|rpm).mariadb.org 用于仓库配置

为了方便使用,我们创建了新的子域名(在 mirror.mariadb.org 上使用 CNAME 和 URL 重写),您可以使用它们。

对于基于 Debian 的发行版,您可以在 sources.list 中使用 deb.mariadb.org。以下是 Debian Bullseye 和 MariaDB 10.6 的 /etc/apt/sources.list.d/mariadb.list 文件示例

deb https://deb.mariadb.org/10.6/debian bullseye main

对于基于 Red Hat 的发行版也是如此,可以使用 rpm.mariadb.org 域名,以下是 Fedora 34 和 MariaDB 10.7 的 /etc/yum.repos.d/mariadb.repo 示例

[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.7/fedora34-amd64
gpgkey=https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

一些缺点

互联网是一个尽力而为的网络,在 T 时间点工作正常的东西可能在 T+1s 时出现故障(并在 T+2s 时再次运行)。我们的 mirrorbits 系统可能能够 ping 通一个镜像,而您不能(反之亦然)。

该系统是一个明显的SPOF(单点故障),如果 mirrorbits 系统发生停机,那么可能会影响很多使用它的人。

Mirrorbits 需要镜像站点提供 FTPRSYNC 才能扫描它们,但并非所有镜像都提供这些服务,因此它只能使用数量较少的镜像。

对于您想要下载的每个文件,第一个请求都需要到达位于德国的服务,正如之前所说,如果您离这个国家很远,这可能会增加一些延迟。

基于这些原因,我们将此系统视为现有方法的替代方案,如果您更喜欢手动选择一个适合您的镜像,请继续这样做!

CI 环境

在 CI 环境中,您可能不知道您的 CI runner/workers 的地理位置,我们认为这项服务非常有意义,在这种情况下我们强烈推荐它。

结论

在全球范围内分发二进制文件和软件包并非易事。我们希望这项新服务能有所帮助。

一如既往,如果您遇到问题或有任何建议,请随时联系我们