MinIO 网关迁移

MinIO Gateway Migration

我们已经 弃用 MinIO Gateway。该产品最初是为了让客户能够使用 S3 API 与不支持 S3 API 的后端(如 NFS、Azure Blob 和 HDFS)进行交互而开发的。MinIO Gateway 主要充当客户端和后端之间 S3 API 的翻译层,以便每个后端都可以用其本机格式进行写入。

MinIO Gateway 从未被设计为永久解决方案,而是在尚未使用兼容 S3 API 的用户过渡到传统存储解决方案的过渡阶段起到了权宜之计的作用。S3 API 无处不在(部分归功于 MinIO Gateway),但如果我们继续开发 MinIO Gateway,我们只会延续那些既非高性能也非云原生的旧技术。此外,解决为每个后端维护 MinIO Gateway 所需的持续技术挑战,需要大量的时间和资源,因此完全弃用它更有意义。

如何迁移

在这篇博文中,我们将向您展示如何将现有的 MinIO Gateway 设置迁移到 MinIO Server 部署。为了避免旧设置和新设置之间的混淆,让我们对它们进行适当的命名。

  • old_gateway
  • new_node

首先,让我们在与 old_gateway 安装位置不同的位置部署一个 单驱动器new_node MinIO 实例。请按照我们之前博文中提供的说明操作,使用 SystemD 配置 MinIO

接下来,让我们安装 mc 管理员

$ curl https://dl.min.io/client/mc/release/linux-amd64/mc \
--create-dirs \
-o $HOME/minio-binaries/mc

$ chmod +x $HOME/minio-binaries/mc

$ export PATH=$PATH:$HOME/minio-binaries/

$ mc --help

old_gatewaynew_node 设置 mc 管理员的两个别名

$ mc alias set old_gateway <OLD_GATEWAY_ADDRESS> <OLD_GATEWAY_USER> <OLD_GATEWAY_PASS>

$ mc alias set new_node <NEW_NODE_ADDRESS> <NEW_NODE_USER> <NEW_NODE_PASS>

确认别名已为 new_node 正确设置

$ mc alias list old_gateway
$ mc alias list new_node

如果您使用的是 fs 模式,请将配置从 old_gateway 导出到 new_node

$ mc admin config export old_gateway > config.txt
$ mc admin config import new_node < config.txt

虽然这将允许您迁移使用 mc admin config set 设置的任何设置,但它不会迁移环境变量,因为这些变量可以通过多种方式设置,并且没有自动迁移它们的方法。相反,我们建议您检查以下两个位置

首先,在 old_gateway 上查找任何设置的环境变量,并在 new_node 上复制该环境变量。

$ env | grep MINIO_

其次,如果 old_gatewaysystemd 安装,请检查以下文件,并将它的设置迁移到 new_node 的同一位置。

$ cat /etc/default/minio

在导入 old_gateway 的配置、环境变量和默认值后,重新启动 new_node 上的 MinIO

$ systemctl restart minio

如果您使用的是 fs 模式,请将桶元数据设置从 old_gateway 导出到 new_node

$ mc admin cluster bucket export old_gateway

上面的命令将生成一个 cluster-metadata.zip 文件。从该文件导入元数据设置

$ mc admin cluster bucket import new_node cluster-metadata.zip

如果您使用的是 fs 模式,请将 IAM 设置从 old_gateway 导出到 new_node

$ mc admin cluster iam export old_gateway

上面的命令将创建一个名为 old_gateway-iam-info.zip 的文件。从该文件导入 IAM 设置

$ mc admin cluster iam import new_node old_gateway-iam-info.zip

最后但并非最不重要的一点是,让我们将实际数据从 old_gateway 迁移到 new_node。在继续下一步之前,停止对 old_gateway 的任何进一步写入,以避免同步问题。

new_node 上创建一个名为 new-bucket 的桶

$ mc mb new_node/new-bucket

使用 mc mirror 命令迁移数据,假设旧桶的名称为 old-bucket(如果不是,请替换)。

$ mc mirror --preserve --watch old_gateway/old-bucket new_node/new-bucket

根据要镜像的数据量,这可能需要一些时间;请等待它完成。

镜像完成后,您就可以使用新的 MinIO 部署。请务必验证您已成功从 old_gateway 复制环境变量、配置和其他设置。

在验证 new_node 的运行方式与 old_gateway 相同之后,您可以更新我们之前要求停止写入 old_gateway 的应用程序,现在可以开始写入 new_node。这还包括清理 old_gateway 设置和任何剩余的后端资源。

MinIO Gateway - 即将消失!

如您所见,从 MinIO Gateway 迁移到作为单节点或一组分布式节点运行的 MinIO Server 是很简单的。事实上,它非常快且简单,没有理由不从 Gateway 迁移,Gateway 已经在 MinIO 代码库中从最新版本中删除。您可以查看 文档 以获取有关迁移的更多信息。


如果您对 MinIO Gateway 迁移有任何疑问,请务必在 Slack 上与我们联系!