Minio简单配置及使用说明

发布于:2025-07-09 ⋅ 阅读:(18) ⋅ 点赞:(0)

1. 概述

  • 搭建一套Minio集群并提供服务。集群采用6台服务器,每台8块7.2K 2T机械硬盘,EC:4,容量64T。
  • 网络受限于千兆网络,每台服务器做了3网卡链路聚合(3G,src-dst-ip),接近机械硬盘写入极限速度。
  • 集群代理使用Openresty和Keepalived,配置了双活代理和基于IP或sessionid的hash负载均衡。
  • 研发使用可直接看最后一部分 6. S3 API
    在这里插入图片描述

2. 参考

MinIO Linux中文文档

3. 服务器

  1. 6台服务器组成Minio集群
  • 172.29.2.1 Ubuntu24.04, 8块2T数据盘(7.2K)
  • 172.29.2.2 Ubuntu24.04, 8块2T数据盘(7.2K)
  • 172.29.2.3 Ubuntu24.04, 8块2T数据盘(7.2K)
  • 172.29.2.4 Ubuntu24.04, 8块2T数据盘(7.2K)
  • 172.29.2.5 Ubuntu24.04, 8块2T数据盘(7.2K)
  • 172.29.2.6 Ubuntu24.04, 8块2T数据盘(7.2K)
  1. 2台服务器Openresty+Keepalived代理Minio集群
  • 172.29.111.2 Centos7.9 Openresty+Keepalived,虚拟IP 172.29.100.101
  • 172.29.112.1 Centos7.9 Openresty+Keepalived,虚拟IP 172.29.100.102
  1. DNS轮询方式解析两个虚拟IP
    cluster01.minio.xunku.in. IN A 172.29.100.101
    cluster01.minio.xunku.in. IN A 172.29.100.102

4. 网络

  1. Minio集群6台服务器每台3G带宽
  • 3块网卡做端口聚合
  • 链路聚合采用src-dst-ip方式(使用的交换机不支持src-dst-port方式)
  1. 代理服务器每台1G带宽
  • 两台DNS轮询,总带宽2G
  • 可通过增加代理服务器数量扩容带宽

5. 集群使用

5.1 管理端登录

  1. 管理端(以下IP均可访问)
  • http://172.29.100.101:9001/login
  • http://172.29.100.102:9001/login
  • http://172.29.111.2:9001/login
  • http://172.29.112.1:9001/login

5.2 创建Bucket

  1. 创建Bucket(每个项目专用,严禁生产与非生产混用)
  • 生产使用-prod后缀
  • 测试使用-test后缀
  • 开发使用dev后缀
    在这里插入图片描述
    在这里插入图片描述

5.3 创建Access Key

  1. 创建Access Key(每个项目专用,严禁生产与非生产混用)
    在这里插入图片描述
    在这里插入图片描述
  • Access Key和Secret Key务必妥善保存(只在创建时出现一次)
  • Statement 只保留S3部分,对应的Resource限定同一项目下的Bucket
  • Name、Description、Comments应能准确表述用途

5.4 安装客户端命令行工具(Linux)

  1. 下载到指定路径下
curl https://dl.minio.org.cn/client/mc/release/linux-amd64/mc   --create-dirs   -o /public/software/minio/minio-binaries/mc
  1. 添加可执行权限
chmod +x /public/software/minio/minio-binaries/mc
  1. 添加到默认搜索路径中
ln -s /public/software/minio/minio-binaries/mc /usr/bin/

5.5 命令行工具测试

参考:官方文档-MinIO客户端

  1. 创建minio别名
    别名能简化命令行工具所在主机连接Minio集群,不用每次都输入key
# 在客户端工具所在服务器上创建“别名”,方便后续直接使用
mc alias set tobacco http://cluster01.minio.xunku.in:9000
# 输入Access key和Secret Key
Enter Access Key: tobacco-key
Enter Secret Key: 
Added `tobacco` successfully.
  1. 查看已创建的别名
# 查看
mc alias list | grep -A15 tobacco
tobacco  
  URL       : http://cluster01.minio.xunku.in:9000
  AccessKey : tobacco-key
  SecretKey : VdWNxe4TpDX78NupHetjJLP5zvQpW0XJybmZdvLS
  API       : s3v4
  Path      : auto
  Src       : /root/.mc/config.json
  1. 准备大文件(准备测试上传)
du -sh mysql_tobacco_20250701180001.tar.gz
4.4G    mysql_tobacco_20250701180001.tar.gz
  1. 测试上传功能及传输时间
    使用time命令查看上传的速度
# time命令统计
mc put 命令上升大文件
time mc put mysql_tobacco_20250701180001.tar.gz tobacco/tobacco-prod
# 以下是传输速度和耗时情况
...0250701180001.tar.gz: 4.38 GiB / 4.38 GiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 108.95 MiB/s 41s
real    0m41.218s
user    0m53.313s
sys     0m6.779s
  1. 测试下载功能
 mc get tobacco/tobacco-prod/mysql_tobacco_20250701180001.tar.gz .
...0250701180001.tar.gz: 4.38 GiB / 4.38 GiB ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 110.55 MiB/s 40s
  1. 测试删除功能
mc rm tobacco/tobacco-prod/mysql_tobacco_20250701180001.tar.gz tobacco/tobacco-prod/system_install.tar.gz
Removed `tobacco/tobacco-prod/mysql_tobacco_20250701180001.tar.gz`.
Removed `tobacco/tobacco-prod/system_install.tar.gz`.

5.6 集群代理健康检查页

Minio默认提供健康检查页。代理opentresty使用其检查集群服务器状态,并将故障服务器从upstream转发列表中剔除。

http://172.29.100.101:9000/upstream/health/
在这里插入图片描述

6. S3 API

6.1. 官方文档-S3 API 兼容性

6.2. 软件开发工具包(S3-Compatible SDK)

6.3. 代理分片上传和负载均衡方案

  1. openresty代理Minio集群,为保证分片上传时,所有分片上传至同一服务器,启用了一致性hash senssionid的的方式,根据hash结果转发请求至固定后端Minio服务器。具体规则说明如下:
    • URL中包含sessionid、sessinId、uploadid、uploadId参数时,openresty会直接使用参数做一致性hash,根据hash结果转发至固定的后端服务器。例如:http://cluster01.minio.xunku.in:9000?sessionid=AbcJUYTJ123
    • URL中没有上述参数时,openresty会使用请求的**远程IP(remote_addr)+盐(salt_key)**的方式生产一致性hash,根据hash结果转发至固定的后端服务器。
    • 极端情况:当分片上传文件时,转发的后端minio服务器发生故障,openresty自动剔除故障服务器,并重新分配新的后端minio服务器。此时分片上传会因为分片不在同一台服务器上,导致上传失败。
  2. 强烈建议在上传URL中带上sessionid、sessinId、uploadid、uploadId参数,减少openresty代理每次根据远程IP计算,同时可以避免因内部调用minio的服务器使用固定IP,导致所有请求转发至同一台后端Minio服务器,造成网络流量不均衡。

网站公告

今日签到

点亮在社区的每一天
去签到