文件

部署架構

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

分散式 MinIO 部署

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

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

4 Node MinIO deployment with homogeneous storage and compute resources

此集區中的每個 MinIO 主機都具有相符的計算、儲存和網路組態

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

儲存控制器應以「僅是一堆硬碟」(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 部署的可用儲存空間。

每個集區都包含一組獨立的節點,這些節點具有自己的抹除集。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 對所有操作使用如 GETPOST 等 HTTP 方法,但應用程式通常使用 SDK 進行 S3 操作。尤其是簽名計算的複雜性通常使得透過 curl 或類似的 REST 用戶端進行介面變得不切實際。MinIO 建議使用與 S3 相容的 SDK 或程式庫,這些 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 複寫透過對要複寫的物件進行排隊來處理暫時性故障。