MinIO 分佈式集羣搭建

MinIO 分佈式集羣搭建

分佈式 Minio 可讓你將多塊硬盤(甚至在不一樣的機器上)組成一個對象存儲服務。因爲硬盤分佈在不一樣的節點上,分佈式 Minio 避免了單點故障。算法

Minio 分佈式模式能夠搭建一個高可用的對象存儲服務,你可使用這些存儲設備,而不用考慮其真實物理位置。瀏覽器

(1)數據保護安全

分佈式 Minio 採用糾刪碼(erasure code)來防範多個節點宕機和位衰減(bit rot)。分佈式

分佈式 Minio 至少須要 4 個節點,使用分佈式 Minio 就自動引入了糾刪碼功能。工具

糾刪碼是一種恢復丟失和損壞數據的數學算法, Minio 採用 Reed-Solomon code 將對象拆分紅 N/2 數據和 N/2 奇偶校驗塊。 這就意味着若是是 12 塊盤,一個對象會被分紅 6 個數據塊、6 個奇偶校驗塊,你能夠丟失任意 6 塊盤(無論其是存放的數據塊仍是奇偶校驗塊),你仍能夠從剩下的盤中的數據進行恢復。性能

糾刪碼的工做原理和 RAID 或者複製不一樣,像 RAID6 能夠在損失兩塊盤的狀況下不丟數據,而 Minio 糾刪碼能夠在丟失一半的盤的狀況下,仍能夠保證數據安全。 並且 Minio 糾刪碼是做用在對象級別,能夠一次恢復一個對象,而RAID 是做用在卷級別,數據恢復時間很長。 Minio 對每一個對象單獨編碼,存儲服務一經部署,一般狀況下是不須要更換硬盤或者修復。Minio 糾刪碼的設計目標是爲了性能和儘量的使用硬件加速。編碼

位衰減又被稱爲數據腐化 Data Rot、無聲數據損壞 Silent Data Corruption ,是目前硬盤數據的一種嚴重數據丟失問題。硬盤上的數據可能會神不知鬼不覺就損壞了,也沒有什麼錯誤日誌。正所謂明槍易躲,暗箭難防,這種背地裏犯的錯比硬盤直接故障還危險。 因此 Minio 糾刪碼採用了高速 HighwayHash 基於哈希的校驗和來防範位衰減。設計

(2)高可用日誌

單機 Minio 服務存在單點故障,相反,若是是一個 N 節點的分佈式 Minio ,只要有 N/2 節點在線,你的數據就是安全的。不過你須要至少有 N/2+1 個節點來建立新的對象。code

例如,一個 8 節點的 Minio 集羣,每一個節點一塊盤,就算 4 個節點宕機,這個集羣仍然是可讀的,不過你須要 5 個節點才能寫數據。

(3)限制

分佈式 Minio 單租戶存在最少 4 個盤最多 16 個盤的限制(受限於糾刪碼)。這種限制確保了 Minio 的簡潔,同時仍擁有伸縮性。若是你須要搭建一個多租戶環境,你能夠輕鬆的使用編排工具(Kubernetes)來管理多個Minio實例。

注意,只要遵照分佈式 Minio 的限制,你能夠組合不一樣的節點和每一個節點幾塊盤。好比,你可使用 2 個節點,每一個節點 4 塊盤,也可使用 4 個節點,每一個節點兩塊盤,諸如此類。

(4)一致性
Minio 在分佈式和單機模式下,全部讀寫操做都嚴格遵照 read-after-write 一致性模型。

搭建分佈式集羣

啓動一個分佈式 Minio 實例,你只須要把硬盤位置作爲參數傳給 minio server 命令便可,而後,你須要在全部其它節點運行一樣的命令。

注意

  • 分佈式 Minio 裏全部的節點須要有一樣的 access 祕鑰和 secret 祕鑰,這樣這些節點才能創建聯接。爲了實現這個,你須要在執行 minio server 命令以前,先將 access 祕鑰和 secret 祕鑰 export 成環境變量。
  • 分佈式 Minio 使用的磁盤裏必須是乾淨的,裏面沒有數據。
  • 下面示例裏的 IP 僅供示例參考,你須要改爲你真實用到的 IP 和文件夾路徑。
  • 分佈式 Minio 裏的節點時間差不能超過 3 秒,你可使用 NTP 來保證時間一致。
  • 在 Windows 下運行分佈式 Minio 處於實驗階段,不建議用於生產環境。

示例1:

啓動分佈式Minio實例,8個節點,每節點1塊盤,須要在8個節點上都運行下面的命令。

export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://192.168.1.11/export1 http://192.168.1.12/export2 \
               http://192.168.1.13/export3 http://192.168.1.14/export4 \
               http://192.168.1.15/export5 http://192.168.1.16/export6 \
               http://192.168.1.17/export7 http://192.168.1.18/export8

示例2:

啓動分佈式Minio實例,4節點,每節點4塊盤,須要在4個節點上都運行下面的命令。

export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://192.168.1.11/export1 http://192.168.1.11/export2 \
               http://192.168.1.11/export3 http://192.168.1.11/export4 \
               http://192.168.1.12/export1 http://192.168.1.12/export2 \
               http://192.168.1.12/export3 http://192.168.1.12/export4 \
               http://192.168.1.13/export1 http://192.168.1.13/export2 \
               http://192.168.1.13/export3 http://192.168.1.13/export4 \
               http://192.168.1.14/export1 http://192.168.1.14/export2 \
               http://192.168.1.14/export3 http://192.168.1.14/export4

驗證

驗證是否部署成功,使用瀏覽器訪問 Minio 服務或者使用 mc。多個節點的存儲容量和就是分佈式Minio的存儲容量。

相關文章
相關標籤/搜索