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