Minio分布式集群部署


Minio是什么

MinIO 是一個基於Apache License v2.0開源協議的對象存儲服務。它兼容亞馬遜S3雲存儲服務接口,非常適合於存儲大容量非結構化的數據,例如圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從幾kb到最大5T不等。
MinIO是一個非常輕量的服務,可以很簡單的和其他應用的結合,類似 NodeJS, Redis 或者 MySQL。

主流文件服務器對比


綜合性對比

特性對比

為什么選擇Minio

文檔社區活躍

MinIO作為一款基於Golang 編程語言開發的一款高性能的分布式存儲方案的開源項目,有十分完善的官方文檔。。
官網文檔地址:https://docs.min.io/cn/

SDK接口豐富

目前MinIO支持市面主流的開發語言並且可以通過SDK快速集成快速集成使用。

安裝部署簡單

Linux環境下只需下載一個二進制文件然后執行,即可在幾分鍾內完成安裝和配置MinIO,並且MinIO提供了與k8s、etcd、docker等主流容器化技術深度集成方案。

性能好

MinIO號稱是目前速度最快的對象存儲服務器。在標准硬件上,對象存儲的讀/寫速度最高可以高達183 GB/s和171 GB/s。對象存儲可以作為主存儲層,用來處理Spark、Presto等各種復雜工作負載以及成為Hadoop HDFS的替代品。

AWS S3標准兼容

亞馬遜雲的 S3 API(接口協議) 是在全球范圍內達到共識的對象存儲的協議,是全世界內大家都認可的標准。MinIO 在很早的時候就采用了 S3 兼容協議,並且MinIO 是第一個支持 S3 Select 的產品。

Minio分布式部署優勢

數據保護

  • 分布式 Minio 采用糾刪碼來防范多個節點宕機和位衰減。
  • 分布式 Minio 至少需要 4 個節點(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 基於哈希的校驗和來防范位衰減。

一致性

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

高可用

單機 Minio 服務存在單點故障,相反,如果是一個 N 節點的分布式 Minio ,只要有 N/2 節點在線,數據就是安全的。不過需要至少有 N/2+1 個節點來創建新的對象。(例如,一個 8 節點的 Minio 集群,每個節點一塊盤,就算 4 個節點宕機,這個集群仍然是可讀的,不過你需要 5 個節點才能寫數據。)

Minio分布式部署

環境

節點 目錄
10.10.4.100 /minio/data
10.10.4.101 /minio/data
10.10.4.102 /minio/data
10.10.4.103 /minio/data

創建相應目錄

$ mkdir -p /minio/{run,data} && mkdir -p /etc/minio

run:啟動腳本及二進制文件目錄;
data:數據存儲目錄;
/etc/minio:配置文件目錄;
注意:/minio 目錄必須是掛載的單獨硬盤,否則后面啟動會有問題

集群啟動文件

$ cat /minio/run/run.sh
#!/bin/bash
export MINIO_ACCESS_KEY=MinioTest
export MINIO_SECRET_KEY=1QAZ2wsx!
 
/data/minio/run/minio server --config-dir /etc/minio \
http://10.10.4.100/minio/data \
http://10.10.4.101/minio/data \
http://10.10.4.102/minio/data \
http://10.10.4.103/minio/data 

MINIO_ACCESS_KEY:用戶名,長度最小是5個字符;
MINIO_SECRET_KEY:密碼,密碼有復雜度要求,長度最小是8個字符;
–config-dir:指定集群配置文件目錄;

配置成系統服務

$ cat /etc/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
 
[Service]
WorkingDirectory=/minio/run/
ExecStart=/minio/run/run.sh
 
Restart=on-failure
RestartSec=5
 
[Install]
WantedBy=multi-user.target

將minio二進制文件上傳到/minio/run目錄!
給所有涉及到的文件或目錄添加權限!

啟動

$ systemctl daemon-reload
$ systemctl enable minio 
$ systemctl start minio

至此,Minio集群搭建完成!可以通過10.10.4.100:9000來訪問UI。

后記


搭建完成只不過完成了第一步,后續還需要進行監控等操作,監控就留在下一篇吧。


免責聲明!

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



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