启用双向服务器端存储桶复制
此页面上的步骤创建了一个新的存储桶复制规则,用于在 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
命令删除现有的复制规则。