2024-03-20
Linux
00

目录

Minio集群部署
一,分布式Minio概述
1.1概念
1.2搭建流程简述
二,环境准备
2.1节点环境
2.2节点磁盘挂载
2.2.1硬盘分区
2.2.2 格式化磁盘分区
2.2.3磁盘目录挂载
三,集群部署
3.1 minion目录创建
3.2 minio安装包下载
3.3 集群启动文件配置
3.4 创建Minio.server
3.5 权限修改
3.6 启动集群
3.7 登录
四,minio节点故障恢复数据

Minio集群部署

一,分布式Minio概述

1.1概念

分布式minio可以在多个服务器节点上,多块硬盘上共享存储空间,提供对象存储服务。分布式minio由于多节点,避免了单点故障,保证文件存储的高可用。

1.2搭建流程简述

搭建分布式minio,主流程就是各个节点都要写一个相同的启动脚本,做一些配置,比如用户名,密码和文件存储的位置。然后依次去各个节点启动minio服务,启动的时候就会按照这个脚本的配置搭建分布式minio服务。

注意:

  • 分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,即:用户名和密码

  • 分布式Minio存放数据的磁盘目录必须是空目录

  • 分布式Minio官方建议生产环境最少4个节点,因为有N个节点,得至少保证有N/2的节点才能可读,保证至少N/2+1的节点才能可写。这里只是作演示搭建,只有2个节点

  • 分布式Minio节点时间差不能差距太多,最好同一内网

  • 分布式Minio会在每个磁盘都存一份数据文件保证数据的可靠性与安全性

二,环境准备

2.1节点环境

准备虚拟机:3台centos7(配置好网络,保证3台虚拟机互通)

虚拟器安装和网络配置

192.168.10.101

192.168.10.102

192.168.10.103 准备搭建minio相关文件

minio:minio服务器文件。下载地址:minio

mc:mc客户端文件。这个用于执行minio命令行,搭建时候可不用。下载地址:mc

run.sh:minion分布式搭建启动脚本。手动创建,里面配置内容稍后介绍

2.2节点磁盘挂载

所有节点

2.2.1硬盘分区

fdisk /dev/sdb 输入n 创建新的分区 输入p回车 默认分区输入1,回车,指定存储空间大小+10240M 输入W回车保存

分区/dev/sdb2与上述/dev/sdb1分区相同

[root@minio1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 100G 0 disk ├─sdb1 8:17 0 10G 0 part └─sdb2 8:18 0 10G 0 part sr0 11:0 1 4.4G 0 rom

2.2.2 格式化磁盘分区

[root@minio1 ~]# mkfs -t ext4 /dev/sdb1 [root@minio1 ~]# mkfs -t ext4 /dev/sdb2 [root@minio2 ~]# mkfs -t ext4 /dev/sdb1 [root@minio2 ~]# mkfs -t ext4 /dev/sdb2 [root@minio3 ~]# mkfs -t ext4 /dev/sdb1 [root@minio3 ~]# mkfs -t ext4 /dev/sdb2

2.2.3磁盘目录挂载

mkdir /data{1,2} [root@minio1 ~]# mount /dev/sdb2 /data1 [root@minio1 ~]# mount /dev/sdb1 /data2 [root@minio2 ~]# mount /dev/sdb2 /data1 [root@minio2 ~]# mount /dev/sdb1 /data2 [root@minio3 ~]# mount /dev/sdb2 /data1 [root@minio3 ~]# mount /dev/sdb1 /data2

查看挂载成功df –h

[root@minio1 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 979M 0 979M 0% /dev tmpfs 991M 0 991M 0% /dev/shm tmpfs 991M 9.6M 981M 1% /run tmpfs 991M 0 991M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 1.7G 16G 10% / /dev/sda1 1014M 169M 846M 17% /boot tmpfs 199M 0 199M 0% /run/user/0 /dev/sdb1 9.8G 37M 9.2G 1% /data1 /dev/sdb2 9.8G 37M 9.2G 1% /data2

设置分区在系统重启后自动挂载

在/etc/fstab文件末尾添加

/dev/sdb1 /data1/ ext4 defaults 0 0 /dev/sdb2 /data2/ ext4 defaults 0 0

重新加载配置

mount -a

三,集群部署

3.1 minion目录创建

mkdir -p /data/minio

3.2 minio安装包下载

下载或者上传下载好的minio二进制文件

官网下载地址:

https://dl.min.io/server/minio/release/linux-amd64/minio

本文采用wget命令安装

下载minio到/data/minio目录下

cd /data/minio wget https://dl.min.io/server/minio/release/linux-amd64/minio

3.3 集群启动文件配置

Minio默认9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口

注意 :

  • MINIO_ROOT_USER:用户名,长度最小是5个字符

  • MINIO_ROOT_PASSWORD:密码,密码不能设置过于简单,不然minio会启动失败,长度最小是8个字符

  • –config-dir:指定集群配置文件目录

创建minio集群启动文件

vim /data/minio/run.sh

集群节点192.168.10.101内容为

#!/bin/bash export MINIO_ROOT_USER=admin export MINIO_ROOT_PASSWORD=adminbfd123 /data/minio/minio server --config-dir /etc/minio \ --address "0.0.0.0:9029" --console-address ":9000" \ http://192.168.10.101/data1 http://192.168.10.101/data2 \ http://192.168.10.102/data1 http://192.168.10.102/data2 \ http://192.168.10.103/data1 http://192.168.10.103/data2 \

集群节点192.168.10.102内容为

#!/bin/bash export MINIO_ROOT_USER=admin export MINIO_ROOT_PASSWORD=adminbfd123 /data/minio/minio server --config-dir /etc/minio \ --address "0.0.0.0:9029" --console-address ":9000" \ http://192.168.10.101/data1 http://192.168.10.101/data2 \ http://192.168.10.102/data1 http://192.168.10.102/data2 \ http://192.168.10.103/data1 http://192.168.10.103/data2 \

集群节点192.168.10.103内容为

#!/bin/bash export MINIO_ROOT_USER=admin export MINIO_ROOT_PASSWORD=adminbfd123 /data/minio/minio server --config-dir /etc/minio \ --address "0.0.0.0:9029" --console-address ":9000" \ http://192.168.10.101/data1 http://192.168.10.101/data2 \ http://192.168.10.102/data1 http://192.168.10.102/data2 \ http://192.168.10.103/data1 http://192.168.10.103/data2 \

3.4 创建Minio.server

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 ExecStart=/data/minio/run.sh Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target

修改配置文件后需要重加载配置

systemctl daemon-reload

3.5 权限修改

所有节点执行以下命令

chmod +x /usr/lib/systemd/system/minio.service chmod +x /data/minio/minio chmod +x /data/minio/run.sh

3.6 启动集群

逐个节点启动

注意:启动集群时一定要检查自己的防火墙是否是关闭状态,如果不是关闭状态,则会出错

systemctl start minio systemctl enable minio

查看集群状态

systemctl status minio.service
[root@minio1 minio]# systemctl status minio.service ● minio.service - Minio service Loaded: loaded (/usr/lib/systemd/system/minio.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2024-03-21 20:28:16 CST; 52s ago Main PID: 11613 (run.sh) CGroup: /system.slice/minio.service ├─11613 /bin/bash /data/minio/run.sh └─11614 /data/minio/minio server --config-dir /etc/minio --address 0.0.0.0:9029 --console-address... Mar 21 20:28:55 minio1 run.sh[11613]: Copyright: 2015-2024 MinIO, Inc. Mar 21 20:28:55 minio1 run.sh[11613]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html> Mar 21 20:28:55 minio1 run.sh[11613]: Version: RELEASE.2024-03-15T01-07-19Z (go1.21.8 linux/amd64) Mar 21 20:28:55 minio1 run.sh[11613]: API: http://0.0.0.0:9029 Mar 21 20:28:55 minio1 run.sh[11613]: WebUI: http://192.168.10.101:9000 http://127.0.0.1:9000 Mar 21 20:28:55 minio1 run.sh[11613]: Docs: https://min.io/docs/minio/linux/index.html Mar 21 20:28:55 minio1 run.sh[11613]: Use `mc admin info` to look for latest server/drive info Mar 21 20:28:55 minio1 run.sh[11613]: Status: 2 Online, 4 Offline. Mar 21 20:28:55 minio1 run.sh[11613]: STARTUP WARNINGS: Mar 21 20:28:55 minio1 run.sh[11613]: - Detected Linux kernel version older than 4.0.0 release, there a...mance Hint: Some lines were ellipsized, use -l to show in full.

查看启动日志

journalctl -u minio.service –f
[root@minio1 minio]# journalctl -u minio.service –f Failed to add match '–f': Invalid argument Failed to add filters: Invalid argument [root@minio1 minio]# journalctl -u minio.service -f -- Logs begin at Thu 2024-03-21 19:57:13 CST. -- Mar 21 20:28:55 minio1 run.sh[11613]: Copyright: 2015-2024 MinIO, Inc. Mar 21 20:28:55 minio1 run.sh[11613]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html> Mar 21 20:28:55 minio1 run.sh[11613]: Version: RELEASE.2024-03-15T01-07-19Z (go1.21.8 linux/amd64) Mar 21 20:28:55 minio1 run.sh[11613]: API: http://0.0.0.0:9029 Mar 21 20:28:55 minio1 run.sh[11613]: WebUI: http://192.168.10.101:9000 http://127.0.0.1:9000 Mar 21 20:28:55 minio1 run.sh[11613]: Docs: https://min.io/docs/minio/linux/index.html Mar 21 20:28:55 minio1 run.sh[11613]: Use `mc admin info` to look for latest server/drive info Mar 21 20:28:55 minio1 run.sh[11613]: Status: 2 Online, 4 Offline. Mar 21 20:28:55 minio1 run.sh[11613]: STARTUP WARNINGS: Mar 21 20:28:55 minio1 run.sh[11613]: - Detected Linux kernel version older than 4.0.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x.x linux kernel version for best performance

3.7 登录

http://任一IP:9000/

image7-1.png

四,minio节点故障恢复数据

minio集群有纠删码机制,即使在集群数据盘挂掉一半的情况下,你集群中数据也是安全的。但是如果集群想要正常读写你需要有N/2+1的节点数才可以正常读写如果现有minio集群由于节点损坏或节点物理故障需更换节点时,请直接进行更换节点。

注意事项:

  • 如果更换节点旧节点数据量较大,在节点更换时可以正常使用请先备份原有节点数据到新节点,避免同步的数据过多导致网络带宽被占用

  • 如果数据量小,可以不进行备份数据,直接进行更换,节点启动完毕会自动同步数据

  • 如果节点挂掉时集群还在读写数据,会导致集群挂掉的节点与其他minio节点数据不同,这里在恢复节点后需修复数据(自动修复,无需人为干预)

最好部署minio集群时使用hosts文件做地址解析,避免更换节点时修改minio配置文件参数

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:XiaoWang0777

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

本网站由 又拍云Logo 提供CDN加速/云存储服务 萌ICP备20240377号