Minio单机和集群以及Docker部署
注:集群为rpm安装
目录
1.准备四台干净的机器,做实验我使用的是4台初始化的vmware虚拟机,本身20G的磁盘空间大小,增加四块磁盘,之后需要四块磁盘进行挂载,大小5G(做实验可以不用那么大,大于1G即可)。
2.做完上述磁盘之后启动虚拟机,第一步先关防火墙 ,格式化磁盘并挂载
一、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
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.201 | minio-1 |
192.168.40.202 | minio-2 |
192.168.40.203 | minio-3 |
192.168.40.204 | minio-4 |
192.168.40.66 | nginx |
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稳定版,下载地址如下
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
登录上去之后我们创建桶,上传试一下
创建和上传都成功!
总结
欢迎大家多多交流!
更多推荐
所有评论(0)