目录
一,分布式Minio概述
1.1概念
1.2搭建流程简述
二,环境准备
2.1节点环境
2.2节点磁盘挂载
2.2.1硬盘分区
2.2.2 格式化磁盘分区
2.2.3磁盘目录挂载
三,集群部署
3.1 minio安装
3.1.1 minion目录创建
3.1.2minio安装包下载
3.1.3集群启动文件配置
3.1.4权限修改
3.1.5启动集群
四,minio节点故障恢复数据
分布式Minio可以在多个服务器节点上,多块硬盘上共享存储空间,提供对象存储服务。分布式Minio由于多节点,避免了单点故障,保证文件存储的高可用。
搭建分布式minio,主流程就是各个节点都要写一个相同的启动脚本,做一些配置,比如用户名,密码和文件存储的位置。然后依次去各个节点启动minio服务,启动的时候就会按照这个脚本的配置搭建分布式minio服务。
注意
分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,即:用户名和密码
分布式Minio存放数据的磁盘目录必须是空目录
分布式Minio官方建议生产环境最少4个节点,因为有N个节点,得至少保证有N/2的节点才能可读,保证至少N/2+1的节点才能可写。这里只是作演示搭建,只有2个节点
分布式Minio节点时间差不能差距太多,最好同一内网
分布式Minio会在每个磁盘都存一份数据文件保证数据的可靠性与安全性
主流程
准备虚拟机:2台centos7(配置好网络,保证2台虚拟机互通)
虚拟器安装和网络配置
192.168.136.123
192.168.136.124
准备搭建minio相关文件
minio:minio服务器文件。下载地址:minio
mc:mc客户端文件。这个用于执行minio命令行,搭建时候可不用。下载地址:mc
run.sh:minion分布式搭建启动脚本。手动创建,里面配置内容稍后介绍
节点1
l 输入命令fdisk /dev/sdb
l 输入n 创建新的分区
l 输入p回车
l 默认分区输入1,回车,指定存储空间大小+10240M
l 输入W回车保存
l 分区/dev/sdb2与上述/dev/sdb1分区相同
节点2:192.168.136.131磁盘分区与上述节点1相同重复执行节点1分区命令
[root@minio1 minio]# sudo mkfs -t ext4 /dev/sdb1
[root@minio1 minio]# sudo mkfs -t ext4 /dev/sdb2
[root@minio2 minio]# sudo mkfs -t ext4 /dev/sdb1
[root@minio2 minio]# sudo mkfs -t ext4 /dev/sdb2
[root@minio1 minio]# mount /dev/sdb1 /data/minio/data1
[root@minio1 minio]# mount /dev/sdb1 /data/minio/data2
[root@minio2 minio]# mount /dev/sdb1 /data/minio/data1
[root@minio2 minio]# mount /dev/sdb1 /data/minio/data2
查看挂载成功df –h
设置分区在系统重启后自动挂载
在/etc/fstab文件末尾添加
/dev/sdb1 /data/minio/data1/ ext4 defaults 0 0
/dev/sdb2 /data/minio/data2/ ext4 defaults 0 0
mount -a 重新加载配置
以上指令操作节点1,2均同步执行
各节点均创建minio目录
mkdir -p /data/minio/{run,data1,data2} && mkdir -p /etc/minio
下载或者上传下载好的minio二进制文件
官网下载地址:
https://dl.min.io/server/minio/release/linux-amd64/minio
本文采用wget命令安装
下载minio到/data/minio/run目录下
cd /data/minio/run
wget https://dl.min.io/server/minio/release/linux-amd64/minio
Minio默认9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口
注意 :
l MINIO_ROOT_USER:用户名,长度最小是5个字符
l MINIO_ROOT_PASSWORD:密码,密码不能设置过于简单,不然minio会启动失败,长度最小是8个字符
l –config-dir:指定集群配置文件目录
创建minio集群启动文件
vim /data/minio/run/minio-run.sh
集群节点192.168.136.123内容为
[root@minio2 minio]# cat run.sh
#!/bin/bash
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=adminbfd123
/data/minio/run/minio server --config-dir /etc/minio \
--address "0.0.0.0:9029" --console-address ":9000" \
http://192.168.136.130/data/minio/data1 http://192.168.136.130/data/minio
/data2 \
http://192.168.136.131/data/minio/data1 http://192.168.136.131/data/minio
/data2 \
集群节点192.168.136.124内容为
[root@minio2 minio]# cat run.sh
#!/bin/bash
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=adminbfd123
/data/minio/run/minio server --config-dir /etc/minio \
--address "0.0.0.0:9029" --console-address ":9000" \
http://192.168.136.130/data/minio/data1 http://192.168.136.130/data/minio
/data2 \
http://192.168.136.131/data/minio/data1 http://192.168.136.131/data/minio
/data2 \
4、创建Minio.server,将minio加入系统服务
vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=MinIO High Performance Object Storage — MinIO Object Storage for Kubernetes
[Service]
WorkingDirectory=/data/minio/run/
ExecStart=/data/minio/run/minio-run.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
修改配置文件后需要重加载配置
systemctl daemon-reload
节点1与节点2执行以下命令
chmod +x /usr/lib/systemd/system/minio.service
chmod +x /data/minio/run/minio
chmod +x /data/minio/run.sh
节点1和节点2逐个启动
注意:启动集群时一定要检查自己的防火墙是否是关闭状态,如果不是关闭状态,则会出错
systemctl start minio
systemctl enable minio
查看集群状态
systemctl status minio.service
查看启动日志:journalctl -u minio.service –f
http://节点IP:9000/
minio集群有纠删码机制,即使在集群数据盘挂掉一半的情况下,你集群中数据也是安全的。但是如果集群想要正常读写你需要有N/2+1的节点数才可以正常读写如果现有minio集群由于节点损坏或节点物理故障需更换节点时,请直接进行更换节点。
注意事项
如果更换节点旧节点数据量较大,在节点更换时可以正常使用请先备份原有节点数据到新节点,避免同步的数据过多导致网络带宽被占用
如果数据量小,可以不进行备份数据,直接进行更换,节点启动完毕会自动同步数据
如果节点挂掉时集群还在读写数据,会导致集群挂掉的节点与其他minio节点数据不同,这里在恢复节点后需修复数据(自动修复,无需人为干预)
最好部署minio集群时使用hosts文件做地址解析,避免更换节点时修改minio配置文件参数