基於Docker Compose部署分布式MinIO集群


一、概述

Minio 是一個基於Go語言的對象存儲服務。它實現了大部分亞馬遜S3雲存儲服務接口,可以看做是是S3的開源版本,非常適合於存儲大容量非結構化的數據,例如圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從幾kb到最大5T不等。區別於分布式存儲系統,minio的特色在於簡單、輕量級,對開發者友好,認為存儲應該是一個開發問題而不是一個運維問題。

存儲架構

Minio針對不同應用場景也設置了對應的存儲架構:

1、單主機,單硬盤模式

該模式下,Minio只在一台服務器上搭建服務,且數據都存在單塊磁盤上,該模式存在單點風險,主要用作開發、測試等使用

minio --config-dir ~/tenant1 server --address :9001 /disk1/data/tenant1

 

2、單主機,多硬盤模式

該模式下,Minio在一台服務器上搭建服務,但數據分散在多塊(大於4塊)磁盤上,提供了數據上的安全保障

minio --config-dir ~/tenant1 server --address :9001 /disk1/data/tenant1 /disk2/data/tenant1 /disk3/data/tenant1 /disk4/data/enant1

 

3、多主機、多硬盤模式(分布式)

該模式是Minio服務最常用的架構,通過共享一個accesskey和secretkey,在多台(2-32)服務器上搭建服務,且數據分散在多塊(大於4塊,無上限)磁盤上,提供了較為強大的數據冗余機制(Reed-Solomon糾刪碼)。

export MINIO_ACCESS_KEY=<TENANT1_ACCESS_KEY>
export MINIO_SECRET_KEY=<TENANT1_SECRET_KEY>
minio --config-dir ~/tenant1 server --address :9001 http://192.168.10.11/data/tenant1 http://192.168.10.12/data/tenant1 http://192.168.10.13/data/tenant1 http://192.168.10.14/data/tenant1

 

數據安全

Minio使用了Reed-Solomon糾刪碼和校驗和來保護數據免受硬件故障和無聲數據損壞。

1、Reed-Solomon糾刪碼

糾刪碼是一種恢復丟失和損壞數據的數學算法, Minio默認采用Reed-Solomon code將數據拆分成N/2個數據塊和N/2個奇偶校驗塊。這就意味着如果是16塊盤,一個對象會被分成8個數據塊、8個奇偶校驗塊,你可以丟失任意8塊盤(不管其是存放的數據塊還是校驗塊),你仍可以從剩下的盤中的數據進行恢復。 

 

糾刪碼的工作原理和RAID或者副本不同,像RAID6可以在損失兩塊盤的情況下不丟數據,而Minio糾刪碼可以在丟失一半的盤的情況下,仍可以保證數據安全。 而且Minio糾刪碼是作用在對象級別,可以一次恢復一個對象,而RAID是作用在卷級別,數據恢復時間很長。 Minio對每個對象單獨編碼,存儲服務一經部署,通常情況下是不需要更換硬盤或者修復。

此外,針對不同應用所需的數據安全級別不同,Minio還提供了存儲級別(Storage Class)的配置,調整數據塊和校驗塊的比例,做到對空間的最佳使用。

 

比如在將比例調整為14:2后,存儲100M的數據占用的空間僅為114M。

2、位衰減保護

位衰減又被稱為數據腐化Data Rot、無聲數據損壞Silent Data Corruption,是目前硬盤數據的一種嚴重數據丟失問題。硬盤上的數據可能會神不知鬼不覺就損壞了,也沒有什么錯誤日志。針對這一問題,最新的Minio采用了HighwayHash算法計算校驗和來防范位衰減,根據測試結果,其可以實現10GB/s的處理速度。

3、文件的修復

得益於Reed-Solomon糾刪碼,Minio可以更加靈活的對文件進行修復。目前,Minio提供了全量、bucket、文件夾、文件等各個粒度的修復操作: 

相比一般的RAID方式,Minio可以在非常小的粒度下對文件進行修復操作,靈活性有了很大提高。

 

二、Docker Compose部署

中文文檔:https://docs.min.io/cn/deploy-minio-on-docker-compose.html

 

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

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

環境說明

操作系統 ip地址 docker版本 Docker Compose版本
centos 7.6 192.168.31.34 19.03.8 1.24.1

 

 

 

 

運行分布式MinIO

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

docker-compose pull
docker-compose up -d

現在每個實例都可以訪問,端口從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,這允許多個服務在主機上運行。

 

訪問MinIO

http://192.168.31.34:9001/minio/

用戶名:minio,密碼:minio123

 

登錄之后,效果如下:

 

三、MinIO操作

修改密碼

點擊右上角

 

 

提示:無法通過瀏覽器更新此用戶的憑據

 

注意:如果需要修改密碼,修改docker-compose.yaml中的MINIO_ACCESS_KEY和MINIO_SECRET_KEY變量即可。

 

創建bucket(文件夾)

先來創建一個bucket

 

 創建data

 

 上傳文件

選中data,點擊右下角的上傳文件

 

 選擇一張圖片,上傳成功之后,效果如下:

 

 

查看bucket文件信息

點擊data,查看與設置該Object的基本信息:
查看共享地址Shareable Link

設置到期時間,最大可保存時間為7天

對話框上方彈出該Object現剩余到期時間

 

 

 

本文參考鏈接:

http://tech.dianwoda.com/2018/12/04/fen-bu-shi-cun-chu-xi-tong-miniojian-jie/

https://www.jianshu.com/p/68ac0477291d

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM