Minio集群环境搭建

单机安装Minio

为了方便这里用的是一个虚拟机,在不同端口启动多个minio模拟集群环境

在[/home]目录下创建新的目录,此处一个minio挂4个盘,分别为

1
2
3
4
5
6
7
8
9
/home/data1
/home/data2
/home/data3
/home/data4

/home/data5
/home/data6
/home/data7
/home/data8

在minio安装目录下创建名为[minio-cluster.sh]的shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 设置minio的用户名
export MINIO_ROOT_USER=root

# 设置minio的密码
export MINIO_ROOT_PASSWORD=12345678

#第一个minio在9000端口启动,控制台启动在8080端口
/usr/local/minio/minio server --address ":9000" --console-address ":8080" \
http://127.0.0.1/home/data1 http://127.0.0.1/home/data2 \
http://127.0.0.1/home/data3 http://127.0.0.1/home/data4 > /usr/local/minio/minio-9000.log 2>&1 &


#第二个minio在9001端口启动,控制台启动在8081端口
/usr/local/minio/minio server --address ":9001" --console-address ":8081" \
http://127.0.0.1:9001/home/data5 http://127.0.0.1:9001/home/data6 \
http://127.0.0.1:9001/home/data7 http://127.0.0.1:9001/home/data8 > /usr/local/minio/minio-9001.log 2>&1 &

启动脚本

1
nohup sh ./minio.cluster.sh &

安装nginx做集群代理,有问题的小伙伴请点击

安装完成后配置集群代理

修改nginx配置文件[nginx安装目录/conf/nginx.conf]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
worker_processes  2;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;

sendfile on;
tcp_nopush on;

keepalive_timeout 60;

charset utf-8;
gzip on;

# minio集群
upstream minio_cluster{
server 127.0.0.1:9001;
server 127.0.0.1:9000;
}

server {
listen 80;
server_name localhost;
server_tokens off;
charset utf-8;

location /{
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
client_body_buffer_size 1024M;
client_max_body_size 10G;
proxy_buffers 1024 4k;
proxy_read_timeout 3000;

# 实现故障转移
proxy_next_upstream error timeout http_404;
# 重点
proxy_pass http://minio_cluster;
}

error_page 404 /404.html;
location = /404.html {
root html;
}
}
}

重新加载nginx配置文件

1
./nginx-1.20.1/sbin/nginx -s reload

其他地方调用minio时就是虚拟机的nginx即可!

minio链接可永久访问问题解决

这篇文章说的十分详细

1.下载mc

1
wget https://dl.min.io/client/mc/release/linux-amd64/mc

2.分配权限

1
chmod +x mc

3.将mc 连接到你的minio服务器

1
2
alias mc="./mc"
mc config host add minio http://ip:9000 minio服务器用户名 minio服务器密码 --api S3v4

4.设置永久访问桶

1
mc policy set public minio/桶名

5.JavaSDK驱动minio

1
2
String url = client.presignedGetObject(bucketName, objectName, expires);
Syste.out.print(url);//http://ip:9000/test/timg.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20201110%2F%2Fs3%2Faws4_request&X-Amz-Date=20201110T154002Z&X-Amz-Expires=432000&X-Amz-SignedHeaders=host&X-Amz-Signature=925543f3a113f52362c5160ed7aa1cdf2c22d9104724d1153278592a1bae86a5

6.链接通过?切割,得到前面的部分,就是可访问的永久链接。

评论