文件

部署架構

本頁提供了從生產角度來看的 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 會自動將集區中的硬碟分組為抹除集

抹除集是 MinIO 可用性和彈性的基礎組件。 MinIO 將抹除集對稱地條紋化到集區中的節點上,以保持抹除集硬碟的均勻分佈。 然後,MinIO 根據部署同位檢查將物件分割成資料和同位檢查碎片,並將它們分佈在抹除集中。

有關 MinIO 冗餘和修復的更完整討論,請參閱抹除碼物件修復

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

在最大同位檢查 EC:8 的情況下,MinIO 會將物件分割成 8 個資料區塊和 8 個同位檢查區塊,並將它們分佈在抹除集中的硬碟上。此集區中的所有抹除集都具有相同的條紋大小和碎片分佈。

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

對於每個唯一的物件命名空間 儲存桶/前綴/[前綴/...]/物件.副檔名,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 部署的可用儲存空間。

每個儲存池都包含一組獨立的節點,這些節點具有自己的 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 使用 GETPOST 等 HTTP 方法來執行所有操作,但應用程式通常使用 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 複寫透過將物件排隊進行複寫來處理暫時性故障。