MinIO 支持同步和近同步复制,具体取决于架构选择
以及数据的变化率。在每种情况下,都必须使复制尽可能接近严格一致性(考虑到带宽考虑因素和变化率)。
在最基本的层面上,任何设计都需要考虑基础设施、带宽、延迟、
弹性和规模。让我们按顺序考察它们
MinIO 建议在复制端点两侧使用相同的硬件。虽然类似的硬件将执行,但引入异构 HW 配置会引入复杂性并减慢问题识别速度。
带宽是始终保持两个站点同步的重要因素。站点之间的最佳带宽要求取决于传入数据的速率。具体而言,如果带宽不足以处理峰值,则更改将排队到远程站点并最终同步。
在带宽之后,延迟是设计双活模型时最重要的考虑因素。延迟表示两个 MinIO 集群之间的往返时间 (RTT)。目标是在带宽施加的预算约束内将延迟降低到尽可能小的数字。MinIO 建议以太网链路和网络的 RTT 阈值不超过 20 毫秒,数据包丢失率不超过 0.01%。
目前,MinIO 仅建议跨两个数据中心进行复制。跨多个数据中心进行复制是可能的,但是,所涉及的复杂性和所需的权衡使得这相当困难。
MinIO 支持在每个数据中心进行非常大的部署,无论是源还是目标,
上面概述的考虑因素将决定规模。
如果目标宕机,源将缓存更改,并在复制目标恢复后开始同步。根据持续时间、更改次数、带宽和延迟的不同,可能需要一些时间才能完全同步。
支持不变性。关键概念可以在 这篇文章 中找到。在双活复制模式下,仅当对象被版本化时,才能保证不变性。源上不能禁用版本控制。如果目标上的版本控制被暂停,MinIO 将开始复制失败。
在这些情况下,复制可能会失败。例如,如果您尝试在源桶上禁用版本控制,将返回错误。您必须删除复制配置才能在源桶上禁用版本控制。此外,如果您在目标桶上禁用版本控制,复制将失败。
对象锁定必须在源和目标上都启用。有一个特殊情况,在设置桶复制后,可以删除目标桶并使用未启用对象锁定的方式重新创建它,复制可能会失败。如果两端都没有配置对象锁定设置,可能会出现不一致。在这种情况下,MinIO 将静默失败。