Minio分布式集群搭建部署


分布式 Minio 可以讓你將多塊硬盤或者多台服務器組成一個對象存儲服務。由於硬盤分布在不同的節點上,分布式 Minio 避免了單點故障。MinioMinio分布式模式可以幫助你搭建一個高可用的對象存儲服務,你可以使用這些存儲設備,而不用考慮其真實物理位置。

一、Minio分布式部署的優勢

1.1 數據保護

  • 分布式 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 基於哈希的校驗和來防范位衰減。

1.2 高可用

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

1.3 限制

  • 分布式 Minio 單租戶存在最少 4 個盤最多 16 個盤的限制(受限於糾刪碼)。這種限制確保了 Minio 的簡潔,同時仍擁有伸縮性。如果你需要搭建一個多租戶環境,你可以輕松的使用編排工具(Kubernetes)來管理多個Minio實例。
  • 注意,只要遵守分布式 Minio 的限制,你可以組合不同的節點和每個節點幾塊盤。比如,你可以使用 2 個節點,每個節點 4 塊盤,也可以使用 4 個節點,每個節點兩塊盤,諸如此類。

1.4 一致性

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

二、Minio分布式集群搭建

2.1 環境准備

節點 目錄
192.168.1.1 /data/minio/data
192.168.1.2 /data/minio/data
192.168.1.3 /data/minio/data
192.168.1.4 /data/minio/data

官網獲取Minio!

2.2 目錄創建

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

run:啟動腳本及二進制文件目錄;
data:數據存儲目錄;
/etc/minio:配置文件目錄;

2.3 集群啟動文件

$ vim /data/minio/run/run.sh
#!/bin/bash
export MINIO_ACCESS_KEY=Minio
export MINIO_SECRET_KEY=Test1234!

/data/minio/run/minio server --config-dir /etc/minio \
http://192.168.99.1/data/minio/data \
http://192.168.99.2/data/minio/data \
http://192.168.99.3/data/minio/data \
http://192.168.99.4/data/minio/data \
  • MINIO_ACCESS_KEY:用戶名,長度最小是5個字符;
  • MINIO_SECRET_KEY:密碼,密碼不能設置過於簡單,不然minio會啟動失敗,長度最小是8個字符;
  • –config-dir:指定集群配置文件目錄;

2.4 配置為系統服務

$ vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
WorkingDirectory=/data/minio/run/
ExecStart=/data/minio/run/run.sh

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

注意:

  • 將minio二進制文件上傳到/data/minio/run目錄!
  • 給所有涉及到的文件或目錄添加權限!
$ chmod +x /data/minio/run/minio && chmod +x /data/minio/run/run.sh

2.5 啟動集群

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

2.6 代理集群

生產環境需要使用Nginx將集群地址進行代理,對外統一入口!

upstream minio{
        server 192.168.99.1:9000;
        server 192.168.99.2:9000;
        server 192.168.99.3:9000;
        server 192.168.99.4:9000;
}
server {
        listen 9000;
        server_name minio;
        location / {
                proxy_pass http://minio;
                proxy_set_header Host $http_host;
                client_max_body_size 1000m;
        }
}

2.7 訪問測試

瀏覽器訪問minio集群代理地址+9000端口,用戶名密碼為上文中啟動文件run.sh中我們設置的!


免責聲明!

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



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