部署架構
此頁面從生產角度概述 MinIO 部署架構。有關特定硬體或軟體組態的資訊,請參閱
分散式 MinIO 部署
- 生產 MinIO 部署至少包含 4 個具有同質儲存和運算資源的 MinIO 主機。
MinIO 將這些資源聚合在一起作為一個 池,並將其呈現為單一物件儲存服務。
- 當使用本機連接的儲存時,MinIO 可提供最佳效能,例如連接到主機上 PCI-E 控制器板的 NVMe 或 SSD 磁碟機。
儲存控制器應以「僅是一堆磁碟機」(JBOD)組態呈現 XFS 格式化的磁碟機,不使用 RAID、池或其他硬體/軟體彈性層。MinIO 不建議在磁碟機或控制器層級進行快取。任何一種快取都可能導致 I/O 峰值,因為快取會填滿和清除,導致效能不可預測。
- MinIO 會自動將池中的磁碟機分組到 糾刪集 中。
糾刪集是 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 操作。
PUT 請求需要檢查每個集區,以找到正確的抹除集。一旦識別出,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 或程式庫,這些 SDK 或程式庫會自動執行簽名計算作為操作的一部分。
複寫的 MinIO 部署
- MinIO 站點複寫支援同步不同的獨立部署。
您可以在不同的機架、資料中心或地理區域中部署對等站點,以支援諸如 BC/DR 或在全球分佈的 MinIO 物件儲存中實現地理位置的讀取/寫入效能等功能。
- 複寫效能主要取決於每個對等站點之間的網路延遲。
對於地理分佈的對等站點,站點之間的高延遲可能會導致嚴重的複寫延遲。這可能會與接近或達到部署整體效能容量的工作負載一起加劇,因為複寫過程本身需要足夠的可用 I/O 來同步物件。
在此對等組態中,站點 A 與其對等站點之間的延遲為 100 毫秒。物件完全同步到所有站點的最早時間至少為 110 毫秒。
- 部署全球負載平衡器或類似的網路裝置,並支援站點到站點容錯移轉協定,對於多站點部署的功能至關重要。
負載平衡器應支援健康探測/檢查設定,以偵測一個站點的故障,並自動將應用程式重新導向到任何其餘健全的對等點。
負載平衡器應符合與單站點部署相同的關於連線平衡和標頭保留的要求。MinIO 複寫透過將物件排隊進行複寫來處理暫時性故障。