目錄
- 一、命令列方式擴展
- 1. MinIO擴展集群支持的命令語法
- 2. 擴容示例
- 二、etcd擴展方案
- 1. 環境變數
- 2. 運行多個集群
- 3. 示例
- 相關鏈接
MinIO 支持兩種擴展方式:
- 通過修改命令列,在命令列上指定新的集群集來擴展
- 通過引入第三方組件etcd,在不動原有集群的基礎上實作動態擴展方案
一、命令列方式擴展
MinIO 支持通過在命令列上指定新的集群集來擴展分布式集群,多個節點的存盤容量和就是分布式MinIO的存盤容量,
1. MinIO擴展集群支持的命令語法
支持擴容的命令列如下:
export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://host{1...m}/export{1...m} http://host{n...z}/export{1...m}
注意:針對此語法,推薦使用連續的節點IP,
2. 擴容示例
假如,我們的初始集群為
export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://host{1...4}/export{1...16}
那么,集群擴容命令列如下:
export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://host{1...4}/export{1...16} http://host{5...8}/export{1...16}
現在整個集群就擴展了64個磁盤,總磁盤變為128個,新的物件上傳請求會自動分配到最少使用的集群上,通過以上擴展策略,就可以按需擴展集群,重新配置后重啟集群,會立即在集群中生效,并對現有集群無影響,如上命令中,我們可以把原來的集群看做一個集群池,新增集群看做另一個集群池,新物件按每個集群池中的可用空間比例放置在集群池中,在每個集群池內,基于確定性哈希演算法確定位置,
注意: 添加的每個集群池必須具有與原始集群池相同的磁盤數量(糾刪碼集)大小,以便維持相同的資料冗余SLA, 例如,第一個集群池有8個磁盤,就可以將集群擴展為16個、32個或1024個磁盤的集群池,只需確保部署的SLA是原始集群池的倍數即可,
注:命令列方式擴展的集群,各個節點都能訪問到資料,每塊硬碟都存在相同的 bucket,但上傳的資料并不是都存在于每塊硬碟上,
二、etcd擴展方案
etcd 用于存盤桶DNS服務記錄

etcd簡介及集群安裝部署使用
1. 環境變數
MINIO_ETCD_ENDPOINTS
這是您要用作MinIO聯合后端的etcd服務器的逗號分隔串列, 在整個聯合部署中,這應該是相同的,即聯合部署中的所有MinIO實體都應使用相同的 etcd后端,
MINIO_DOMAIN
這是用于聯合設定的頂級域名,理想情況下,該域名應決議為 在所有聯合MinIO實體之前運行的負載均衡器,域名用于創建etcd的子域條目,對于 例如,如果域名設定為 domain.com,水桶 bucket1,bucket2 將作為訪問 bucket1.domain.com 和 bucket2.domain.com,
MINIO_PUBLIC_IPS
這是用逗號分隔的IP地址串列,此MinIO實體上創建的存盤桶將決議為這些IP地址,例如, 可以 bucket1 在訪問當前MinIO實體上創建的存盤區 bucket1.domain.com,并且DNS條目 bucket1.domain.com 將指向中設定的IP地址MINIO_PUBLIC_IPS,
注意:
- 這個欄位在獨立和糾刪碼MinIO服務器部署時是必需的,以啟用聯邦模式,
- 對于分布式部署,此欄位是可選的,如果沒有在聯合設定中設定此欄位,則使用傳遞給MinIO服務器啟動的主機的IP地址,并將其用于DNS條目,
2. 運行多個集群
集群1
export MINIO_ETCD_ENDPOINTS="http://remote-etcd1:2379,http://remote-etcd2:4001"
export MINIO_DOMAIN=domain.com
export MINIO_PUBLIC_IPS=44.35.2.1,44.35.2.2,44.35.2.3,44.35.2.4
minio server http://rack{1...4}.host{1...4}.domain.com/mnt/export{1...32}
集群2
export MINIO_ETCD_ENDPOINTS="http://remote-etcd1:2379,http://remote-etcd2:4001"
export MINIO_DOMAIN=domain.com
export MINIO_PUBLIC_IPS=44.35.1.1,44.35.1.2,44.35.1.3,44.35.1.4
minio server http://rack{5...8}.host{5...8}.domain.com/mnt/export{1...32}
在此配置中,你可以看到 MINIO_ETCD_ENDPOINTS 指向管理MinIO配置的etcd后端,該后端管理MinIO config.json 和 存盤桶DNS SRV記錄,MINIO_DOMAIN 表示存盤桶的域名后綴,用于通過DNS決議存盤桶,例如,如果您有一個像mybucket這樣的bucket,那么客戶機現在可以使用 mybucket.domain.com 直接將其自身決議到正確的集群,MINIO_PUBLIC_IPS 指向可以訪問每個集群的公共IP地址,這對于每個集群是唯一的,
注意:mybucket只存在于一個集群cluster1或cluster2中,這是隨機的,由domain.com的決議方式決定,如果存在回圈DNS,domain.com則將隨機選擇哪個群集提供存盤桶,
注:etcd方式擴展的集群,上傳到某個集群池的資料,雖然其它集群池也可訪問到,但 bucket 和 資料 只存在于上傳到的集群池中,
3. 示例
#!/bin/sh
function start() {
export MINIO_ETCD_ENDPOINTS="http://192.168.199.140:2379,http://192.168.199.141:2379,http://192.168.199.142:2379"
export MINIO_DOMAIN=domain.com
export MINIO_PUBLIC_IPS=192.168.199.140,192.168.199.141
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
nohup /opt/minio/minio server http://192.168.199.14{0...1}/data/minio/export{1...4} \
> /opt/minio/minio.log 2>&1 &
# > /dev/null 2>&1 &
}
NUM=`ps -C "minio" --no-header | wc -l`
ID=$(ps -ef | grep "minio" | grep -v "grep" | grep -v "sh" | awk '{print $2}')
if [ "start" = $1 ]; then
if [ 0 -eq $NUM ]; then
start
fi
elif [ "restart" = $1 ]; then
if [ 0 -ne $NUM ]; then
kill -9 $ID | start
else
start
fi
elif [ "stop" = $1 ]; then
if [ 0 -ne $NUM ]; then
kill -9 $ID
fi
else
echo "No sush command '$1'"
fi
擴展
#!/bin/sh
function start() {
export MINIO_ETCD_ENDPOINTS="http://192.168.199.140:2379,http://192.168.199.141:2379,http://192.168.199.142:2379"
export MINIO_DOMAIN=domain.com
export MINIO_PUBLIC_IPS=192.168.199.142,192.168.199.143
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
nohup /opt/minio/minio server http://192.168.199.14{2...3}/data/minio/export{1...4} \
> /opt/minio/minio.log 2>&1 &
# > /dev/null 2>&1 &
}
NUM=`ps -C "minio" --no-header | wc -l`
ID=$(ps -ef | grep "minio" | grep -v "grep" | grep -v "sh" | awk '{print $2}')
if [ "start" = $1 ]; then
if [ 0 -eq $NUM ]; then
start
fi
elif [ "restart" = $1 ]; then
if [ 0 -ne $NUM ]; then
kill -9 $ID | start
else
start
fi
elif [ "stop" = $1 ]; then
if [ 0 -ne $NUM ]; then
kill -9 $ID
fi
else
echo "No sush command '$1'"
fi
相關鏈接
etcd簡介及集群安裝部署使用
物件存盤服務MinIO安裝部署分布式及Spring Boot專案實作檔案上傳下載
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/279511.html
標籤:其他
