springboot整合minio实现文件上传下载

服务器准备

  • 两台linux服务器,每台挂载2块硬盘
  • 共2个minio节点,4块磁盘
  1. 2台虚拟机各添加2块1G的硬盘;
  2. 分区、格式化、挂载到指定文件夹(命令见语雀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
  • 使用192.168.2.32:50001访问

整合到springboot

依赖


            io.minio
            minio
            8.4.5
        
        
            org.apache.commons
            commons-lang3
            3.9
        

配置文件

minio:
  endpoint: http://192.168.2.32:9001
  accessKey: minioadmin
  secretKey: minioadmin
  bucketName: weiz-test

  • MinioConfig
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

你可能感兴趣的:(java,开发语言)