Minio 安装及相关API操作

image1.png
image.png

一、安装Minio

1
2
3
4
5
6
我们安装集群主要服务器ip:
192.168.168.1
192.168.168.2
192.168.168.3
192.168.168.4
192.168.168.5

==准备工作:需要先在每个服务器节点上面的data路径下面创建存储minio数据的文件夹:data/minio/data==

==注意:Linux环境下我们选择RPM的方式安装。主要是为了搭建集群。==

RPM安装的一个好处是:能直接将minio作为系统服务直接启动,否则我们就需要自己写脚本启动

https://min.io/docs/minio/linux/index.html

Ⅰ、下载安装包

RPM下载地址命令:

1
2
3
4
5
6
7
8
# 创建安装包存放的地址并进入
cd /home/centos/soft/minio/

# 使用wget命令获取安装包rpm
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20240131202033.0.0-1.x86_64.rpm -O minio.rpm

# 安装minio
sudo dnf install minio.rpm

安装完minio以后,可以在/usr/local/bin/中找到可执行文件minio

Ⅱ、启动脚本

下面的操作均需要在五台服务器上面做相同的操作。
/home/centos/soft/minio/路径下面新建一个run.sh文件

参数说明:

--address:配置的是Server地址

--console-address:配置的是控制台地址

1
2
3
4
#!/bin/bash
export MINIO_ACCESS_KEY=minio
export MINIO_SECRET_KEY=minioPassword
/usr/local/bin/minio server --address ":9998" --console-address ":9999" http://192.168.168.1/data/minio/data http://192.168.168.2/data/minio/data http://192.168.168.3/data/minio/data http://192.168.168.4/data/minio/data http://192.168.168.5/data/minio/data

执行./run.sh可启动服务

Ⅲ、将minio作为job执行

root用户sudo su
注意需要在五个节点都执行如下命令及其所有操作:

1
vim /usr/lib/systemd/system/minio.service

service服务内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/


[Service]
#安装包路径
WorkingDirectory=/home/centos/soft/minio
#启动命令路径
ExecStart=/home/centos/soft/minio/run.sh


Restart=on-failure
RestartSec=5


[Install]
WantedBy=multi-user.target

加载服务:

1
[root@bgdc2020-file02 minio]# systemctl daemon-reload

minio加入服务器启动后执行:

1
[root@bgdc2020-file02 minio]# systemctl enable minio

启动服务:

1
[root@bgdc2020-file02 minio]# systemctl start minio

停止服务:

1
[root@bgdc2020-file02 minio]# systemctl stop minio

查看服务状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@bgdc2020-file02 minio]# systemctl status minio
● minio.service - Minio service
Loaded: loaded (/usr/lib/systemd/system/minio.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-02-02 11:24:38 CST; 1h 22min ago
Docs: https://docs.minio.io/
Main PID: 23686 (run.sh)
CGroup: /system.slice/minio.service
├─23686 /bin/bash /home/centos/soft/minio/run.sh
└─23687 /usr/local/bin/minio server --address=192.168.168.1:9999 http://192.168.168.1/data/minio/data http://192.168.168.2/data/minio/data...

Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: Copyright: 2015-2024 MinIO, Inc.
Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: Version: RELEASE.2024-01-31T20-20-33Z (go1.21.6 linux/amd64)
Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: Use `mc admin info` to look for latest server/drive info
Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: Status: 4 Online, 1 Offline.
Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: S3-API: http://192.168.168.1:9999
Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: Console: http://192.168.168.1:42227 http://172.17.0.1:42227 http://127.0.0.1:42227
Feb 02 11:27:17 bgdc2020-file02.novalocal run.sh[23686]: Documentation: https://min.io/docs/minio/linux/index.html
Feb 02 11:27:50 bgdc2020-file02.novalocal run.sh[23686]: Client 'http://192.168.168.5:9999/minio/peer-s3/v1' re-connected in 33.516010723s
Feb 02 11:27:55 bgdc2020-file02.novalocal run.sh[23686]: Client 'http://192.168.168.5:9999/minio/peer/v36' re-connected in 38.587631893s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 启动minio
systemctl start minio

#设置开机自启动
systemctl enable minio

#停止开机自启动
systemctl disable minio

#查看服务当前状态
systemctl status minio

#重新启动服务
systemctl restart minio

#查看所有已启动的服务
systemctl list-units --type=service

Ⅳ、访问

1
2
3
4
5
http://192.168.168.1:9999
http://192.168.168.2:9999
http://192.168.168.3:9999
http://192.168.168.4:9999
http://192.168.168.5:9999

Ⅴ、nginx设置代理minio集群

该前提是已经安装了nginx

nginx安装的路径/usr/local/nginx

nginx可执行文件的位置:/usr/local/nginx/sbin/nginx

nginx配置文件nginx.conf的位置:/usr/local/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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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;
client_max_body_size 200M;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

#配置minio服务负载均衡
upstream minio-server{
server 192.168.168.1:9998 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.2:9998 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.3:9998 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.4:9998 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.5:9998 weight=25 max_fails=2 fail_timeout=30s;
}

#配置minio控制台负载均衡
upstream minio-console{
server 192.168.168.1:9999 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.2:9999 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.3:9999 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.4:9999 weight=25 max_fails=2 fail_timeout=30s;
server 192.168.168.5:9999 weight=25 max_fails=2 fail_timeout=30s;
}

#Minio服务
server {

listen 9898;
server_name minio-server;

# 允许在标头中使用特殊字符
ignore_invalid_headers off;

# 允许任何大小的文件上传。
# 设置为1000m等值;将文件大小限制为特定值
client_max_body_size 0;

# 禁用缓冲
proxy_buffering off;
proxy_request_buffering off;

location / {

root html;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;

proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;

proxy_pass http://minio-server;
}
}

#Minio控制台
server {

listen 9899;
server_name minio-console;

# 允许在标头中使用特殊字符
ignore_invalid_headers off;

# 允许任何大小的文件上传。
# 设置为1000m等值;将文件大小限制为特定值
client_max_body_size 0;

# 禁用缓冲
proxy_buffering off;
proxy_request_buffering off;

location / {

root html;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;

# This is necessary to pass the correct IP to be hashed
# real_ip_header X-Real-IP;

proxy_connect_timeout 300;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

chunked_transfer_encoding off;

proxy_pass http://minio-console;
}
}
}

nginx配置完成后:

1
2
3
4
5
6
7
8
9
10
# 进入可执行文件安装存放地址
[root@bgdc2020-file02 sbin]# cd /usr/local/nginx/sbin

# 检查配置文件是否书写正确 ok 并且 successful 表示文件书写正确
[root@bgdc2020-file02 sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# nginx重新加载配置文件
[root@bgdc2020-file02 sbin]# ./nginx -s reload

后访问地址: http:192.168.168.1:9898