更快的多站点复制和重新同步
多站点主动-主动复制于 2021 年底首次推出,现已发展成为 MinIO 最具影响力的功能之一。MinIO 长期以来一直具备在存储桶之间进行复制的能力,以同步对象、删除操作和元数据更改,但多站点主动-主动复制超越了存储桶复制,可以同步所有存储桶、IAM、安全令牌、服务帐户和存储桶级配置。
随着企业收集和分析越来越多的数据,他们可能需要在数据中心、云和其他地理位置之间复制数据,这可能是由于安全法规或合规性要求,或者为了提高数据可访问性和降低延迟。为了能够有效运行,复制必须安全高效,并且不干扰其他集群操作。
为此,我们最近改进了重新同步功能,以及主动-主动复制的效率、报告和整体性能。
可以使用 MinIO 控制台或 MinIO 客户端 (mc replicate
) 配置复制。复制需要在源和目标站点/存储桶上启用版本控制。复制会将上次修改的系统元数据属性从源对象保留到目标对象。复制具有弹性和自动化功能 - 任何修复失败都会自动修复,以便复制持续进行。应用程序无需修改即可访问任一集群上的数据。有关更多信息,请参阅 启用服务器端多站点存储桶复制
在大多数情况下,MinIO 复制是设置一次即可,无需重新同步。MinIO 复制会自动同步对象和设置,在后台异步修复和复制对象。仅当 MinIO 集群不同步时(例如,由于硬件故障),才会使用重新同步。重新同步本质上是在两个集群上处理 HEAD
命令,然后检查元数据版本和时间,最后仅复制所需的内容。replicate resync
和/或 admin replicate resync
命令仅在灾难恢复类型的情况下需要,因为它们本质上是主动列出和比较对象的成本高昂的操作。
重新同步和复制在使用多站点复制进行灾难恢复策略中发挥着重要作用,其中一个集群可能处于活动状态,而另一个集群只是用于故障转移的热备用。在此架构中,您从一个活动集群开始,部署另一个集群,然后配置并启动站点复制。这在发生灾难时可以保持非常高的可用性,并配置负载均衡器以自动将流量路由到正常的 MinIO 部署。在极不可能发生整个站点故障的情况下,您将部署一个新的 MinIO 集群,然后从热备用/故障转移集群到新集群完全重新同步。
如果您已经在集群之间运行存储桶复制,如果您选择升级到站点复制,您将首先运行手动重新同步,然后 MinIO 将继续在集群之间同步。
使用 mc replicate resync
命令将远程目标完全重新同步到源 (文档)。重新同步会检查源集群中的所有对象与所有配置的复制规则。对于与复制规则匹配的每个对象,重新同步过程都会将该对象放入复制队列,而不管该对象的当前复制状态如何。MinIO 会跳过同步其远程副本与源副本完全匹配(包括元数据)的对象。
我们借此机会尽可能地提高了复制的效率和可用性。这是多云企业广泛使用的一项功能,因此我们预计每次改进都会产生重大影响。
复制现在更频繁地修复对象。以前,只有当扫描程序经过对象所在的命名空间前缀时,才会修复复制失败。现在,与复制活动无关,每次 MinIO 运行诸如 LIST
、GET
或 PUT
之类的操作时,都会运行修复操作,因此它不必在复制期间运行。我们还提高了复制失败队列的效率。现在,复制失败修复由复制系统主动管理,而无需依赖扫描程序活动。
最后,我们改进了复制状态和统计信息的报告。MinIO 现在将所有内存中的与复制相关的统计信息持久化到磁盘,并在集群重新引导时读取它,以创建更准确的复制积压情况。这使得能够更准确地报告复制统计信息。
复制推动多云
MinIO 站点复制允许您在部署之间同步数据,从而实现灾难恢复、地理负载平衡以及复杂的多云数据处理和分析。在数据生成或捕获的位置(边缘、云或数据中心)摄取数据,并将其复制到最有利于您的位置。在多云模型中,您可以无缝地利用跨云提供商的最佳应用程序,从而从您的数据中获得最大的价值。复制以构建用于高可用性架构的冗余。