启用多站点服务器端存储桶复制
此页面上的过程配置多个 MinIO 部署之间的自动服务器端存储桶复制。多站点 Active-Active 复制基于 启用双向服务器端存储桶复制 过程,并需要额外的注意事项以确保所有站点之间可预测的复制行为。
要配置任意 S3 兼容服务之间的复制,请使用
mc mirror
。要配置两个 MinIO 部署之间的一对一“主动-主动”复制,请参阅 启用双向服务器端存储桶复制。
要配置 MinIO 部署之间的一对一“主动-被动”复制,请参阅 启用单向服务器端存储桶复制。
多站点 Active-Active 复制配置可以跨越多个机架、数据中心或地理位置。配置和维护多站点配置的复杂性通常会随着站点的数量和每个站点的大小而增加。希望实施多站点复制的企业应考虑利用 MinIO SUBNET 支持,以获取解决此用例所需的专业知识、规划和工程资源。
另请参阅
使用
mc replicate update
命令修改现有复制规则。使用
mc replicate update
命令和--state "disable"
标志禁用现有复制规则。使用
mc replicate rm
命令删除现有复制规则。
要求
您必须满足 存储桶复制要求 中描述的所有基本存储桶复制要求。
此外,要创建多站点存储桶复制设置,您必须满足以下其他要求
访问所有集群
要设置多站点活跃-活跃存储桶复制,您必须具有网络访问权限以及对所有部署的登录凭据,并且这些凭据具有正确的权限。
您可以通过登录到每个部署的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 控制台配置多站点存储桶复制
1) 创建复制规则
登录到部署的 MinIO 控制台
选择要复制的存储桶的管理按钮
选择复制部分
选择添加复制规则 +
填写所需信息
字段
描述
优先级
输入一个数字值以指示处理存储桶复制规则的顺序。1表示最高重要性。
目标 URL
要将数据复制到的部署的 URL。
使用 TLS
如果目标部署使用 TLS,请将切换按钮保持在开位置。否则,将切换按钮移动到关位置。
访问密钥
要在目标部署上使用的用户名。用户必须具有写入要复制到的存储桶的权限。
密钥
提供的访问密钥的密码。
目标存储桶
要在目标位置写入数据的存储桶。目标存储桶可以与源存储桶具有相同的名称,具体取决于目标存储桶的位置。
区域
目标部署的 AWS 资源区域位置。
复制模式
保留默认选择**异步**,以允许 MinIO 在源端写入操作完成后复制数据。选择**同步**以尝试在写入操作期间完成对象的复制。
虽然同步复制可能会导致源存储桶和目标存储桶之间更可靠的同步,但它也可能会增加每次写入操作的时间。
带宽
指定复制过程在复制数据时可以使用多少带宽。输入一个数字并选择一个数据单位。
健康检查持续时间
MinIO 在验证目标存储桶上复制数据的健康状况时应花费的最长时间(以秒为单位)。
存储类别
在目标部署上用于复制数据的存储类别。有效值为
STANDARD
或REDUCED_REDUNDANCY
。对象过滤器
通过前缀或**标签**限制要从存储桶中复制的对象。如果输入多个标签,则对象必须匹配所有标签值。
元数据同步
保留选中状态以复制对象的元数据文件。否则,将切换按钮移动到关位置。
删除标记
保留选中状态以复制 MinIO 指示对象已删除并且也应在操作存储桶中标记为已删除的标记。否则,将切换按钮移动到关位置以防止在目标存储桶中将对象标记为已删除。
删除
保留选中状态以允许复制对象版本的删除。否则,将切换按钮移动到关位置以不复制对象版本的删除。
选择保存以完成添加复制规则
重复上述步骤以从此部署创建到每个其他目标部署的规则。
然后,在多站点设置中的每个其他部署上重复上述步骤,以便每个部署都为所有其他部署拥有一个单独的复制规则。
2) 验证复制配置
转到 MinIO 控制台的存储桶部分
选择您已添加复制的存储桶的浏览按钮
选择上传按钮以将新对象添加到存储桶
选择上传文件
使用界面将新对象添加到存储桶
转到其他部署的控制台并选择复制中定义的目标存储桶
通过复制一个新的唯一文件并在每个其他部署上检查文件是否已复制,在每个部署上重复此测试。
使用命令行 mc
配置多站点存储桶复制
此过程使用占位符ALIAS
来引用正在配置复制的每个 MinIO 部署的别名。请将这些值替换为每个 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 部署重复这些命令。例如,由 MinIO 部署 minio1
、minio2
和 minio3
组成的多站点复制配置需要在每个部署上为每个远程重复此步骤。
具体来说,在此场景中,在每个部署上执行此步骤两次
在
minio1
部署上,一次为minio2
的规则,再次为minio3
的单独规则。在
minio2
部署上,一次为minio1
的规则,再次为minio3
的单独规则。在
minio3
部署上,一次为minio1
的规则,再次为minio2
的单独规则。
2) 验证复制配置
使用 mc cp
将新对象复制到一个部署上的复制存储桶。
mc cp ~/foo.txt ALIAS/BUCKET
使用 mc ls
验证对象是否存在于目标存储桶中。
mc ls ALIAS/BUCKET
通过复制一个新的唯一文件并在每个其他部署上检查文件是否已复制,在每个部署上重复此测试。