服务器准备
- 两台linux服务器,每台挂载2块硬盘
- 共2个minio节点,4块磁盘
- 2台虚拟机各添加2块1G的硬盘;
- 分区、格式化、挂载到指定文件夹(命令见语雀linux命令);
部署Minio服务
节点 |
ip |
磁盘 |
minio node1 |
192.168.2.32 |
/newdisk1, /newdisk2 |
minio node2 |
192.168.2.33 |
/newdisk1, /newdisk2 |
nginx |
192.168.2.32 |
/usr/local/nginx |
-
MINIO_ROOT_USER
:用户名,长度最小是 5 个字符;
-
MINIO_ROOT_PASSWORD
:密码,密码不能设置过于简单,不然 minio 会启动失败,长度最小是 8 个字符;
-
–config-dir
:指定集群配置文件目录;
-
–address
:api 的端口,默认是9000
-
--console-address
:web 后台端口,默认随机;
# 创建minio所用目录
mkdir -p /home/minio/{run,conf} && mkdir -p /etc/minio
# 下载minio上传到此文件夹
cd /home/minio/run
chmod +x minio
# 编写启动脚本(/home/minio/run/minio-run.sh)
#!/bin/bash
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin
/home/minio/run/minio server --config-dir /home/minio/conf \
--address "192.168.2.32:9000" --console-address ":50000" \
http://192.168.2.32/newdisk1 http://192.168.2.32/newdisk2 \
http://192.168.2.33/newdisk1 http://192.168.2.33/newdisk2 \
# 执行启动脚本
sh minio-run.sh
- 在2台服务器上都执行此操作,注意在2.33上执行时,把脚本里的address的ip改成本机;
- 2台都启动后minio集群部署成功;
- 启动后访问2台服务器的50000端口,查看控制台是否正常访问;
使用nginx负载均衡
# 编辑nginx配置文件
upstream minio_server {
server 192.168.2.32:9000;
server 192.168.2.33:9000;
}
upstream minio_console {
server 192.168.2.32:50000;
server 192.168.2.33:50000;
}
server{
listen 9001;
server_name 192.168.2.32;
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_server;
}
}
server{
listen 50001;
server_name 192.168.2.32;
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;
}
}
# reload配置文件
./nginx -s reload
整合到springboot
依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
配置文件
minio:
endpoint: http://192.168.2.32:9001
accessKey: minioadmin
secretKey: minioadmin
bucketName: weiz-test
类
package com.start.config;
import io.minio.MinioClient;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Data
@Configuration
public class MinioConfig {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private Str