启用双向服务器端存储桶复制
此页面上的步骤为两个 MinIO 存储桶之间的对象双向“主动-主动”同步创建新的存储桶复制规则。
要配置任意 S3 兼容服务之间的复制,请使用
mc mirror
。要配置 MinIO 集群之间的一路“主动-被动”复制,请参阅 启用单向服务器端存储桶复制。
要配置 MinIO 集群之间多站点“主动-主动”复制,请参阅 启用多站点服务器端存储桶复制。
本教程介绍如何在两个 MinIO 集群之间配置主动-主动复制。有关在三个或更多 MinIO 集群之间进行多站点复制的教程,请参阅 启用多站点服务器端存储桶复制。
要求
您必须满足 存储桶复制要求 中描述的所有基本存储桶复制要求。
此外,要设置主动-主动存储桶复制,您必须满足以下其他要求
访问两个集群
您必须具有网络访问权限和登录凭据,并具有在两个部署中设置主动-主动存储桶复制所需的权限。
您可以通过登录到每个部署的 MinIO 控制台 或通过安装 mc
并使用命令行来访问这些部署。
如果使用命令行,请使用 mc alias set
命令为两个 MinIO 部署创建别名。别名创建需要指定部署上用户的访问密钥。此用户**必须**具有在部署上创建和管理用户和策略的权限。
具体来说,请确保用户至少具有
注意事项
使用一致的复制设置
MinIO 支持自定义复制配置以启用或禁用以下复制行为
复制删除操作
复制删除标记
复制现有对象
仅复制元数据更改
为存储桶配置复制规则时,请确保参与主动-主动复制的两个 MinIO 部署使用相同的复制行为,以确保对象同步的一致性和可预测性。
现有对象的复制
MinIO 支持自动复制存储桶中的现有对象。
MinIO 需要使用mc replicate add --replicate
或mc replicate update --replicate
显式启用现有对象的复制,并包含existing-objects
复制功能标志。此过程包含启用现有对象复制所需的标志。
删除操作的复制
MinIO 支持将删除操作复制到目标存储桶。具体来说,MinIO 可以复制版本控制删除标记以及特定版本化对象的删除。
对于对象的删除操作,MinIO 复制还会在目标存储桶上创建删除标记。
对于对象版本的删除操作,MinIO 复制还会删除目标存储桶上的这些版本。
MinIO 需要使用mc replicate add --replicate
或mc replicate update --replicate
显式启用删除操作的复制。此过程包含启用删除操作和删除标记复制所需的标志。
MinIO不会复制由应用生命周期管理过期规则导致的删除操作。在源存储桶和目标存储桶上配置匹配的过期规则,以确保一致地应用对象过期。
多站点复制
MinIO 支持为每个存储桶或存储桶前缀配置多个远程目标。这使得可以在 MinIO 部署之间配置多站点主动-主动复制。
此过程涵盖了两个MinIO 站点之间的主动-主动复制。您可以针对复制网格中的每个 MinIO 部署“对”重复此过程。有关专门的教程,请参阅启用多站点服务器端存储桶复制。
过程
使用 MinIO 控制台配置双向存储桶复制
1) 在每个部署上创建新的存储桶复制规则
登录到部署的 MinIO 控制台
选择要复制的存储桶的管理按钮
选择复制部分
选择添加复制规则 +
填写所需信息
字段
描述
优先级
输入一个数字值以指示处理存储桶复制规则的顺序。1表示最高重要性。
目标 URL
要将数据复制到的部署的 URL。
使用 TLS
如果目标部署使用 TLS,则保持切换开关处于开启位置。否则,将切换开关移动到关闭位置。
访问密钥
在目标部署上使用的用户名。用户必须对要复制到的存储桶具有写入权限。
密钥
提供的访问密钥的密码。
目标存储桶
要将数据写入的目标存储桶。根据目标存储桶的位置,目标存储桶的名称可能与源存储桶相同。
区域
目标部署的 AWS 资源区域位置。
复制模式
保留默认选择的异步,以允许 MinIO 在源端写入操作完成后复制数据。选择同步以尝试在写入操作期间完成对象的复制。
虽然同步复制可能导致源存储桶和目标存储桶之间更可靠的同步,但它也可能增加每次写入操作的时间。
带宽
指定复制过程在复制数据时可以使用的最大带宽量。输入一个数字并选择一个数据单位。
健康检查持续时间
MinIO 应花费在验证目标存储桶上复制数据的健康状况的最大时间(以秒为单位)。
存储类别
在目标部署上用于复制数据的存储类别。有效值为
STANDARD
或REDUCED_REDUNDANCY
。对象过滤器
通过前缀或标签限制要从存储桶中复制的对象。如果输入多个标签,则对象必须匹配所有标签值。
元数据同步
保留选中状态以同时复制对象的元数据文件。否则,将切换开关移动到关闭位置。
删除标记
保留选中状态以同时复制 MinIO 指示对象已被删除,并且也应在操作存储桶中标记为已删除。否则,将切换开关移动到关闭位置以防止在目标存储桶中将对象标记为已删除。
删除
保留选中状态以允许复制对象版本的删除。否则,将切换开关移动到关闭位置以不复制对象版本的删除。
选择保存以完成添加复制规则
重复上述步骤以创建另一个方向的规则。
转到上面使用的目标部署的控制台。
从第二个部署创建复制规则返回到第一个部署。第一个部署成为第二个部署上规则的目标部署。
2) 验证复制配置
使用命令行 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
以指定ALIAS/BUCKET
复制到的远程 MinIO 部署和存储桶。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
命令删除现有的复制规则。