centOS7在Docker Compose上運行分佈式MinIO

1、 前言

1.1 Minio 簡介

  • 1、MinIO 是在 Apache License v2.0 下發布的對象存儲服務器。 它與 Amazon S3 雲存儲服務兼容。 它最適合存儲非結構化數據,如照片,視頻,日誌文件,備份和容器/ VM 映像。 對象的大小可以從幾 KB 到最大 5TB。
  • 2、MinIO 服務器足夠輕,可以與應用程序堆棧捆綁在一起,類似於 NodeJS,Redis 和 MySQL
  • 3 一種高性能的分佈式對象存儲服務器,用於大型數據基礎設施。它是機器學習和其他大數據工作負載下Hadoop HDFS 的理想 s3 兼容替代品

2 、 爲什麼要用 Minio

2.1 選擇它的理由

  • 1、Minio 有良好的存儲機制
  • 2、Minio 有很好糾刪碼的算法與擦除編碼算法
  • 3、擁有RS code 編碼數據恢復原理
  • 4、公司做強做大時,數據的擁有重要性,對數據治理與大數據分析做準備。
  • 5、搭建自己的一套文件系統服務,對文件數據進行安全保護。
  • 6、擁有自己的平臺,不限於其他方限制。

2.2 存儲機制

  • Minio使用糾刪碼erasure code和校驗和checksum來保護數據免受硬件故障和無聲數據損壞。 即便丟失一半數量(N/2)的硬盤,仍然可以恢復數據。

2.3 糾刪碼

  • 糾刪碼是一種恢復丟失和損壞數據的數學算法,目前,糾刪碼技術在分佈式存儲系統中的應用主要有三類,陣列糾刪碼(Array Code: RAID5、RAID6 等)、RS(Reed-Solomon)裏德-所羅門類糾刪碼和 LDPC(LowDensity Parity Check Code)低密度奇偶校驗糾刪碼。Erasure Code 是一種編碼技術,它可以將 n 份原始數據,增加 m 份數據,並能通過 n+m 份中的任意 n 份數據,還原爲原始數據。即如果有任意小於等於 m 份的數據失效,仍然能通過剩下的數據還原出來

2.4 RS code 編碼數據恢復原理

  • RS 編碼以 word 爲編碼和解碼單位,大的數據塊拆分到字長爲 w(取值一般爲 8 或者 16位)的 word,然後對 word 進行編解碼。 數據塊的編碼原理與 word 編碼原理相同,後文中以 word 爲例說明,變量 Di, Ci 將代表一個 word。把輸入數據視爲向量 D=(D1,D2,..., Dn), 編碼後數據視爲向量(D1, D2,..., Dn, C1, C2,.., m),RS 編碼可視爲如下(圖 1)所示矩陣運算。圖 1 最左邊是編碼矩陣(或稱爲生成矩陣、分佈矩陣,Distribution Matrix),編碼矩陣需要滿足任意 n*n 子矩陣可逆。爲方便數據存儲,編碼矩陣上部是單位陣(n 行 n 列),下部是m 行 n 列矩陣。下部矩陣可以選擇範德蒙德矩陣或柯西矩陣。

     

     

                                                                                            RS code

RS 最多能容忍 m 個數據塊被刪除。 數據恢復的過程如下:
(1)假設 D1、D4、C2 丟失,從編碼矩陣中刪掉丟失的數據塊/編碼塊對應的行。(圖 2、3)
(2)由於 B' 是可逆的,記 B'的逆矩陣爲 (B'^-1),則 B' * (B'^-1) = I 單位矩陣。兩邊左乘 B'
逆矩陣。 (圖 4、5)
(3)得到如下原始數據 D 的計算公式 。

                                                                                    RS

2.5 擦除代碼

  • MinIO 使用每個對象的內聯擦除編碼來保護數據,這種編碼是用匯編代碼編寫的,可以提供儘可能高的性能。MinIO 使用 Reed-Solomon 代碼將對象條帶化爲 n/2 數據和 n/2 奇偶校驗塊——儘管這些可以配置爲任何所需的冗餘級別。這意味着在 12 個驅動器設置中,一個對象被分割爲 6 個數據和 6 個奇偶校驗塊。即使您丟失了 5 個(n/2) -1 個驅動器,無論是奇偶校驗還是數據,您仍然可以從剩餘驅動器可靠地重構數據。MinIO 的實現確保即使多個設備丟失或不可用,也可以讀取對象或寫入新對象。最後,MinIO 的擦除代碼在對象級別,可以一次治癒一個對象。

 

                                                                                  擦除代碼

2.6 體系結構

  • 1、MinIO 支持從機器學習到備份的一系列現代工作負載
  • 2、使用雲本地技術並分解計算和存儲層
  • 3、創建高效和可伸縮的對象存儲解決方案。

     

                                                                                       體系結構

3 、Linux 安裝準備工作

一、基本信息

官網  https://min.io/

下載  https://min.io/download#/linux

文檔  https://docs.min.io/

二、環境、工具說明

1、操作系統  Centos7.4 x64  Minimal 1708    

內存 2G

CPU 1核

2、工具:xshell5

3、VMware 版本:VMware Workstation Pro15

三、安裝部署

1、虛擬機安裝

參考 https://hunter.blog.csdn.net/article/details/89328381

2、創建目錄

[root@localhost ~]# mkdir /mnt/minio
[root@localhost ~]# mkdir /mnt/minio/data
4、進入目錄

[root@localhost ~]# cd /mnt/minio

5、防火牆開啓 9001 端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=9001/tcp --permanent
重啓防火牆

[root@localhost ~]# systemctl restart firewalld
————————————————
版權聲明:本文爲CSDN博主「一花一世界~」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/llwy1428/article/details/99618252

使用Docker Compose部署MinIO  

Docker Compose允許定義和運行單主機,多容器Docker應用程序。

使用Compose,您可以使用Compose文件來配置MinIO服務。 然後,使用單個命令,您可以通過你的配置創建並啓動所有分佈式MinIO實例。 分佈式MinIO實例將部署在同一主機上的多個容器中。 這是建立基於分佈式MinIO的開發,測試和分期環境的好方法。

1. 前提條件

2. 在Docker Compose上運行分佈式MinIO

在Docker Compose上部署分佈式MinIO,請下載docker-compose.yaml到你的當前工作目錄。Docker Compose會pull MinIO Docker Image,所以你不需要手動去下載MinIO binary。然後運行下面的命令

GNU/Linux and macOS

Copydocker-compose pull
docker-compose up

 

現在每個實例都可以訪問,端口從9001到9004,請在瀏覽器中訪問http://127.0.0.1:9001/

注意事項

  • 默認情況下Docker Compose file使用的是最新版的MinIO server的Docker鏡像,你可以修改image tag來拉取指定版本的MinIO Docker image.

  • 默認情況下會創建4個minio實例,你可以添加更多的MinIO服務(最多總共16個)到你的MinIO Comose deployment。添加一個服務

    • 複製服務定義並適當地更改新服務的名稱。
    • 更新每個服務中的命令部分。
    • 更新要爲新服務公開的端口號。 另外,請確保分配給新服務的端口尚未使用。

    關於分佈式MinIO的更多資料,請訪問這裏.

  • Docker compose file中的MinIO服務使用的端口是9001到9004,這允許多個服務在主機上運行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章