启用双向服务器端存储桶复制
此页面上的步骤为两个 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
命令删除现有的复制规则。