搭建Minio分布式服务
阅读原文时间:2023年09月06日阅读:1

本文主要介绍Minio的分布式环境搭建,安装比较简单,因博主只有一台window,所以使用VM虚拟机搭建的。

搭建前可以先了解下minio:

1、官方文档:https://docs.min.io/cn/minio-erasure-code-quickstart-guide.html

2、Github搭建介绍:https://github.com/minio/minio-service/tree/master/linux-systemd/distributed

环境准备:

1、安装两台centos虚拟机,这里我命名虚拟机为centos-minio1和centos-minio2(这里我使用的centos8.2,博主喜欢啥都用最新的,哈哈)

2、按这个链接https://jingyan.baidu.com/article/046a7b3e61a3e7f9c27fa9a8.html,分别为两台虚拟机添加两块硬盘,我这里仅作测试,所以每块硬盘2G

3、官网下载minio程序包:MINIO SERVER -> X64 -> Download(https://min.io/download#/linux

4、下载minio.service文件(https://github.com/minio/minio-service/tree/master/linux-systemd/distributed

开始搭建:

1、将minio文件放到centos-minio1的目录/usr/local/bin中

2、进入/etc/default/minio目录,新建文件minio(192.168.79.129和192.168.79.130是两台虚拟机的ip,/data/minio1和/data/minio2分别是两台虚拟机的两个挂载磁盘)

# Remote volumes to be used for MinIO server.
MINIO_VOLUMES="http://192.168.79.129:9000/data/minio1/ http://192.168.79.129:9000/data/minio2 http://192.168.79.130:9000/data/minio1 http://192.168.79.130:9000/data/minio2"

Use if you want to run MinIO on a custom port.

#MINIO_OPTS="--address: 9199"

Access Key of the server.

MINIO_ACCESS_KEY=yhc

Secret key of the server.

MINIO_SECRET_KEY=12345678

3、进入/etc/systemd/system/目录,复制minio.service文件到此文件夹,并编辑文件

找到User和Group配置项,都修改为root(因为我用的root用户运行minio,所以此处需要root用户),然后注释掉Restart=always(不然启动报错会一直自动重启,第二次重启会报错,大意是两次启动间隔时间过快)

4、关闭centos-minio1和centos-minnio2的防火墙,不然会报错,大意是一直等待另外两块硬盘加载

5、执行命令 systemctl enable minio.service,允许minio启动

6、启动minio,执行命令systemctl restart minio.service

7、查看minio运行状态和日志,执行命令systemctl status minio.service,如下则代表启动成功

8、nginx配置

9、验证后管,浏览器输入http://localhost:8088/minio,若出现登录界面则成功,账号是上面步骤2配置的MINIO_ACCESS_KEY和MINIO_SECRET_KEY

10、验证服务,引入依赖,编写测试类(测试类注释部分为minio3.x版本的代码,后升级为7.1.4,所以注释了)

io.minio minio 7.1.4

package com.yhc.minio;

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.MinioException;

import java.io.FileInputStream;

public class Test {

public final static String buckey\_name = "yhc";  
public final static String file\_name = "japidocs-demo-20200909.1138.jar";  
public final static String file\_path = "C:\\\\Users\\\\Administrator\\\\Desktop\\\\"+file\_name;

public static void main(String\[\] args) {  
    try(FileInputStream fis = new FileInputStream(file\_path);) {  
        // 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象  

// MinioClient minioClient = new MinioClient("http://192.168.79.129:9000", "yhc", "12345678");
MinioClient minioClient = MinioClient.builder().endpoint("http://localhost:8088/").credentials("yhc","12345678").build();
// 检查存储桶是否已经存在
// boolean isExist = minioClient.bucketExists(buckey_name);
boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(buckey_name).build());
if (isExist) {
System.out.println("Bucket already exists.");
} else {
// 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
// minioClient.makeBucket(buckey_name);

            minioClient.makeBucket(MakeBucketArgs.builder().bucket(buckey\_name).build());  
        }

        // 使用putObject上传一个文件到存储桶中。  

// minioClient.putObject(buckey_name, "data.xls", "C:\\Users\\Administrator\\Desktop\\data.xls");

        minioClient.putObject(PutObjectArgs.builder().object(file\_name).bucket(buckey\_name).stream(fis,fis.available(),5\*1024\*1024).build());  
        System.out.println("sucess");  
    } catch (MinioException me) {  
        me.printStackTrace();  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
}  

}

11、执行测试类,检查minio文件存储,发现每个硬盘下都有对应文件的文件夹,并按纠删码规则存储

至此,minio服务搭建完毕,因博主是在搭建完成后写的此文章,所以有些遗漏如大家发现,还请联系本人,谢谢。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器