文件

部署架構

本頁概述了從生產角度來看的 MinIO 部署架構。 有關特定硬體或軟體組態的資訊,請參閱

分散式 MinIO 部署

生產 MinIO 部署至少包含 4 個具有同質儲存和運算資源的 MinIO 主機。

MinIO 將這些資源彙總為,並將自身呈現為單一物件儲存服務。

4 Node MinIO deployment with homogeneous storage and compute resources

此池中的每個 MinIO 主機都具有匹配的運算、儲存和網路組態

當使用本機連接的儲存(例如連接到主機上的 PCI-E 控制器板的 NVMe 或 SSD 驅動器)時,MinIO 可提供最佳效能。

儲存控制器應以「僅是一堆驅動器」(JBOD) 組態呈現 XFS 格式化的驅動器,不包含 RAID、池化或其他硬體/軟體復原層。 MinIO 不建議在驅動器或控制器層進行快取。 任何類型的快取都可能導致快取填滿和清除時出現 I/O 尖峰,導致無法預測的效能。

MinIO Server diagram of Direct-Attached Storage via SAS to a PCI-E Storage Controller

每個 SSD 都透過 SAS 連接至在 HBA 模式下運作的 PCI-E 連接儲存控制器

MinIO 會自動將池中的驅動器分組為Erasure Set

Erasure Set 是 MinIO 可用性和復原能力的基礎元件。 MinIO 在池中的節點上對稱地條紋化 Erasure Set,以保持 Erasure Set 驅動器的均勻分佈。 然後,MinIO 根據部署同位元將物件分割為資料和同位元碎片,並將其分佈在 Erasure Set 中。

如需更完整地討論 MinIO 冗餘和修復,請參閱Erasure Coding物件修復

Diagram of object being sharded into eight data and eight parity blocks, distributed across sixteen drives

在最大同位元 EC:8 的情況下,MinIO 會將物件分割為 8 個資料區塊和 8 個同位元區塊,並將其分佈在 Erasure Set 中的驅動器上。 此池中的所有 Erasure Set 都具有相同的條紋大小和碎片分佈。

MinIO 使用基於物件名稱和路徑的確定性雜湊演算法來選取給定物件的 Erasure Set。

對於每個唯一的物件命名空間 BUCKET/PREFIX/[PREFIX/...]/OBJECT.EXTENSION,MinIO 始終會為讀取/寫入操作選取相同的 Erasure Set。 MinIO 會處理池和 Erasure Set 中的所有路由,使選取/讀取/寫入過程對應用程式完全透明。

Diagram of object retrieval from only data shards

MinIO 會從資料或同位元碎片透明地重建物件,然後將物件傳回給請求的用戶端。

每個 MinIO 伺服器都具有分散式拓撲的完整視圖,因此應用程式可以連接並針對部署中的任何節點執行操作。

MinIO 回應節點會自動處理將內部請求路由到部署中的其他節點以及將最終回應傳回給用戶端。

應用程式通常不應管理這些連接,因為對部署拓撲的任何變更都需要更新應用程式。 生產環境應改為部署負載平衡器或類似的網路控制平面元件,以管理與 MinIO 部署的連接。 例如,您可以部署 NGINX 負載平衡器,以針對部署中的可用節點執行「最少連接」或「循環配置」負載平衡。

Diagram of an eight node MinIO deployment behind a load balancer

負載平衡器將請求路由到部署中的任何節點。 接收節點隨後處理任何節點間請求。

您可以透過池擴展來擴展 MinIO 部署的可用儲存。

每個池都包含一個獨立的節點群組,這些節點具有自己的 Erasure Set。 MinIO 必須查詢每個池,以確定它將讀取和寫入操作定向到的正確 Erasure Set,因此每個額外的池都會增加每次呼叫的節點間流量。 然後,包含正確 Erasure Set 的池會回應操作,對應用程式保持完全透明。

如果您透過擴展節點池來修改 MinIO 拓撲,您可以修改負載平衡器以包含新節點池的節點,從而更新您的應用程式。應用程式可以繼續使用負載平衡器位址進行 MinIO 部署,而無需任何更新或修改。這可確保請求均勻分佈在所有節點池中,同時應用程式繼續使用單一負載平衡器 URL 進行 MinIO 操作。

Diagram of a multi-pool minio deployment behind a load balancer

PUT 請求需要檢查每個節點池以尋找正確的 Erasure Set。一旦識別,MinIO 會分割物件,並將資料和同位檢查分片分佈在適當的集合中。

用戶端應用程式可以使用任何與 S3 相容的 SDK 或程式庫與 MinIO 部署互動。

MinIO 發佈了自己的 SDK,專門用於與 S3 相容的部署。

Diagram of multiple S3-compatible clients using SDKs to connect to MinIO

使用各種與 S3 相容的 SDK 的用戶端可以對相同的 MinIO 部署執行操作。

MinIO 使用 S3 API 的嚴格實作,包括要求用戶端使用 AWS Signature V4 或舊版 Signature V2 對所有操作進行簽署。AWS 簽名計算使用用戶端提供的標頭,因此負載平衡器、代理伺服器、安全程式或其他元件對這些標頭的任何修改,都會導致簽名不符錯誤和請求失敗。請確保任何此類中間元件都支援從用戶端到伺服器傳遞未經修改的標頭。

雖然 S3 API 對所有操作使用 HTTP 方法(如 GETPOST),但應用程式通常使用 SDK 進行 S3 操作。尤其是簽名計算的複雜性,通常會使通過 curl 或類似 REST 用戶端進行介面操作變得不切實際。MinIO 建議使用與 S3 相容的 SDK 或程式庫,它們會在操作過程中自動執行簽名計算。

複寫的 MinIO 部署

MinIO 站點複寫提供對同步不同獨立部署的支援。

您可以在不同的機架、資料中心或地理區域中部署對等站點,以支援諸如BC/DR 或在全球分佈的 MinIO 物件儲存中的地理位置讀/寫效能等功能。

Diagram of a multi-site deployment with three MinIO peer site

一個具有三個對等站點的 MinIO 多站點部署。在一個對等站點上的寫入操作會自動複寫到配置中的所有其他對等站點。

複寫效能主要取決於每個對等站點之間的網路延遲。

對於地理位置分散的對等站點,站點之間的高延遲可能會導致嚴重的複寫延遲。這可能會與接近或達到部署整體效能容量的工作負載結合,因為複寫過程本身需要足夠的可用I/O來同步物件。

Diagram of a multi-site deployment with latency between sites

在此對等設定中,站點 A 與其對等站點之間的延遲為 100 毫秒。物件完全同步到所有站點的最快時間至少為 110 毫秒。

部署具有站點到站點故障轉移協定支援的全球負載平衡器或類似的網路設備,對於多站點部署的功能至關重要。

負載平衡器應支援運作狀態探測/檢查設定,以偵測一個站點的故障,並自動將應用程式重新導向到任何剩餘的正常對等站點。

Diagram of a site replication deployment with two sites

負載平衡器使用已設定的邏輯(地理位置、延遲等)自動路由用戶端請求。寫入一個站點的資料會自動複寫到另一個對等站點。

負載平衡器應滿足單站點部署在連線平衡和標頭保留方面的相同要求。MinIO 複寫透過將物件排隊進行複寫來處理暫時性故障。