注:集群为rpm安装

目录

一、Minio是什么

二、部署Minio

1.单机部署

2.集群部署

1、准备

1.准备四台干净的机器,做实验我使用的是4台初始化的vmware虚拟机,本身20G的磁盘空间大小,增加四块磁盘,之后需要四块磁盘进行挂载,大小5G(做实验可以不用那么大,大于1G即可)。

2.做完上述磁盘之后启动虚拟机,第一步先关防火墙 ,格式化磁盘并挂载

2、部署 

 3.启动

4.配置负载均衡

3.容器部署

总结


一、Minio是什么

Minio 是一个基于 Apache License v2.0 开源协议对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

Minio 是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。Minio 不仅提供了服务器、Web 访问、客户端,还提供了 Docker 安装,各种语言的 SDK、实例、实战秘籍等等,支持分布式部署。

特点:

1.高性能:Minio 支持一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

2.可扩展:不同 Minio 集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心

3.云原生:容器化、基于 K8S 的编排、多租户支持。

4.Amazon S3 兼容。

5.存储多种后端。

6.SDK 支持:有类似 Java、Python 或 Go 等语言的 sdk 支持。

7.Lambda 计算:Minio 服务器通过其兼容 AWS SNS / SQS 的事件通知服务触发 Lambda 功能。

8.有图形化操作界面

9.功能简单

10.支持纠删码:Minio 使用纠删码、Checksum 来防止硬件错误和静默数据污染。

有兴趣的同学可以看一下官网简介MinIO | 企业级、高性能对象存储

二、部署Minio

1.单机部署

下载地址:中国镜像加速站

直接下载地址:MinIO下载 | 中国镜像下载加速站

#创建数据磁盘目录(放哪具体看磁盘情况)
mkdir -p  /data/minio/            #存储目录
mkdir /usr/local/minio


#将下载的minio包放到/usr/local/minio下并修改权限
chmod +x minio

vim  start-minio.sh

#!/bin/bash
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=minio@123456
nohup /usr/local/minio/minio server /data/minio/ --console-address ":9001"   > /usr/local/minio/nohup-minio.log 2>&1 &

chmod +x start-minio.sh 

sh start-minio.sh 

2.集群部署

1、准备

搭建一个四节点十六个Drive的最低配高可用MinIO集群

                ip                        名称
192.168.40.201minio-1
192.168.40.202minio-2
192.168.40.203minio-3
192.168.40.204minio-4
192.168.40.66nginx
1.准备四台干净的机器,做实验我使用的是4台初始化的vmware虚拟机,本身20G的磁盘空间大小,增加四块磁盘,之后需要四块磁盘进行挂载,大小5G(做实验可以不用那么大,大于1G即可)。

过程如下:

2.做完上述磁盘之后启动虚拟机,第一步先关防火墙 ,格式化磁盘并挂载

fdisk -l 看到我们增加的四块磁盘,分别为sdb,sdc,sdd,sde,如下图所示 

 对四块磁盘进行格式化

#我做实验的时候没有加-L 的,这边我推荐大家还是加上
mkfs.xfs /dev/sdb -L DISK1
mkfs.xfs /dev/sdc -L DISK2
mkfs.xfs /dev/sdd -L DISK3
mkfs.xfs /dev/sde -L DISK4

 创建文件作为挂载源

mkdir /minio1
mkdir /minio2
mkdir /minio3
mkdir /minio4

#使用mount进行挂载
mount /dev/sdb /minio1
mount /dev/sdc /minio2
mount /dev/sdd /minio3
mount /dev/sde /minio4

df -Th进行查看 

#设置开机自动挂载
vim /etc/fstab



/dev/sdb                                  /minio1                 xfs     defaults,noatime 0 2
/dev/sdc                                  /minio2                 xfs     defaults,noatime 0 2
/dev/sdd                                  /minio3                 xfs     defaults,noatime 0 2
/dev/sde                                  /minio4                 xfs     defaults,noatime 0 2

2、部署 

二进制包下载地址:https://dl.min.io/server/minio/release/linux-amd64/

最新稳定版rpm包地址:单节点单硬盘部署MinIO — MinIO中文文档 | MinIO Linux中文文档

 

#这边我下载的是rpm包,安装之后可以systemctl去启动嘛,
#感兴趣的可以下载二进制包,链接地址在上面
#这里下载不是最新稳定rpm包
wget https://dl.min.io/server/minio/release/linux-amd64/minio-20230907020502.0.0.x86_64.rpm     -O minio.rpm


#同步一下四台机器的时间,要一致
yum install ntp  -y
ntpdate  ntp.aliyun.com

 下载完成如下,确保四台机器都有

#安装(下面的操作四台机器都要做哦)
rpm -i minio.rpm

#创建启动用户
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /minio1 /minio2 /minio3 /minio4

有的rpm包自带/etc/default/minio,下载完成后先find找一下

find  /etc  -name  minio 

没有的话自己写一个!

下面是官方给的文件配置

# Set the hosts and volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following example covers four MinIO hosts
# with 4 drives each at the specified hostname and drive locations.
# The command includes the port that each MinIO server listens on
# (default 9000)
# 这写的是文件磁盘的位置 因为我们是集群节点是201-204 这边是一种池化写法
MINIO_VOLUMES="https://192.168.40.{201..204}:9000/minio{1..4}"

# Set all MinIO server options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces. The default behavior is dynamic
# port selection.
# 固定静态端口
MINIO_OPTS="--console-address :9001"

# Set the root username. This user has unrestricted permissions to
# perform S3 and administrative API operations on any resource in the
# deployment.
#
# Defer to your organizations requirements for superadmin user name.
# 登录账号
MINIO_ROOT_USER=minioadmin

# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.
# 登录密码
MINIO_ROOT_PASSWORD=minioadmin

# Set to the URL of the load balancer for the MinIO deployment
# This value *must* match across all MinIO servers. If you do
# not have a load balancer, set this value to to any *one* of the
# MinIO hosts in the deployment as a temporary measure.
#负载均衡地址,没有配置就注释掉
#MINIO_SERVER_URL="https://192.168.40.201:9000"

 3.启动

#四个节点依次运行
systemctl start minio

访问任意节点,出现下图即为成功! 

验证

我们在40.201上创建一个桶,并上传文件

 

 

 40.203上也有,这样即为成功!!!

 

4.配置负载均衡

nginx的版本我用的是yum安装的1.24稳定版,下载地址如下

nginx:Linux 软件包

 

 upstream我并没有配置负载均衡算法,采用的是默认的轮询,需要的可以自己加哦

#代理服务器
upstream minio_api {
        server 192.168.40.201:9000;
        server 192.168.40.202:9000;
        server 192.168.40.203:9000;
        server 192.168.40.204:9000;
}
upstream minio_console {
        server 192.168.40.201:9001;
        server 192.168.40.202:9001;
        server 192.168.40.203:9001;
        server 192.168.40.204:9001;
}
server{
    listen       9998;
    server_name  192.168.40.66;

    ignore_invalid_headers off;
    client_max_body_size 0;
    proxy_buffering off;

    location / {
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;

        proxy_connect_timeout 300;
        proxy_http_version 1.1;
        chunked_transfer_encoding off;
        proxy_ignore_client_abort on;

        proxy_pass http://minio_api;
    }
}
server{
    listen       9999;
    server_name  192.168.40.66;

    ignore_invalid_headers off;
    client_max_body_size 0;
    proxy_buffering off;

    location / {
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;

        proxy_connect_timeout 300;
        proxy_http_version 1.1;
        chunked_transfer_encoding off;
        proxy_ignore_client_abort on;

        proxy_pass http://minio_console;
    }
}

 访问如下

3.容器部署

docker安装:

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

 minio部署:

#拉取镜像
docker pull minio/minio

#查看镜像
docker images

#创建挂载目录
mkdir -p /etc/docker/minio/data

#启动镜像
docker run -p 9000:9000 -p 9001:9001 \
 --name minio \
 -d --restart=always \
 -e "MINIO_ACCESS_KEY=minioadmin" \
 -e "MINIO_SECRET_KEY=minioadmin" \
 -v /etc/docker/minio/data:/data \
 minio/minio server \
 /data --console-address ":9001" -address ":9000"

访问地址:ip:9000

 

 登录上去之后我们创建桶,上传试一下

创建和上传都成功! 


总结

欢迎大家多多交流!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐