Minio搭建分布式集群

首先仔细阅读官方文档:
image.png
这里直接解释这句话,官方给出的说法是,minio使用的磁盘必须是干净的,但是经过我测试发现,只要minio的存储目录时干净的即可,并不需要挂载磁盘来部署。

原因:这是我猜的,因为目录下有:image.png
.minio.sys的文件夹,我觉得原理是和.git一样的道理,就是告诉系统,该文件夹下的内容由minio管理了,所以要求目录是干净的

编写启动脚本时,直接用vi命令写入,我测试的时候在windows系统编写完以后上传启动,然后报错,可能是编码格式有问题,所以直接在虚拟机上vi编辑即可。

image.png
通俗的解释一下,就是官方建议起码要搭建一个四快盘的集群,具体配置几台机器看自己需求确定,比如:
一台机器四块硬盘
二台机器两块硬盘
四台机器一块硬盘

有三块在线,读取写入都可以进行,有两块在线,可以保证能读取,但不能写入,若只剩下一块,则读写都不可进行

步骤一:创建四台虚拟机、配置网卡与ip

过程百度

步骤二:下载minio的二进制文件

详见:https://www.yuque.com/alexzhangyaomin/eoaqvb/tg2t9g

步骤三:配置环境

因为minio默认的端口是9000,所以要提前开启9000端口

  1. firewall-cmd --zone=public --add-port=9000/tcp --permanent
  2. firewall-cmd --reload

修改/etc/hosts,更新每台虚拟机的hostname与ip关系

  1. vi /etc/hosts
  2. 192.168.19.129 minio-node-1
  3. 192.168.19.131 minio-node-2
  4. 192.168.19.132 minio-node-3
  5. 192.168.19.133 minio-node-4

如果不方便修改ip与hostname的对应,则这步可省略

修改系统文件最大数

  1. echo "* soft nofile 65535" >> /etc/security/limits.conf
  2. echo "* hard nofile 65535" >> /etc/security/limits.conf

步骤四:准备启动!!!

给每台虚拟机创建2个存储目录

  1. mkdir /opt/resouse1
  2. mkdir /opt/resouse2

配置用户名与密码到环境变量

  1. export MINIO_ACCESS_KEY=<USERNAME>
  2. export MINIO_SECRET_KEY=<PASSWORD>

启动minio server

  1. minio server http://minio-node-{1...4}/opt/minio/resouse{1...2}

如果没有设置ip与hostname的对应,启动命令要变成(根据自己的情况修改):

  1. minio server http://192.168.1.11/export1 http://192.168.1.12/export2 \
  2. http://192.168.1.13/export3 http://192.168.1.14/export4 \
  3. http://192.168.1.15/export5 http://192.168.1.16/export6 \
  4. http://192.168.1.17/export7 http://192.168.1.18/export8

当然,这两步可以写到一个脚本里,然后在四台虚拟机分别执行该脚本
查看日志(需要等待一会,可能是minio向各个节点发送心跳包,确认连接通了才可以):

  1. cat minio.log

image.png

根据ip+9000即可访问任意节点~~~~

下一篇说一下如何整合springboot

为了方便,这里贴一个启动脚本

  1. export MINIO_ACCESS_KEY=username
  2. export MINIO_SECRET_KEY=password
  3. nohup ./minio server http://minio-node-{1...4}/opt/minio/resouse{1...2} >> minio.log 2>&1 &