minio分布式集群扩容

minio集群扩容简介

参考:https://docs.minio.io/docs/distributed-minio-quickstart-guide.html

minio默认支持集群无限扩容,通过在启动命令中指定新的set即可对现有分布式纠删码群集执行扩容。
在这里插入图片描述

官方扩容示例:

#创建集群
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...12}/export{1...16}

在扩容集群时用到了2组http://{...}的语法参数,所以旧集群以及扩容都必须使用这种语法形式创建,命令行中的每组server称为一个zone,此示例中有2 server pools,对于外部的写数据请求,minio server会首先查找可用空间多的zone,然后再在zone内选择set和disk drive。

注意:添加的每个zone必须具有与原始zone相同的set集大小,以便维持相同的数据冗余SLA。例如,如果您的第一个zone是8个磁盘,则可以添加每个server pools包含16、32或1024个磁盘的zone。您只需确保部署SLA是原始数据冗余SLA的倍数。

docker扩容示例

下面使用docker完整演示minio集群扩容的基本流程。

准备独立磁盘

准备4个节点,配置主机名hosts解析

cat > /etc/hosts <<EOF
192.168.93.40 minio-1
192.168.93.41 minio-2
192.168.93.42 minio-3
192.168.93.43 minio-4
EOF

注意:扩容原节点和新节点使用的目录不能是根磁盘路径,必须使用独立磁盘,否则扩容失败。

每个节点添加一块至多块独立磁盘,这里以添加一块/dev/sdb磁盘为例:

pvcreate /dev/sdb
vgcreate vg01 /dev/sdb
lvcreate -l 100%VG -n lv01 vg01

mkfs.xfs  /dev/vg01/lv01

mkdir -p /data/minio/

cat >> /etc/fstab <<EOF
/dev/mapper/vg01-lv01 /data/minio/             xfs     defaults        0 0
EOF

mount -a && df -h

每个节点创建2个挂载点目录

mkdir -p /data/minio/data{1...2}

创建新集群

使用minio-1、minio-2节点创建新集群,每个节点挂载2个目录,在minio-1和minio-2上执行:

docker run -d --name minio \
  --restart=always \
  --net=host \
  -e MINIO_ACCESS_KEY=minio \
  -e MINIO_SECRET_KEY=minio123 \
  -v /data/minio/data1:/data1 \
  -v /data/minio/data2:/data2 \
  minio/minio server \
  http://minio-{1...2}/data{1...2}

注意minio版本,部分版本存在bug扩容后无法在原桶写入数据,最新版本已解决。

配置客户端信息

mc config host add minio http://minio-1:9000 minio minio123

查看集群信息

[root@minio-1 ~]# mc admin info minio
●  minio-2:9000
   Uptime: 40 seconds 
   Version: 2021-01-08T21:18:21Z
   Network: 2/2 OK 
   Drives: 2/2 OK 

●  minio-1:9000
   Uptime: 41 seconds 
   Version: 2021-01-08T21:18:21Z
   Network: 2/2 OK 
   Drives: 2/2 OK 

4 drives online, 0 drives offline

上传一些数据,用于验证扩容后数据可正常使用:

mc mb minio/bucket01
mc cp * minio/bucket01

执行集群扩容

将minio-3、minio-4节点扩容进现有集群。

首先停止并删除现有minio服务,minio-1和minio-2执行以下命令:

docker stop minio && docker rm minio

重新在4个节点执行以下命令:

docker run -d --name minio \
  --restart=always \
  --net=host \
  -e MINIO_ACCESS_KEY=minio \
  -e MINIO_SECRET_KEY=minio123 \
  -v /data/minio/data1:/data1 \
  -v /data/minio/data2:/data2 \
  minio/minio server \
  http://minio-{1...2}/data{1...2} \
  http://minio-{3...4}/data{1...2}

查看mino日志,可以看到Formatting 2nd zone,创建了2个zone:

[root@minio-1 ~]# docker logs -f minio
......
Waiting for a minimum of 2 disks to come online (elapsed 1s)

Formatting 2nd pool, 1 set(s), 4 drives per set.
Waiting for all MinIO sub-systems to be initialized.. lock acquired
Verifying if 1 bucket is consistent across drives...
All MinIO sub-systems initialized successfully
Status:         8 Online, 0 Offline. 
Endpoint: http://192.168.93.40:9000  http://172.17.0.1:9000  http://172.18.0.1:9000  http://172.19.0.1:9000  http://127.0.0.1:9000               

Browser Access:
   http://192.168.93.40:9000  http://172.17.0.1:9000  http://172.18.0.1:9000  http://172.19.0.1:9000  http://127.0.0.1:9000              

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
Waiting for all MinIO IAM sub-system to be initialized.. lock acquired

查看集群信息,扩容成功

[root@minio-1 ~]# mc admin info minio
●  minio-2:9000
   Uptime: 36 seconds 
   Version: 2021-01-08T21:18:21Z
   Network: 4/4 OK 
   Drives: 2/2 OK 

●  minio-3:9000
   Uptime: 36 seconds 
   Version: 2021-01-08T21:18:21Z
   Network: 4/4 OK 
   Drives: 2/2 OK 

●  minio-4:9000
   Uptime: 36 seconds 
   Version: 2021-01-08T21:18:21Z
   Network: 4/4 OK 
   Drives: 2/2 OK 

●  minio-1:9000
   Uptime: 36 seconds 
   Version: 2021-01-08T21:18:21Z
   Network: 4/4 OK 
   Drives: 2/2 OK 

65 MiB Used, 1 Bucket, 6 Objects
8 drives online, 0 drives offline

查看之前上传的数据依然正常访问:

[root@minio-1 ~]# mc ls minio/bucket01
[2021-01-16 10:18:37 CST] 1.7KiB anaconda-ks.cfg
[2021-01-16 10:18:37 CST] 4.5MiB currentbuild.zip
[2021-01-16 10:18:37 CST] 2.6KiB docker-compose-secrets.yaml
[2021-01-16 10:18:37 CST]  60MiB minio-09.tar
[2021-01-16 10:18:40 CST] 330MiB minio.tar
[2021-01-16 10:18:38 CST] 1.7KiB minio:test
[2021-01-16 10:18:38 CST]   323B nohup.out
[2021-01-16 10:18:39 CST]  12MiB rclone-v1.53.3-linux-amd64.zip

原桶继续写入数据

mc cp * minio/bucket01

创建新桶并写入数据

mc mb minio/bucket02
mc cp * minio/bucket02

在这里插入图片描述

清理minio集群

docker stop minio && docker rm minio && rm -rf /data/minio/*
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值