启用多站点服务器端桶复制
本页面的程序配置了多个MinIO部署之间的自动服务器端桶复制。多站点主动-主动复制基于 启用双向服务器端桶复制 过程,并需要进行额外的考虑,以确保在所有站点上实现可预测的复制行为。
- 要在任意S3兼容服务之间配置复制,请使用 - mc mirror命令。
- 要在两个MinIO部署之间配置单向的 “active-active” 复制,请参阅 启用双向服务器端桶复制。 
- 要在MinIO部署之间配置单向的 “active-passive” 复制,请参阅 启用单向服务器端桶复制。 
多站点主动-主动复制配置可以跨越多个机架、数据中心或地理位置。通常,随着站点数量和每个站点的大小增加,配置和维护多站点配置的复杂性也会增加。希望实施多站点复制的企业应考虑利用 MinIO SUBNET 支持,以访问所需的专业知识、规划和工程资源来解决该使用情况。
参见
- 使用 - mc replicate update命令修改现有的复制规则。
- 使用 - mc replicate update命令,加上- --state "disable"参数来禁用现有的复制规则。
- 使用 - mc replicate rm命令来删除现有的复制规则。
要求
您必须符合 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 支持将 delete operations 复制到目标桶上。 具体而言,MinIO可以复制版本控制中的 Delete Markers 和特定版本对象的删除:
- 对于对象的删除操作,MinIO复制还会在目标存储桶上创建删除标记。 
- 对于对象版本的删除操作,MinIO复制还会在目标存储桶上删除这些版本。 
MinIO需要明确启用删除操作的复制,使用 mc replicate add --replicate 或 mc replicate update --replicate 命令。
该过程包括启用删除操作和删除标记的复制所需的标志。
MinIO 不 会复制由于应用 生命周期管理过期规则 而导致的删除操作。 在所有复制站点上为存储桶配置匹配的到期规则,以确保对象到期规则的一致应用。
操作步骤
此过程需要为参与多站点复制配置的每个MinIO部署重复执行步骤。根据部署数量,此过程可能需要在实施时花费大量时间和精力。MinIO建议在尝试实施文档化步骤 之前 先阅读该过程。
- 使用命令行配置多站点负载均衡复制 
使用命令行工具  mc 配置多站点存储桶复制
此过程使用占位符 ALIAS 来引用为复制进行配置的每个MinIO部署的 alias。
用每个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部署,请重复这些命令。
例如,由MinIO部署 minio1、 minio1 和 minio1 组成的多站点复制配置将需要在每个部署上为每个远程重复此步骤。
具体而言,在这种情况下,每个部署需要执行此步骤两次:
- 在 - minio1部署上,一次为- minio2的规则和一次为- minio3的单独规则。
- 在 - minio2部署上,一次为- minio1的规则和一次为- minio3的单独规则。
- 在 - minio3部署上,一次为- minio1的规则和一次为- minio2的单独规则。
2) 验证复制配置
使用 mc cp 将新对象复制到部署中的复制桶。
mc cp ~/foo.txt ALIAS/BUCKET
使用 mc ls 来验证目标存储桶上是否存在该对象:
mc ls ALIAS/BUCKET
通过复制一个新的唯一文件并检查该文件是否复制到每个其他部署中,重复在每个部署上进行此测试。
