MinIO 的分布式部署

2022-07-04 15:27:10 字數 3336 閱讀 8913

目錄3 minio儲存機制

4 部署實踐

5 總結

參考資料

往期文章

高可用分布式物件儲存,minio 輕鬆實現。

分布式儲存,很關鍵的點在於資料的可靠性,即保證資料的完整,不丟失,不損壞。只有在可靠性實現的前提下,才有了追求一致性、高可用、高效能的基礎。而對於在儲存領域,一般對於保證資料可靠性的方法主要有兩類,一類是冗餘法,一類是校驗法。

冗餘法最簡單直接,即對儲存的資料進行副本備份,當資料出現丟失,損壞,即可使用備份內容進行恢復,而副本 備份的多少,決定了資料可靠性的高低。這其中會有成本的考量,副本資料越多,資料越可靠,但需要的裝置就越多,成本就越高。可靠性是允許丟失其中乙份資料。當前已有很多分布式系統是採用此種方式實現,如 hadoop 的檔案系統(3個副本),redis 的集群,mysql 的主備模式等。

校驗法即通過校驗碼的數學計算的方式,對出現丟失、損壞的資料進行校驗、還原。注意,這裡有兩個作用,乙個校驗,通過對資料進行校驗和( checksum )進行計算,可以檢查資料是否完整,有無損壞或更改,在資料傳輸和儲存時經常用到,如 tcp 協議;二是恢復還原,通過對資料結合校驗碼,通過數學計算,還原丟失或損壞的資料,可以在保證資料可靠的前提下,降低冗餘,如單機硬碟儲存中的 raid 技術,糾刪碼(erasure code)技術等。minio 採用的就是糾刪碼技術。

在部署分布式 minio 前,需要對下面的概念進行了解:

minio 使用糾刪碼機制來保證高可靠性,使用 highwayhash 來處理資料損壞( bit rot protection )。關於糾刪碼,簡單來說就是可以通過數學計算,把丟失的資料進行還原,它可以將n份原始資料,增加m份資料,並能通過n+m份中的任意n份資料,還原為原始資料。即如果有任意小於等於m份的資料失效,仍然能通過剩下的資料還原出來。舉個最簡單例子就是有兩個資料(d1, d2),用乙個校驗和y(d1 + d2 = y)即可保證即使丟失其中乙個,依然可以還原資料。如丟失 d1 ,則使用y - d2 = d1還原,同理,d2 丟失或者y丟失,均可通過計算得出。

ec 的具體應用實現中, rs(reed-solomen)是 ec 的一種更簡單快捷的實現,可以通過矩陣運算,還原資料。minio 將物件拆分成n/2資料和n/2 校驗塊 。具體的數學矩陣運算及證明,可以參考文章《erasure-code-擦除碼-1-原理篇》及《ec糾刪碼原理》。

檔案物件上傳到 minio ,會在對應的資料儲存磁碟中,以 bucket 名稱為目錄,檔名稱為下一級目錄,檔名稱下是 part.1 和 xl.json,前者是編碼資料塊及檢驗塊,後者是元資料檔案。如有4個磁碟,當檔案上傳後,會有2個編碼資料塊,2個檢驗塊,分別儲存在4個磁碟中。如下圖,bg-01.jpg是上傳的檔案物件:

在啟動 minio 時,若傳入引數是多個目錄,則會以糾刪碼的形式執行,即具備高可靠性意義。即在乙個伺服器(單節點)上對,多個磁碟上執行 minio。

執行命令也很簡單,引數傳入多個目錄即可:

minio_access_key=$ minio_secret_key=$ nohup $/minio server --address "$:$" /opt/min-data1 /opt/min-data2 /opt/min-data3 /opt/min-data4 > $ 2>&1 &

注意替換命令中的變更,執行後輸出資訊如下:

可見 minio 會建立乙個1個 set,set 中有4個 drive ,其中它會提示乙個警告,提示乙個節點的 set 中存在多於2個的drive,如果節點掛掉,則資料都不可用了,這與 ec 碼的規則一致。

為了防止單點故障,分布式儲存自然是需要多節點部署,以達到高可靠和高可用的能力。minio 對於多節點的部署,也是在啟動時通過指定有 host 和埠的目錄位址,即可實現。下面在單台機器上,通過不同的埠模擬在4臺機器節點上執行,儲存目錄依然是 min-data14,而對應的埠是90019004。指令碼如下:

本示例中,minio 的啟動命令執行了4次,相當於在四台機器節點上都分別執行乙個minio例項,從而模擬四個節點。執行結果如下:

檢視程序ps -ef |grep minio

執行起來後,使用http://$:9001http://$:9004均可以訪問到 minio 的使用介面。

前面單獨對每個節點進行訪問顯然不合理,通過使用 nginx **,進行負載均衡則很有必要。簡單的配置如下:

}其中主要是 upstream 及 proxy_pass 的配置。如此,即可使用http://$:8888進行訪問。

對於分布式儲存,高可靠必是首要考慮的因素,minio 已經提供了分布式部署的解決方案,實現高可靠、高可用的資源儲存。本文對可靠性的實現方法進行描述,**了 minio 的儲存機制,並通過指令碼模擬實踐 minio 的分布式部署,希望對大家有幫助。

minio分布式部署

一 至少準備四個節點 192.168.0.100 m1192.168.0.101 m2192.168.0.102 m3192.168.0.103m4 二 部署 在m1機器上進行目錄的建立 1 建立相關目錄 mkdir p usr local minio wget cp minio usr local...

Minio分布式集群搭建

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

MinIO 分布式集群搭建

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