分布式儲存Minio集群環境搭建

2022-05-06 12:51:11 字數 3283 閱讀 1298

分布式 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)高可用

例如,乙個 8 節點的 minio 集群,每個節點一塊盤,就算 4 個節點宕機,這個集群仍然是可讀的,不過你需要 5 個節點才能寫資料。

(3)限制

分布式 minio 單租戶存在最少 4 個盤最多 16 個盤的限制(受限於糾刪碼)。這種限制確保了 minio 的簡潔,同時仍擁有伸縮性。如果你需要搭建乙個多租戶環境,你可以輕鬆的使用編排工具(kubernetes)來管理多個minio例項。

注意,只要遵守分布式 minio 的限制,你可以組合不同的節點和每個節點幾塊盤。比如,你可以使用 2 個節點,每個節點 4 塊盤,也可以使用 4 個節點,每個節點兩塊盤,諸如此類。

(4)一致性

minio 在分布式和單機模式下,所有讀寫操作都嚴格遵守 read-after-write 一致性模型。

啟動乙個分布式 minio 例項,你只需要把硬碟位置做為引數傳給 minio server 命令即可,然後,你需要在所有其它節點執行同樣的命令。

注意啟動分布式minio例項,8個節點,每節點1塊盤,需要在8個節點上都執行下面的命令。

export minio_access_key=export minio_secret_key=minio server   \

\ \

啟動分布式minio例項,4節點,每節點2塊盤,需要在4個節點上都執行下面的命令。

將61下/opt/minio資料夾所有內容可通過scp命令複製到62-64的/opt/minio下

然後在61-64的機器上逐個執行start.sh指令碼,大功告成!

為方便起見,編寫批量啟動指令碼,僅在61的目錄下編寫cluster_start.sh

將62-64的ip存放在ip.txt檔案內採用cat 逐行讀取。

注意點:

1.  accesskey大於3字元, secretkey必須大於8字元,否則啟動不了,下圖我將secretkey設定6位字元,然後啟動

檢視minio程序並沒有啟動

檢視minio.log

2.  配置的多台機器 secretkey accesskey必須完全一致,否則會出現意想不到的錯誤,因為多台機器之間的資訊同步就是通過這兩個key進行,否則肯定會認證失敗

檢視minio.log

3.當集群中的某個節點down了,會影響整體的使用,我手動將64的節點停掉

嘗試在63及61上建立bucket,嘗試失敗,注意不要在kill64後立即測試,要稍等一會兒,否則可能不會復現這個問題。 個人猜測,可能是64的狀態同步需要傳送心跳給至集群內的其他機器,這個需要一些時間。

再次啟動64的服務後,再進行63 61的建立bucket ,就成功了,

再登入 64檢視,會同步到其他節點建立的bucket,再建立2112buckt,其他的節點也能同步到。

Minio分布式集群搭建

二 minio分布式集群搭建 分布式minio可以讓你將多塊硬碟 甚至在不同的機器上 組成乙個物件儲存服務。由於硬碟分布在不同的節點上,分布式minio避免了單點故障。在大資料領域,通常的設計理念都是無中心和分布式。minio分布式模式可以幫助你搭建乙個高可用的物件儲存服務,你可以使用這些儲存裝置,...

MinIO 分布式集群搭建

分布式 minio 可以讓你將多塊硬碟 甚至在不同的機器上 組成乙個物件儲存服務。由於硬碟分布在不同的節點上,分布式 minio 避免了單點故障。minio 分布式模式可以搭建乙個高可用的物件儲存服務,你可以使用這些儲存裝置,而不用考慮其真實物理位置。1 資料保護 分布式 minio 採用糾刪碼 e...

MINIO分布式集群搭建

搭建分布式集群 中文文件 docker compose允許定義和執行單主機,多容器docker應用程式。使用compose,您可以使用compose檔案來配置minio服務。然後,使用單個命令,您可以通過你的配置建立並啟動所有分布式minio例項。分布式minio例項將部署在同一主機上的多個容器中。...