文件

部署架構

此頁面從生產的角度概述了 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 冗餘和修復,請參閱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 簽章計算使用客戶端提供的標頭,因此負載平衡器、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 複寫透過將物件排隊進行複寫來處理暫時性故障。