站点复制概述
站点复制将多个独立的 MinIO 部署配置为一个称为对等站点的副本集群。
站点复制假设使用包含的 MinIO 身份提供者 (IDP) *或* 外部 IDP。所有配置的部署必须使用相同的 IDP。使用外部 IDP 的部署必须在所有站点中使用相同的配置。
有关站点复制架构和部署概念的更多信息,请参阅 部署架构:复制的 MinIO 部署.
概述
跨所有站点复制的内容
每个 MinIO 部署(“对等站点”)在其他对等站点之间同步以下更改
创建、修改和删除存储桶和对象,包括
存储桶和对象配置
锁定,包括保留和法律保留配置
创建和删除 IAM 用户、组、策略以及策略映射到用户或组(对于 LDAP 用户或组)
为从本地
root
凭据可验证的会话令牌创建安全令牌服务 (STS) 凭据创建和删除 访问密钥(除了由
root
用户拥有的密钥)
站点复制为所有复制站点上的所有新存储桶和现有存储桶启用 存储桶版本控制.
新版 mc: RELEASE.2023-12-02T02-03-28Z
您可以选择在对等站点之间复制 ILM 过期规则。对于新的站点复制配置,请使用 mc admin replicate add
以及 --replicate-ilm-expiry
标志。对于现有的站点复制配置,您可以使用 mc admin replicate update
以及 --enable-ilm-expiry-replication
或 --disable-ilm-expiry-replication
标志(视情况而定)来启用或禁用此行为。
跨站点不复制的内容
站点复制配置中的 MinIO 部署*不*复制以下项目的创建或修改
初始站点复制过程
启用站点复制后,身份和访问管理 (IAM) 设置将按以下顺序同步
策略
用户帐户(针对本地用户)
组
访问密钥
root
的访问密钥不会同步。同步用户帐户的策略映射
针对 安全令牌服务 (STS) 用户 的策略映射
策略
与具有有效 MinIO 策略 的 OIDC 帐户关联的访问密钥。
root
访问密钥不会同步。同步用户帐户的策略映射
针对 安全令牌服务 (STS) 用户 的策略映射
策略
组
与具有有效 MinIO 策略 的 LDAP 帐户关联的访问密钥。
root
访问密钥不会同步。同步用户帐户的策略映射
针对 安全令牌服务 (STS) 用户 的策略映射
在所有对等站点之间初始同步数据之后,MinIO 会持续复制和同步 可复制数据,并在任何站点上发生时在所有站点之间进行同步。
站点修复
站点复制配置中的任何 MinIO 部署都可以从具有该数据最新(“最新”)版本的对等方重新同步损坏的 可复制数据。
更改版本 RELEASE.2023-07-18T17-49-40Z: 站点复制操作最多重试三次 (3 次)。
MinIO 会将三次尝试后仍未复制的复制操作出队。 扫描器 会在稍后时间拾取这些受影响的对象,并将它们重新排队以进行复制。
更改版本 RELEASE.2022-08-11T04-37-28Z: 执行任何 GET
或 HEAD
API 方法时,失败或挂起的复制操作将自动重新排队。例如,使用 mc stat
、mc cat
或 mc ls
命令在站点恢复联机后,将提示修复重新排队。
更改版本 RELEASE.2022-12-02T23-48-47Z: 如果一个站点由于任何原因丢失数据,请使用 mc admin replicate resync
从另一个正常站点重新同步数据。这将启动一个主动进程,重新同步数据,而无需等待被动 MinIO 扫描器 识别丢失的数据。
您可以使用 MINIO_SCANNER_SPEED
环境变量或 scanner speed
配置设置调整 MinIO 如何在扫描器性能与读写操作之间取得平衡。
同步复制与异步复制
MinIO 支持为给定远程目标指定异步(默认)或同步复制。
使用异步复制,MinIO 会在将对象放入 复制队列 之前 完成原始的 PUT
操作。因此,原始客户端可能会在对象被复制之前 看到一个成功的 PUT
操作。虽然这可能会导致远程对象过时或丢失,但它减轻了由于复制负载导致的写入操作速度慢的风险。
使用同步复制,MinIO 会在完成原始 PUT
操作之前 尝试复制对象。无论复制尝试是否成功,MinIO 都会返回一个成功的 PUT
操作。这减少了缓慢写入操作的风险,但可能会导致远程位置的物体过时或丢失。
MinIO 强烈建议使用默认的异步站点复制。同步站点复制性能在很大程度上取决于站点之间的延迟,更高的延迟会导致更低的 PUT 性能和复制延迟。要配置同步站点复制,请使用 mc admin replicate update
以及 --mode
选项。
代理到其他站点
MinIO 对等站点可以代理 GET/HEAD
请求以将对象请求代理到其他对等方以检查其是否存在。这允许一个正在修复或落后于其他对等方的站点仍然返回持久到其他站点的对象。
例如
客户端向
Site1
发出GET("data/invoices/january.xls")
Site1
无法找到该对象Site1
将请求代理到Site2
Site2
返回请求对象的最新版本Site1
将代理的对象返回给客户端
对于不包含唯一版本 ID 的 GET/HEAD
请求,代理请求将返回对等站点上该对象的最新版本。这可能会导致检索到对象的非当前版本,例如,如果响应的对等站点也正在经历复制延迟。
MinIO 不会代理 LIST
、DELETE
和 PUT
操作。
先决条件
首先备份集群设置
使用 mc admin cluster bucket export
和 mc admin cluster iam export
命令分别在配置站点复制之前对桶元数据和 IAM 配置进行快照。您可以在站点复制配置期间发生错误配置时使用这些快照来恢复桶/IAM 设置。
一个站点在安装时具有数据
在安装时,只有一个站点可以具有数据。其他站点必须没有桶和对象。
配置站点复制后,第一个部署上的任何数据都会复制到其他站点。
所有站点必须使用相同的 IDP
所有站点必须使用相同的 身份提供者。站点复制支持包含的 MinIO IDP、OIDC 或 LDAP。
所有站点必须使用相同的 MinIO 服务器版本
所有站点必须具有匹配且一致的 MinIO 服务器版本。在具有不匹配的 MinIO 服务器版本的站点之间配置复制可能会导致意外或不希望的复制行为。
您还应确保用于配置复制的 mc
版本与服务器版本非常匹配。
访问相同的加密服务
对于通过密钥管理服务 (KMS) 进行的 SSE-S3 或 SSE-KMS 加密,所有站点都必须能够访问中央 KMS 部署。
您可以通过中央 KES 服务器或多个 KES 服务器(例如,每个站点一个)来实现此目的,这些服务器通过中央支持的 密钥保管库服务器 连接。
复制需要版本控制
站点复制需要 存储桶版本控制 并自动为所有创建的存储桶启用它。您不能在站点复制部署中禁用版本控制。
MinIO 无法复制存储桶中您从版本控制中排除的前缀中的对象。
每个站点上安装的负载均衡器
指定站点的负载均衡器、反向代理或类似网络控制平面组件的 URL 或 IP 地址。请求将自动路由到部署中的节点。
MinIO 建议不要对对等站点使用单个节点主机名。这会创建一个单点故障:如果该节点离线,复制将失败。
从存储桶复制切换到站点复制
存储桶复制 和多站点复制是互斥的。您不能在同一个部署上使用两种复制方法。
如果您以前设置了存储桶复制,并且现在希望使用站点复制,则必须首先删除在初始化站点复制时具有数据的部署上的所有存储桶复制规则。使用 mc replicate rm
在命令行或 MinIO 控制台中删除存储桶复制规则。
在设置站点复制时,只有一个站点可以有数据。所有其他站点必须为空。
教程
配置站点复制
部署 两个或多个独立的 MinIO 站点,为每个站点使用相同的身份提供者
只有一个站点可以有存储桶或对象。其他站点必须为空。
在浏览器中,访问具有数据(如果有)的站点的控制台
例如,
https://<addressforsite>:9000
用负载均衡器、反向代理或管理与 MinIO 部署连接的类似控制平面的主机名或 IP 地址替换
<addressforsite>
。选择**设置**,然后选择**站点复制**
选择添加站点 +
完成所需的 信息
此站点
- 站点名称:
与站点关联的名称或其他标识文本。
- 端点:
(必需) 管理连接到站点的负载均衡器的 hostname 或 IP。
- 访问密钥:
(必需) 用于登录站点的
root
用户名。
- 密钥:
(必需) 用于登录站点的
root
密码。
对等站点
- 站点名称:
与站点关联的名称或其他标识文本。
- 端点:
(必需) 管理连接到站点的负载均衡器的 hostname 或 IP。
- 访问密钥:
(必需) 对等站点用于登录站点的
root
用户名。
- 密钥:
(必需) 对等站点用于登录站点的
root
密码。
指定站点的负载均衡器、反向代理或类似网络控制平面组件的 URL 或 IP 地址。请求将自动路由到部署中的节点。
MinIO 建议不要对对等站点使用单个节点主机名。这会创建一个单点故障:如果该节点离线,复制将失败。
要添加超过两个的附加站点,请选择站点条目之一旁边的
+
按钮。要删除以前添加的站点,请选择站点旁边的-
按钮。站点复制在每个站点的
root
用户下添加一个svcacct
,以执行复制活动。选择**保存**
选择复制状态按钮以验证复制是否已在对等站点之间完成。
任何可复制数据都应该显示为已成功同步。
有关查看站点复制的更多信息,请参阅站点复制状态教程。
以下步骤为三个 分布式部署 创建一个新的站点复制配置。其中一个站点包含 可复制数据。
三个站点使用别名 minio1
、minio2
和 minio3
,并且只有 minio1
包含任何数据。
部署 三个或多个独立的 MinIO 站点,使用相同的 IDP
从空站点开始或最多只有一个站点包含任何 可复制数据。
为每个站点配置一个别名
指定站点的负载均衡器、反向代理或类似网络控制平面组件的 URL 或 IP 地址。请求将自动路由到部署中的节点。
MinIO 建议不要对对等站点使用单个节点主机名。这会创建一个单点故障:如果该节点离线,复制将失败。
例如,对于三个 MinIO 站点,您可以创建别名
minio1
、minio2
和minio3
。使用
mc alias set
定义管理连接到站点的负载均衡器的 hostname 或 IP。mc alias set minio1 https://minio1.example.com:9000 adminuser adminpassword mc alias set minio2 https://minio2.example.com:9000 adminuser adminpassword mc alias set minio3 https://minio3.example.com:9000 adminuser adminpassword
或定义环境变量
export MC_HOST_minio1=https://adminuser:[email protected] export MC_HOST_minio2=https://adminuser:[email protected] export MC_HOST_minio3=https://adminuser:[email protected]
添加站点复制配置
mc admin replicate add minio1 minio2 minio3
如果所有站点都为空,则别名的顺序无关紧要。如果其中一个站点包含任何 可复制数据,则必须先列出它。
最多只有一个站点可以包含任何可复制数据。
查询站点复制配置以进行验证
mc admin replicate info minio1
您可以使用站点复制配置中的任何对等站点的别名。
查询站点复制状态以确认任何初始数据是否已复制到所有对等站点。
mc admin replicate status minio1
您可以使用站点复制配置中的任何对等站点的别名。输出应该说明所有 可复制数据 都已同步。
输出可能类似于以下内容
Bucket replication status: ● 1/1 Buckets in sync Policy replication status: ● 5/5 Policies in sync User replication status: No Users present Group replication status: No Groups present
有关查看站点复制的更多信息,请参阅站点复制状态教程。
扩展站点复制
您可以将更多站点添加到现有的站点复制配置中。
新站点必须满足以下要求
站点已完全部署,并且可以通过 hostname 或 IP 访问
与配置中所有其他站点共享 IDP 配置
使用与其他已配置站点相同的根用户凭据
不包含任何存储桶或对象数据
部署一个新的空 MinIO 站点
在浏览器中,访问一个现有复制站点的控制台
例如,
https://<addressforsite>:9000
选择**设置**,然后选择**站点复制**
选择添加站点 +
进行以下条目
- 访问密钥:
(必需) 用于登录每个站点的用户名。应该在所有站点之间保持一致。
- 密钥:
(必需) 用于登录每个站点的用户名密码。应该在所有站点之间保持一致。
- 站点名称:
用于站点名称的别名。
- 端点:
(必需) 管理连接到站点的负载均衡器的 hostname 或 IP。
指定站点的负载均衡器、反向代理或类似网络控制平面组件的 URL 或 IP 地址。请求将自动路由到部署中的节点。
MinIO 建议不要对对等站点使用单个节点主机名。这会创建一个单点故障:如果该节点离线,复制将失败。
要添加超过两个的附加站点,请选择最后一个站点条目旁边的
+
按钮。选择保存
按照说明的要求部署新的 MinIO 对等站点
为新站点配置一个别名
指定站点的负载均衡器、反向代理或类似网络控制平面组件的 URL 或 IP 地址。请求将自动路由到部署中的节点。
MinIO 建议不要对对等站点使用单个节点主机名。这会创建一个单点故障:如果该节点离线,复制将失败。
要检查现有别名,请使用
mc alias list
。使用
mc alias set
定义管理连接到新站点(s)的负载均衡器的 hostname 或 IP。mc alias set minio4 https://minio4.example.com:9000 adminuser adminpassword
或定义环境变量
export MC_HOST_minio4=https://adminuser:[email protected]
添加站点复制配置
使用
mc admin replicate add
命令使用新对等站点扩展站点复制配置。指定所有现有对等站点的别名,然后指定要添加的新站点的别名。例如,以下命令将新对等站点
minio4
添加到包含现有站点minio1
、minio2
和minio3
的现有站点复制配置中。mc admin replicate add minio1 minio2 minio3 minio4
注意
如果任何站点都无法访问或永久丢失,您必须首先使用
mc admin replicate rm
删除无法访问的站点,然后才能使用新站点进行扩展。查询站点复制配置以进行验证
mc admin replicate info minio1
修改站点的端点
如果对等站点更改其 hostname,则可以修改复制配置以反映新的 hostname。
在浏览器中,访问一个复制站点的控制台
例如,
https://<addressforsite>:9000
选择**设置**,然后选择**站点复制**
选择要更新的站点旁边的铅笔**编辑**图标
进行以下条目
- 新端点:
(必需) 要使用的新的端点地址和端口。
指定站点的负载均衡器、反向代理或类似网络控制平面组件的 URL 或 IP 地址。请求将自动路由到部署中的节点。
MinIO 建议不要对对等站点使用单个节点主机名。这会创建一个单点故障:如果该节点离线,复制将失败。
选择**更新**
使用
mc admin replicate info
获取站点的部署 IDmc admin replicate info <ALIAS>
使用
mc admin replicate update
更新站点的端点mc admin replicate update ALIAS --deployment-id [DEPLOYMENT-ID] --endpoint [NEW-ENDPOINT]
将 [DEPLOYMENT-ID] 替换为要更新的站点的部署 ID。
将 [NEW-ENDPOINT] 替换为站点的新的端点。
指定站点的负载均衡器、反向代理或类似网络控制平面组件的 URL 或 IP 地址。请求将自动路由到部署中的节点。
MinIO 建议不要对对等站点使用单个节点主机名。这会创建一个单点故障:如果该节点离线,复制将失败。
从复制中删除站点
您可以随时从复制中删除站点。您可以稍后重新添加该站点,但必须首先完全擦除该站点上的存储桶和对象数据。
在浏览器中,访问一个复制站点的控制台
例如,
https://<addressforsite>:9000
选择**设置**,然后选择**站点复制**
选择要更新的站点旁边的垃圾桶删除图标
在提示中确认站点删除,方法是选择**删除**
mc admin replicate rm ALIAS PEER_TO_REMOVE --force
将
ALIAS
替换为复制配置中任何对等站点 的 别名。将
PEER_TO_REMOVE
替换为要删除的对等站点的别名。
站点复制配置中的所有正常对等站点都会自动更新以删除指定的对等站点。
MinIO 需要 --force
标志才能从站点复制配置中删除对等站点。
查看复制状态
MinIO 为用户、组、策略或存储桶提供跨站点复制的信息。
摘要信息包括每个类别的 **已同步** 和 **失败** 项目数量。
在浏览器中,访问一个复制站点的控制台
例如,
https://<addressforsite>:9000
选择**设置**,然后选择**站点复制**
选择 复制状态
(可选) 查看特定项目的复制状态
在 查看以下项目的复制状态: 下拉列表中选择要查看的项目类型
指定要查看的特定存储桶、组、策略或用户的名称
(可选) 通过选择 刷新 更新信息
mc admin replicate status <ALIAS> --<flag> <value>
例如
mc admin replicate status minio3 --bucket images
显示
minio3
站点上images
存储桶的复制状态。输出类似于以下内容
● Bucket config replication summary for: images Bucket | MINIO2 | MINIO3 | MINIO4 Tags | | | Policy | | | Quota | | | Retention | | | Encryption | | | Replication | ✔ | ✔ | ✔
mc admin replicate status minio3 --all
显示
minio3
所属所有复制站点的复制状态摘要。输出类似于以下内容
Bucket replication status: ● 1/1 Buckets in sync Policy replication status: ● 5/5 Policies in sync User replication status: ● 1/1 Users in sync Group replication status: ● 0/2 Groups in sync Group | MINIO2 | MINIO3 | MINIO4 ittechs | ✗ in-sync | | ✗ in-sync managers | ✗ in-sync | | ✗ in-sync