文档

启用多站点服务器端存储桶复制

此页面上的步骤配置了在多个 MinIO 部署之间进行自动服务器端存储桶复制。多站点 Active-Active 复制建立在 启用双向服务器端存储桶复制 的基础上,但需要额外的注意事项,以确保在所有站点之间具有可预测的复制行为。

Active-Active Replication synchronizes data between multiple remote deployments.

多站点 Active-Active 复制配置可以跨越多个机架、数据中心或地理位置。配置和维护多站点配置的复杂性通常会随着站点的数量和每个站点的大小而增加。寻求实施多站点复制的企业应考虑利用 MinIO SUBNET 支持,以获取解决此用例所需的专业知识、规划和工程资源。

另请参见

要求

您必须满足 存储桶复制要求 中描述的存储桶复制的所有基本要求。

此外,要创建多站点存储桶复制设置,您必须满足以下额外要求

访问所有集群

您必须具有网络访问权限,并且拥有具有正确权限的登录凭据,才能访问所有部署以设置多站点 Active-Active 存储桶复制。

您可以通过登录到每个部署的MinIO 控制台或安装mc 并使用命令行来访问部署。

如果使用命令行,请使用mc alias set 命令为每个 MinIO 部署创建别名。创建别名需要指定部署中用户的访问密钥。此用户**必须**具有在部署上创建和管理用户和策略的权限。

具体来说,请确保用户至少具有以下权限:

注意事项

单击展开以下任何内容

使用一致的复制设置

MinIO 支持自定义复制配置,以启用或禁用以下复制行为

  • 复制删除操作

  • 复制删除标记

  • 复制现有对象

  • 仅复制元数据更改

在为存储桶配置复制规则时,请确保所有参与多站点复制的 MinIO 部署都使用相同的复制行为,以确保对象的一致性和可预测的同步。

复制现有对象

MinIO 支持自动复制存储桶中的现有对象。

MinIO 要求使用mc replicate add --replicatemc replicate update --replicate 并包含existing-objects 复制功能标志来显式启用现有对象的复制。此过程包括启用现有对象复制所需的标志。

复制删除操作

MinIO 支持将删除操作复制到目标存储桶。具体来说,MinIO 可以复制版本控制的删除标记以及特定版本化对象的删除。

  • 对于对对象的删除操作,MinIO 复制还会在目标存储桶中创建删除标记。

  • 对于对对象版本进行的删除操作,MinIO 复制还会删除目标存储桶中的这些版本。

MinIO 要求使用mc replicate add --replicatemc replicate update --replicate 来显式启用删除操作的复制。此过程包括启用删除操作和删除标记复制所需的标志。

MinIO 不会复制由应用生命周期管理过期规则导致的删除操作。请为所有复制站点上的存储桶配置匹配的过期规则,以确保一致地应用对象过期。

步骤

此过程需要为参与多站点复制配置的每个 MinIO 部署重复步骤。根据部署的数量,此过程可能需要大量时间和实施的谨慎性。MinIO 建议在尝试实施所记录的步骤之前阅读整个过程。

使用 MinIO 控制台配置多站点存储桶复制

1) 创建复制规则

  1. 登录到部署的 MinIO 控制台

  2. 选择要复制的存储桶的管理按钮

    After a successful log in, the MinIO Console shows a list of buckets with options to manage or explore each bucket.
  3. 选择复制部分

    After selecting a bucket to manage, MinIO shows summary information about the bucket as well as a navigation list of pages for adjusting the bucket configuration.
  4. 选择添加复制规则 +

  5. 完成所需的信息

    字段

    描述

    优先级

    输入一个数字值,以指示处理存储桶复制规则的顺序。1 表示最高优先级。

    目标 URL

    要将数据复制到的部署的 URL。

    使用 TLS

    如果目标部署使用 TLS,请将切换按钮保留在打开位置。否则,将切换按钮移至关闭位置。

    访问密钥

    要在目标部署上使用的用户名。该用户必须具有对要复制到的存储桶的写入权限。

    密钥

    所提供的**访问密钥**的密码。

    目标存储桶

    要在目标存储桶中写入数据的存储桶。目标存储桶的名称可能与源存储桶相同,具体取决于目标存储桶的位置。

    区域

    目标部署的 AWS 资源区域位置。

    复制模式

    保留默认选择**异步**,允许 MinIO 在源部署上的写入操作完成后复制数据。选择**同步**以尝试在写入操作期间完成对象的复制。

    虽然同步复制可能导致源存储桶和目标存储桶之间更加可靠的同步,但也可能增加每次写入操作的时间。

    带宽

    指定复制过程在复制数据时可以使用带宽的最大数量。输入一个数字并选择一个数据单位。

    健康检查持续时间

    MinIO 在验证目标存储桶上复制数据的完整性时,应花费的最长时间(以秒为单位)。

    存储类别

    在目标部署上用于复制数据的存储类别。有效值为STANDARDREDUCED_REDUNDANCY

    对象过滤器

    通过前缀标签来限制要从存储桶中复制的对象。如果输入多个标签,则对象必须匹配所有标签值。

    元数据同步

    保留选中状态,以便同时复制对象的元数据文件。否则,将切换按钮移至关闭位置。

    删除标记

    保留选中状态,以便同时复制 MinIO 的指示,表明一个对象已被删除,并且也应该在操作存储桶中被标记为已删除。否则,将切换按钮移至关闭位置,以防止在目标存储桶中将对象标记为已删除。

    删除

    保留选中状态,以允许复制对象的版本删除。否则,将切换按钮移至关闭位置,以不复制对象版本的删除。

  6. 选择保存以完成添加复制规则

重复以上步骤,以从当前部署创建到每个其他目标部署的规则。

然后,在多站点设置中的其他每个部署上重复以上步骤,以便每个部署对所有其他部署都有一个单独的复制规则。

2) 验证复制配置

  1. 转到 MinIO 控制台的存储桶部分

    The default screen when logging into the MinIO Console. The screen shows a list of the buckets available in the Deployment with options to Manage or Browse the bucket contents.
  2. 选择您添加了复制的存储桶的浏览按钮

    The contents of a bucket display after selecting to Browse the MinIO bucket. Options including to Rewind, Refresh, or Upload contents.
  3. 选择上传按钮,将新对象添加到存储桶

  4. 选择上传文件

  5. 使用界面将新对象添加到存储桶

  6. 转到另一个部署的控制台,并选择复制中定义的目标存储桶

通过复制一个新的唯一文件并检查该文件是否复制到其他每个部署来重复每个部署上的此测试。

使用命令行mc 配置多站点存储桶复制

此过程使用占位符ALIAS 来引用正在配置复制的每个 MinIO 部署的别名。将这些值替换为每个 MinIO 部署的适当别名。

此过程假设每个别名都对应于具有必要的复制权限的用户。

在版本 RELEASE.2022-12-24T15-21-38Z 中更改: mc replicate add 自动创建必要的复制目标,无需使用已弃用的mc admin remote bucket add 命令。此过程仅记录自该版本以来的过程。

1) 创建新的存储桶复制规则

使用 mc replicate add 命令将新的复制规则添加到每个 MinIO 部署。

mc replicate add ALIAS/BUCKET \
   --remote-bucket 'https://USER:PASSWORD@HOSTNAME:PORT/BUCKET' \
   --replicate "delete,delete-marker,existing-objects"
  • ALIAS 替换为源 MinIO 部署的 别名。名称**必须**与在之前步骤中创建远程目标时指定的桶匹配。

  • BUCKET 替换为要从源部署中复制的桶的名称。

  • --remote-bucket 替换为指定 ALIAS/BUCKET 复制到的远程 MinIO 部署和桶。

    USER:PASSWORD 必须对应于远程部署上的具有 必要的复制权限 的用户。

    HOSTNAME:PORT 必须解析为远程部署上可访问的 MinIO 实例。该 BUCKET 必须存在,并且必须满足所有其他 复制要求

  • --replicate "delete,delete-marker,existing-objects" 标志启用以下复制功能

    有关更完整的文档,请参见 mc replicate add --replicate。要禁用对该组件的复制,请省略任何字段。

mc replicate add 指定任何其他受支持的可选参数。

对参与多站点复制配置的每个远程 MinIO 部署重复这些命令。例如,由 MinIO 部署 minio1minio2minio3 组成的多站点复制配置将要求在每个部署上针对每个远程重复此步骤。

具体来说,在这种情况下,在每个部署上执行此步骤两次

  • minio1 部署上,一次针对 minio2 的规则,再次针对 minio3 的独立规则。

  • minio2 部署上,一次针对 minio1 的规则,再次针对 minio3 的独立规则。

  • minio3 部署上,一次针对 minio1 的规则,再次针对 minio2 的独立规则。

2) 验证复制配置

使用 mc cp 将新对象复制到其中一个部署上复制的桶中。

mc cp ~/foo.txt ALIAS/BUCKET

使用 mc ls 验证该对象是否在目标桶中存在。

mc ls ALIAS/BUCKET

通过复制一个新的唯一文件并检查该文件是否复制到其他每个部署来重复每个部署上的此测试。

您也可以使用 mc stat 检查该文件以检查对象的当前 复制阶段