启用多站点服务器端存储桶复制
此页面上的步骤配置了多个 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
配置多站点存储桶复制 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
通过复制新文件并检查该文件是否已复制到每个其他部署,在每个部署上重复此测试。