站点复制概述
站点复制将多个独立的MinIO部署配置为称为对等站点的副本集群。
站点复制假定使用内置的 MinIO 身份提供商(IDP)or一个外部 IDP。 所有已配置的部署必须使用相同的 IDP。 使用外部 IDP 的部署必须在各站点间使用相同的配置。
有关站点复制架构和部署概念的更多信息,请参阅部署架构:复制的MinIO部署.
MinIO 不推荐在生产环境之外(早期开发、评估或一般实验除外)的站点复制场景中使用 macOS、Windows 或非编排的容器化部署。 对于生产环境,请使用Linux or Kubernetes
概述
在所有站点中复制的内容
每个 MinIO 部署("对等站点")会向其他对等站点同步以下变更:
存储桶和对象的创建、修改和删除,包括
Bucket and Object Configurations
锁,包括保留和诉讼保留配置
IAM 用户、组、策略以及策略与用户或组映射(适用于 LDAP 用户或组)的创建与删除
创建可从本地验证会话令牌的安全令牌服务(STS)凭据
root凭据创建和删除访问密钥(除由
root用户)
站点复制功能支持bucket versioning在所有复制站点上的所有新存储桶和现有存储桶。
版本 mc 中的新功能:RELEASE.2023-12-02T02-03-28Z
您可以选择在站点间复制 ILM 过期规则。
对于新的站点复制配置,请使用mc admin replicate add随着--replicate-ilm-expiryflag.
对于现有的站点复制配置,您可以使用以下方式启用或禁用该行为:mc admin replicate update使用--enable-ilm-expiry-replication or --disable-ilm-expiry-replication酌情标记。
什么内容不会在站点间复制
站点复制配置中的 MinIO 部署不复制以下项目的创建或修改:
初始站点复制过程
启用站点复制后,身份和访问管理(IAM)设置按以下顺序同步:
政策
User accounts (for local users)
群组
访问密钥
Access Keys for
root不要同步。同步用户帐户的策略映射
政策
与具有有效 OIDC 账户关联的访问密钥MinIO Policy.
root访问密钥不同步。同步用户帐户的策略映射
政策
群组
与具有有效权限的LDAP账户关联的访问密钥MinIO Policy.
root访问密钥不同步。同步用户帐户的策略映射
在完成跨对等站点的初始数据同步后,MinIO会持续进行复制和同步可复现数据在所有站点中,只要它们出现在任何站点上。
站点自愈
站点复制配置中的任何 MinIO 部署都可以重新同步受损数据可复制的数据从拥有该数据最新版本的对等节点。
在版本 RELEASE.2023-07-18T17-49-40Z 中的变更:站点复制操作最多重试三次。
MinIO 会将三次尝试后仍无法复制的复制操作移出队列。扫描仪稍后拾取这些受影响的对象并重新排队进行复制。
Changed in version RELEASE.2022-08-11T04-37-28Z:执行任何操作时,失败或挂起的复制任务会自动重新排队GET or HEADAPI 方法。
例如,使用mc stat, mc cat或mc ls站点恢复在线后的命令提示需要重新排队进行修复。
在版本 RELEASE.2022-12-02T23-48-47Z 中的变更:如果某个站点因任何原因丢失数据,请从另一个健康站点重新同步数据mc admin replicate resync这将启动一个主动进程,在不等待被动进程的情况下重新同步数据MinIO 扫描器识别缺失数据。
您可以使用以下任一方式来调整MinIO如何平衡扫描器性能与读/写操作MINIO_SCANNER_SPEED环境变量或scanner speed配置设置。
同步复制 vs 异步复制
MinIO 支持为指定的远程目标配置异步(默认)或同步复制模式。
使用异步复制,MinIO 完成原始PUT操作之前将对象放入一个复制队列因此,发起请求的客户端可能会看到成功的PUT操作之前对象会被复制。
虽然这可能导致远程对象过时或缺失,但它减轻了因复制负载导致的写入操作缓慢的风险。
使用同步复制,MinIO 尝试复制对象之前完成发起PUT操作。
MinIO 返回成功PUT无论复制尝试是否成功,操作都会继续。
这降低了写入操作变慢的风险,但可能以远程位置存在过时或缺失对象为代价。
MinIO 强烈建议使用默认的异步站点复制。
同步站点复制的性能高度依赖于站点之间的延迟,较高的延迟可能导致较低的 PUT 性能和复制延迟。
要配置同步站点复制,请使用mc admin replicate update随着--mode选项。
代理到其他站点
MinIO 对等站点可以代理GET/HEAD向其他对等节点请求对象以检查其是否存在。
这使得正在修复或落后于其他对等节点的站点仍然能够返回已持久化到其他站点的对象。
例如:
一个客户端问题
GET("data/invoices/january.xls")toSite1Site1无法定位该对象Site1将请求代理到Site2Site2返回请求对象的最新版本Site1返回代理对象给客户端
对于GET/HEAD未完成的请求不包含唯一版本ID时,代理请求将返回最新这可能导致检索到对象的非当前版本,例如当响应端站点也遇到复制延迟时。
MinIO 不代理LIST, DELETE和PUT操作。
前提条件
首先备份集群设置
使用mc admin cluster bucket export和mc admin cluster iam export在配置站点复制之前,分别用于获取存储桶元数据和IAM配置快照的命令。
您可以使用这些快照在站点复制配置期间出现错误配置时恢复存储桶/IAM设置。
一个在设置时带有数据的站点
仅一站点在设置时可以有数据。 其他站点必须为空,不能有存储桶和对象。
配置站点复制后,第一个部署上的所有数据都会复制到其他站点。
所有站点必须使用相同的身份提供商
所有站点必须使用相同的身份提供者站点复制支持内置的MinIO IDP、OIDC或LDAP。
所有站点必须使用相同的 MinIO 服务器版本
所有站点必须具有匹配且一致的 MinIO Server 版本。 在版本不匹配的站点之间配置复制可能导致意外或不理想的复制行为。
您还应确保mc用于配置复制的版本与服务器版本高度匹配。
访问相同的加密服务
对于SSE-S3 or SSE-KMS通过密钥管理服务(KMS)进行加密时,所有站点都必须能够访问中央KMS部署。
您可以通过一个中央 KES 服务器或多个 KES 服务器(例如每个站点一个)通过受支持的中央连接来实现此目的密钥保管库服务器.
复制需要版本控制
站点复制需要 Bucket Versioning并自动为所有创建的存储桶启用版本控制。 在站点复制部署中,您无法禁用版本控制。
MinIO 无法复制存储桶中已从版本控制中排除的前缀内的对象。
每个站点安装的负载均衡器
指定站点的负载均衡器、反向代理或类似网络控制平面组件的URL或IP地址。 请求将自动路由到部署中的节点。
MinIO 不建议对等站点使用单节点主机名。 这会创建单点故障:如果该节点离线,复制将失败。
从存储桶复制切换到站点复制
存储桶复制和多站点复制是互斥的。 您不能在同一个部署中同时使用这两种复制方法。
如果您之前设置了存储桶复制,现在希望使用站点复制,在初始化站点复制时必须首先删除包含数据的部署上的所有存储桶复制规则。
使用mc replicate rm在命令行上删除存储桶复制规则。
设置站点复制时,只能有一个站点包含数据。 所有其他站点必须为空。
教程
配置站点复制
以下步骤为三个站点创建新的站点复制配置分布式部署其中一个站点包含可复现数据.
这三个站点使用别名,minio1, minio2和minio3,仅此而已minio1不包含任何数据。
-
从空站点开始or任何网站都不得超过一个可复现数据.
为每个站点配置别名
指定站点的负载均衡器、反向代理或类似网络控制平面组件的URL或IP地址。 请求将自动路由到部署中的节点。
MinIO 不建议对等站点使用单节点主机名。 这会创建单点故障:如果该节点离线,复制将失败。
例如,对于三个 MinIO 站点,您可以创建别名
minio1,minio2和minio3.使用
mc alias set用于定义管理站点连接负载均衡器的主机名或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:adminpassword@minio1.example.com export MC_HOST_minio2=https://adminuser:adminpassword@minio2.example.com export MC_HOST_minio3=https://adminuser:adminpassword@minio3.example.com
添加站点复制配置
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
有关查看站点复制的更多信息,请参阅站点复制状态教程.
扩展站点复制
您可以将更多站点添加到现有的站点复制配置中。
新网站必须满足以下要求:
站点已完全部署,可通过主机名或IP地址访问。
与配置中所有其他站点共享IDP配置
使用与其他已配置站点相同的根用户凭据
不包含存储桶或对象数据
按照所述要求部署新的MinIO对等站点
为新站点配置别名
指定站点的负载均衡器、反向代理或类似网络控制平面组件的URL或IP地址。 请求将自动路由到部署中的节点。
MinIO 不建议对等站点使用单节点主机名。 这会创建单点故障:如果该节点离线,复制将失败。
要检查现有的别名,请使用
mc alias list.使用
mc alias set定义负载均衡器的主机名或IP,该负载均衡器负责管理到新站点的连接。mc alias set minio4 https://minio4.example.com:9000 adminuser adminpassword
或定义环境变量
export MC_HOST_minio4=https://adminuser:adminpassword@minio4.example.com
添加站点复制配置
使用
mc admin replicate add命令用于扩展站点复制配置,添加新的对等站点。 请指定别名全部现有对等站点,然后是要添加的新站点的别名。例如,以下命令添加新的对等站点
minio4添加到包含现有站点的现有站点复制配置中minio1,minio2和minio3.mc admin replicate add minio1 minio2 minio3 minio4
Note
如果任何站点无法访问或永久丢失,您必须首先移除无法访问的站点
mc admin replicate rm在扩展新站点之前。查询站点复制配置以进行验证
mc admin replicate info minio1
修改站点的端点
如果对等站点更改了其主机名,您可以修改复制配置以反映新的主机名。
获取站点的部署ID
mc admin replicate infomc admin replicate info <ALIAS>
更新站点的端点
mc admin replicate updatemc admin replicate update ALIAS --deployment-id [DEPLOYMENT-ID] --endpoint [NEW-ENDPOINT]
将 [DEPLOYMENT-ID] 替换为要更新的站点的部署 ID。
将 [NEW-ENDPOINT] 替换为站点的新端点。
指定站点的负载均衡器、反向代理或类似网络控制平面组件的URL或IP地址。 请求将自动路由到部署中的节点。
MinIO 不建议对等站点使用单节点主机名。 这会创建单点故障:如果该节点离线,复制将失败。
从复制中移除站点
您可以随时从复制中移除站点。 您可以在稍后重新添加该站点,但必须首先完全清除该站点中的存储桶和对象数据。
mc admin replicate rm ALIAS PEER_TO_REMOVE --force
替换
ALIAS随着别名复制配置中任何对等站点的。替换
PEER_TO_REMOVE要移除的对等站点的别名。
站点复制配置中的所有健康对等点会自动更新以移除指定的对等点。
MinIO 需要--force从站点复制配置中移除对等节点的标志。
查看复制状态
MinIO 提供跨站点的用户、组、策略或存储桶的复制信息。
摘要信息包括数量已同步和失败每个类别的项目。
mc admin replicate status <ALIAS> --<flag> <value>
例如:
mc admin replicate status minio3 --bucket images显示复制状态
images桶上的minio3site.输出类似于以下内容:
● 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