1,环境及详细
环境机器:
192.168.8.10 | minio1 |
192.168.8.20 | minio2 |
192.168.8.30 | minio3 |
架构
由于是非常轻量级的软件,所以架构上也没有这么复杂,他使用操作系统的文件系统作为存储介质,我们在向任意节点写数据的时候,minIO会自动同步数据到另外的节点,而机制叫做erasure code(纠删码)来保证集群的稳定,保证数据可用,所以我们建议至少使用4个节点来构建集群。
如果一个N节点的分布式MinIO,只要有N/2节点在线,数据就是安全的。但是要保证至少有N/2+1个节点来创建新的对象。比如:我们的集群有3个节点,每个节点上一块盘,就算有1两个节点宕机,这个集群仍然是可读的,但是,我们需要2个节点才能让集群写数据。这就是为什么我们要有3个节点来构建集群。
早期版本中,每个租户至少有4个盘,最多有16个盘,这个是纠删码的限制,而新版本中是没有限制的。如果想要实现多租户,就需要借助于kubernetes来构建多个MinIO实例,或者启动多个实例来实现多租户。也就是说,一个进程对应一个实例,一个实例对应一个租户。
2,磁盘挂载及minio下载
minio下载地址:https://dl.min.io/server/minio/release/linux-amd64/minio
创建磁盘挂载目录 (磁盘挂载非常重要一定要挂载)
mkdir /data/minio_data -p
首先对添加的磁盘进行分区
fdisk /dev/sdb
开始对sdb分区
m 显示命令列表
p 显示磁盘分区同fdisk -l
n 新增分区
d 删除分区
w 写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间,最后输入w写入分区并退出,若不保存退出输入q
格式化磁盘
mkfs.xfs -f /dev/sdb1
挂载磁盘
mount /dev/sdb1 /data/minio_data
查看是否挂载成功
df -h
lsblk
3,环境准备
关闭防火墙
systemctl stop firewalld
setenforce 0
修改主机名
192.168.8.10执行
hostnamectl set-hostname minio1
bash
192.168.8.20执行
hostnamectl set-hostname minio2
bash
192.168.8.30执行
hostnamectl set-hostname minio3
bash
修改hosts文件,实现互通
每台机器都要修改
cat >> /etc/hosts << EOF
192.168.8.10 minio1
192.168.8.20 minio2
192.168.8.30 minio3
EOF
4,环境搭建
创建minio启动脚本和配置文件目录
mkdir -p /data/minio/run && mkdir -p /etc/minio
mkdir /data/minio/run/log -p
将下载的镜像拖拽到/data/minio/run
cd /data/minio/run
ls
编写集群启动脚本
vim run.sh
#!/bin/bash
#export MINIO_ACCESS_KEY=minio
#export MINIO_SECRET_KEY=miniostorage
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=miniostorage
/data/minio/run/minio server --config-dir /etc/minio --address ":9000" --console-address ":9001" \
http://192.168.159.137/data/minio_data/data1 http://192.168.8.10/data/minio_data/data2 \
http://192.168.159.138/data/minio_data/data1 http://192.168.8.20/data/minio_data/data2 \
http://192.168.159.139/data/minio_data/data1 http://192.168.8.30/data/minio_data/data2 > log/minio_server.log
-
“MINIO_ACCESS_KEY”为用户名,“MINIO_SECRET_KEY”为密码,密码不能设置过于简单,不然minio会启动失败
创建好/data/minio/run结构
systemd配置文件minio.service
cat > /usr/lib/systemd/system/minio.service <<EOF
[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
EOF
设置权限
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /data/minio/run/minio && chmod +x /data/minio/run/run.sh
其他两台机器依次按照上面步骤进行参数不变
注意:查看其他两台服务器于当前服务器时间是否同步,如果不同步会失败
依次启动minio,每台都要启动
systemctl start minio
systemctl status minio
cd /data/minio/run/log
tail -100 minio_server.log
直接访问:http://192.168.8.10:9001
然后依次开启防火墙进行端口放通
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
再次访问即可
在192.168.8.10的minio创建一个桶,在上面上传一个文件,再访问192.168.8.20的minio,查看信息已同步则环境搭建成功
环境搭建完成