部署架構
本頁提供了從生產角度來看的 MinIO 部署架構概述。 有關特定硬體或軟體配置的資訊,請參閱
分散式 MinIO 部署
- 生產 MinIO 部署至少包含 4 個具有同質儲存和運算資源的 MinIO 主機。
MinIO 將這些資源匯總在一起作為集區,並將其呈現為單一物件儲存服務。
- 當使用本地連接的儲存裝置時,例如連接到主機上的 PCI-E 控制器板的 NVMe 或 SSD 硬碟時,MinIO 提供最佳效能。
儲存控制器應以「Just a Bunch of Drives」(JBOD) 配置呈現 XFS 格式化的硬碟,而無需 RAID、集區或其他硬體/軟體彈性層。 MinIO 不建議在硬碟或控制器層進行快取。 任何類型的快取都可能導致快取填滿和清除時出現I/O峰值,從而導致不可預測的效能。
- MinIO 會自動將集區中的硬碟分組為抹除集。
抹除集是 MinIO 可用性和彈性的基礎組件。 MinIO 將抹除集對稱地條紋化到集區中的節點上,以保持抹除集硬碟的均勻分佈。 然後,MinIO 根據部署同位檢查將物件分割成資料和同位檢查碎片,並將它們分佈在抹除集中。
有關 MinIO 冗餘和修復的更完整討論,請參閱抹除碼和物件修復。
在最大同位檢查
EC:8
的情況下,MinIO 會將物件分割成 8 個資料區塊和 8 個同位檢查區塊,並將它們分佈在抹除集中的硬碟上。此集區中的所有抹除集都具有相同的條紋大小和碎片分佈。- MinIO 使用基於物件名稱和路徑的確定性雜湊演算法來選取給定物件的抹除集。
對於每個唯一的物件命名空間
儲存桶/前綴/[前綴/...]/物件.副檔名
,MinIO 始終為讀取/寫入操作選取相同的抹除集。 MinIO 會處理集區和抹除集中的所有路由,使選取/讀取/寫入過程對應用程式完全透明。- 每個 MinIO 伺服器都完整掌握分散式拓撲的資訊,因此應用程式可以連線並對部署中的任何節點執行操作。
回應的 MinIO 節點會自動處理將內部請求路由到部署中的其他節點,並將最終回應傳回給用戶端。
應用程式通常不應管理這些連線,因為部署拓撲的任何變更都需要更新應用程式。生產環境應部署負載平衡器或類似的網路控制平面元件,以管理與 MinIO 部署的連線。例如,您可以部署 NGINX 負載平衡器,針對部署中可用的節點執行「最少連線」或「循環配置」負載平衡。
- 您可以透過擴充儲存池來擴充 MinIO 部署的可用儲存空間。
每個儲存池都包含一組獨立的節點,這些節點具有自己的 Erasure Set。MinIO 必須查詢每個儲存池,以判斷它將讀取和寫入操作導向哪個正確的 Erasure Set,因此每個額外的儲存池都會增加每次呼叫的節點間流量。包含正確 Erasure Set 的儲存池接著會回應操作,對應用程式保持完全透明。
如果您透過擴充儲存池修改 MinIO 拓撲,您可以透過修改負載平衡器以包含新儲存池的節點來更新您的應用程式。應用程式可以繼續使用負載平衡器的位址來進行 MinIO 部署,而無需進行任何更新或修改。這可確保請求平均分配到所有儲存池,同時應用程式繼續使用單一負載平衡器 URL 進行 MinIO 操作。
PUT 請求需要檢查每個儲存池,以找到正確的 Erasure Set。一旦確定,MinIO 會分割物件,並將資料和同位分片分配到適當的集合中。
- 用戶端應用程式可以使用任何與 S3 相容的 SDK 或程式庫來與 MinIO 部署互動。
MinIO 發布了自己的 SDK,專門用於與 S3 相容的部署。
MinIO 使用 S3 API 的嚴格實作,包括要求用戶端使用 AWS Signature V4 或舊版 Signature V2 來簽署所有操作。AWS 簽章計算使用用戶端提供的標頭,因此負載平衡器、Proxy、安全程式或其他元件對這些標頭的任何修改都會導致簽章不符錯誤和請求失敗。請確保任何此類中間元件都支援從用戶端到伺服器傳遞未修改的標頭。
雖然 S3 API 使用
GET
和POST
等 HTTP 方法來執行所有操作,但應用程式通常使用 SDK 進行 S3 操作。特別是,簽章計算的複雜性通常會使透過curl
或類似的 REST 用戶端進行介面連線變得不切實際。MinIO 建議使用與 S3 相容的 SDK 或程式庫,它們會自動執行簽章計算,作為操作的一部分。
複寫的 MinIO 部署
- MinIO 站點複寫提供同步不同獨立部署的支援。
您可以在不同的機架、資料中心或地理區域中部署對等站點,以支援諸如BC/DR 或全球分散式 MinIO 物件儲存中的地理本地讀/寫效能等功能。
- 複寫效能主要取決於每個對等站點之間的網路延遲。
對於地理分散的對等站點,站點之間的高延遲可能會導致嚴重的複寫延遲。當工作負載接近或達到部署的整體效能容量時,這種情況可能會加劇,因為複寫過程本身需要足夠的可用I/O 來同步物件。
在此對等組態中,站點 A 與其對等站點之間的延遲為 100 毫秒。物件完全同步到所有站點的最快時間至少為 110 毫秒。
- 部署具有站點間故障轉移協定支援的全球負載平衡器或類似的網路裝置,對於多站點部署的功能至關重要。
負載平衡器應支援健康探測/檢查設定,以偵測一個站點的故障,並自動將應用程式重新導向到任何剩餘的健康對等點。
在連線平衡和標頭保留方面,負載平衡器應符合單站點部署的相同要求。MinIO 複寫透過將物件排隊進行複寫來處理暫時性故障。