文件

部署架構

此頁面從生產的角度概述了 MinIO 部署架構。有關特定硬體或軟體配置的資訊,請參閱

分散式 MinIO 部署

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

MinIO 將這些資源聚合在一起作為,並將自身呈現為單一物件儲存服務。

4 Node MinIO deployment with homogeneous storage and compute resources

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

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

儲存控制器應以「Just a Bunch of Drives」(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 的冗餘和修復,請參閱抹除編碼物件修復

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

在最大同位數為 EC:8 的情況下,MinIO 會將物件分割成 8 個資料區塊和 8 個同位區塊,並將它們分散到抹除集中各個磁碟機。此集區中的所有抹除集都具有相同的條帶大小和區塊分散方式。

MinIO 使用基於物件名稱和路徑的確定性雜湊演算法來選擇給定物件的抹除集。

對於每個唯一的物件命名空間 BUCKET/PREFIX/[PREFIX/...]/OBJECT.EXTENSION,MinIO 總是選擇相同的抹除集來進行讀/寫操作。 MinIO 會處理集區和抹除集內的所有路由,使得選擇/讀取/寫入過程對應用程式完全透明。

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 部署的可用儲存空間。

每個集區都由一組獨立的節點組成,這些節點具有自己的抹除集。MinIO 必須查詢每個集區,以確定將讀取和寫入操作導向的正確抹除集,這樣每個額外的集區都會增加每次呼叫的節點間流量。然後,包含正確抹除集的集區會回應操作,這對應用程式保持完全透明。

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

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

PUT 請求需要檢查每個集區以尋找正確的抹除集。 一旦確定,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 簽名計算使用用戶端提供的標頭,因此負載平衡器、Proxy、安全程式或其他元件對這些標頭的任何修改都會導致簽名不符錯誤和請求失敗。請確保任何此類中繼元件都支援將用戶端到伺服器的未變更標頭直通傳輸。

雖然 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 複寫會透過排隊等待複寫的物件來處理暫時性故障。