启用双向服务器端桶复制
本页面上的流程为MinIO桶之间的双向 “active-active” 对象同步创建了一个新的桶复制规则。
- 要在任意S3兼容服务之间配置复制,请使用 - mc mirror命令。
- 要配置MinIO集群之间的单向 “活跃-被动” (Active-Passive)复制,请参阅 启用单向服务器端桶复制。 
- 要配置MinIO集群之间的多站点 “活跃-活跃” (Active-Active)复制,请参阅 启用多站点服务器端桶复制。 
本教程涵盖了在两个MinIO集群之间配置活跃-活跃(Active-Active)复制的步骤。如果您需要了解如何在三个或更多MinIO集群之间配置多站点复制的教程,请参阅 启用多站点服务器端桶复制。
要求
您必须符合 Bucket Replication Requirements 中描述的所有对象存储桶复制的基本要求。
此外,为了设置活跃-活跃桶复制,您必须满足以下额外要求:
访问两个集群
您必须拥有对两个部署的网络访问和登录凭证以及必要的权限,才能设置活跃-活跃桶复制。
您可以通过安装 mc 并使用命令行访问部署。
使用 mc alias set 命令为两个 MinIO 部署创建别名。
创建别名需要指定部署上用户的访问密钥。 这个用户 必须 具有在该部署上创建和管理用户和策略的权限。
具体而言,请确保用户 至少拥有以下权限 :
考虑因素
使用一致的复制设置
MinIO支持自定义复制配置,以启用或禁用以下复制行为:
- 复制 :ref:` delete operations <minio-object-delete>` 
- 删除标记的复制 
- 现有对象的复制 
- 仅复制元数据更改 
在为桶配置复制规则时,请确保参与活跃-活跃复制的两个MinIO部署使用 相同 的复制行为,以保证对象的一致性和可预测的同步。
现有对象的复制
MinIO支持自动复制存储在存储桶中的现有对象。
MinIO要求使用 mc replicate add --replicate 或 mc replicate update --replicate 明确启用现有对象的复制,并包括 existing-objects 复制功能标志。
此过程包括启用现有对象复制所需的标志。
删除操作的复制
MinIO支持将删除操作复制到目标存储桶。 具体而言,MinIO可以复制版本控制中的 Delete Markers 和特定版本对象的删除:
- 对于对象的删除操作,MinIO复制还会在目标存储桶上创建删除标记。 
- 对于对象版本的删除操作,MinIO复制还会在目标存储桶上删除这些版本。 
MinIO需要明确启用删除操作的复制,使用 mc replicate add --replicate 或 mc replicate update --replicate 命令。
该过程包括启用删除操作和删除标记的复制所需的标志。
MinIO 不 会复制由于应用 生命周期管理过期规则 而导致的删除操作。 为了确保对象过期的一致性应用,请在源桶和目标桶上配置匹配的过期规则。
请参阅 删除操作的复制 和 minio-object-delete 获取更完整的文档。
Multi-站点复制
MinIO支持为每个存储桶或存储桶前缀配置多个远程目标。 这允许您在MinIO部署之间配置多站点活跃-活跃复制。
此过程涵盖了 两 个MinIO站点之间的活跃-活跃复制。 您可以为复制网格中的每个 “对” MinIO部署重复此过程。有关专用教程,请参阅: 启用多站点服务器端桶复制。
操作步骤
使用命令行工具 mc 配置双向桶复制
此操作将在两个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替换为指定远程 MinIO 部署和存储桶的参数,以便- ALIAS/BUCKET复制到该远程部署和存储桶。- USER:PASSWORD必须与远程部署上的一个用户相对应,该用户具有 必要的复制权限。- HOSTNAME:PORT必须解析为一个在远程部署上可访问的 MinIO 实例。- BUCKET必须存在,并且必须满足所有的 复制要求。
- --replicate delete,delete-marker,existing-objects标志启用了以下复制功能:- 请参阅 - mc replicate add --replicate以获取更完整的文档。 省略任何字段以禁用该组件的复制。
指定任何其他支持的可选参数用于 mc replicate add。
在另一个MinIO部署上重复此步骤。
将 ALIAS 和 --remote-bucket 的值更改为与第一个部署相对应。
完成此步骤后,您应该有两个复制作业配置 - 每个部署上创建的一个,指向另一个部署上的存储桶。
使用 mc replicate ls 命令来验证创建的复制作业。
2) 验证复制配置
使用 mc cp 将新对象复制到部署中的复制桶。
mc cp ~/foo.txt ALIAS/BUCKET
使用 mc ls 来验证目标存储桶上是否存在该对象:
mc ls ALIAS/BUCKET
通过将另一个对象复制到第二个部署并验证该对象是否复制到第一个部署,来重复这个测试。
一旦两个对象都存在于两个部署中,您就成功地为MinIO桶建立了双向、活动-活动复制作业。
参见
- 使用 - mc replicate update命令来修改现有的 复制作业。
- 使用 - mc replicate update命令,加上- --state "disable"参数来禁用现有的复制规则。
- 使用 - mc replicate rm命令来删除现有的复制规则。
