Docker搭建MinIO集群以及JAVA测试用例

minio.jpg

前期准备

准备三台机器、配置防火墙规则或关闭防火墙、关闭selinux、时钟同步 、解析和安装好docker

ps: 官方推荐4台起步

192.168.1.21
192.168.1.22
192.168.1.23

编写脚本

ps:目前演示中使用的版本为:RELEASE.2022-08-13T21-54-44Z

#!/bin/bash
docker run -d --network=host --name minio \
        --restart=always \
        --privileged=true \
        -v /data/minio-data1:/data1 \
        -v /data/minio-data2:/data2 \
        -e "MINIO_ROOT_USER=admin" \
        -e "MINIO_ROOT_PASSWORD=12345678" \
        minio/minio:RELEASE.2022-08-13T21-54-44Z server \
        http://192.168.1.21/data1 \
        http://192.168.1.21/data2 \
        http://192.168.1.22/data1 \
        http://192.168.1.22/data2 \
        http://192.168.1.23/data1 \
        http://192.168.1.23/data2 \
        --console-address ":7000" --address ":7001"

网络选host模式,每个节点挂载2个目录,节点数量和数据目录数量以实际为准;默认端口分别为:9000和:9001

MINIO_ROOT_USER为用户名,5位及以上

MINIO_ROOT_PASSWORD为密码,8位及以上

三个节点依次执行此脚本,查看日志

docker logs -f --tail 200 minio

image-20220818110927755.png

ps:centos7内核版本警告,暂时不用关心

出现以上日志证明启动成功

浏览器端口输入其中一个ip地址 192.168.1.2{1…3}:7000,然后输入用户名MINIO_ROOT_USER和密码MINIO_ROOT_PASSWORD

image-20220818111552509.png

查看集群状态

image-20220818111756928.png
创建Bucket、上传下载删除对象都是傻瓜式操作,就不赘述

官方建议

MinIO强烈建议使用负载均衡器来管理与集群的连接。
image-20220818113521320.png

java测试用例

maven依赖

<dependency>
	<groupId>io.minio</groupId>
	<artifactId>minio</artifactId>
	<version>8.4.3</version>
</dependency>

代码

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import io.minio.GetObjectArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;

public class Minio {

	public static void main(String[] args) {
		//上传对象
		putObject(new File("F:\\images\\counter.jpg"), "test");
		// 下载对象
		getObject(new File("F:\\images\\counter-down.jpg"), "test", "counter.jpg");
	}

	/**
	 * 创建minio客户端
	 */
	private static MinioClient client() {
		MinioClient minioClient = MinioClient.builder()//
				.endpoint("http://192.168.1.21:7001")//
				.credentials("admin", "12345678")//
				.build();
		return minioClient;
	}

	/**
	 * PUT对象
	 */
	public static void putObject(File file, String bucketName) {
		//创建minio客户端
		MinioClient minioClient = client();

		try (InputStream is = new FileInputStream(file)) {
			// 上传对象
			minioClient.putObject( //
					PutObjectArgs.builder().//
							bucket(bucketName)//
							.object(file.getName())//
							.stream(is, is.available(), -1).build()//
			);

			System.out.println(file.getName() + " is uploaded successfully");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * GET对象
	 */
	public static void getObject(File file, String bucketName, String objectName) {
		//创建minio客户端
		MinioClient minioClient = client();

		try ( //
				InputStream is = minioClient.getObject(//
						GetObjectArgs.builder().bucket(bucketName).object(objectName).build()//
				);
				OutputStream os = new FileOutputStream(file)//
		) {
			byte[] buf = new byte[16384];
			int bytesRead;
			while ((bytesRead = is.read(buf, 0, buf.length)) >= 0) {
				os.write(buf, 0, bytesRead);
			}
			System.out.println(objectName + " is download successfully");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

更多API参考官方示例

https://github.com/minio/minio-java/tree/release/examples

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摄尔修斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值