在
RELEASE.2022-06-30T20-58-09Z
版本之前,MinIO集群最少需要四个独立的驱动器,否则启动时会直接报错,提示以下信息
Please provide an even number of endpoints greater or equal to 4
从
RELEASE.2022-06-30T20-58-09Z
版本开始支持在只有2个或者3个驱动器情况下启动MinIO服务,详情参见
版本发布信息
或者
#15171
在MinIO集群中奇偶校验块的数量不能大于数据块的数量,也就是说MinIO集群的磁盘利用率最小为50%,即如果集群总的驱动器容量为2T,则至少可以存储1T的用户数据。
MinIO服务器在不超过一半的驱动器停止工作时仍能够正常提供服务,保证数据不丢失,并在故障节点再次上线时自动同步数据。
注意:当奇偶校验块的数量N等于数据块的数量时,如果有一半的驱动器停止工作,则只能读不能写,只有当有N+1个驱动器正常工作时才能进行写入操作。
更多纠删码的信息参见
Erasure Coding
注意:以下为假定的域名配置,实际部署时替换为自己的真实域名,并提供有效的证书信息
MinIO后台域名:
console.minio.com
MinIO接口服务域名:
api.minio.com
首先要确保每台minio服务器上已经安装好了Docker组件,参见
在CentOS中安装Docker
并且确保在
nginxserver
主机上安装了nginx,参见
在CentOS中安装和使用nginx
在每台机器上执行以下命令
注意:确保各个minio服务器之间的防火墙上已经开放了
9000
与
9001
的内网访问权限
其中
MINIO_ROOT_USER
与
MINIO_ROOT_PASSWORD
分别时MinIO后台访问的账号密码,请自行替换并妥善保管
环境变量
MINIO_SERVER_URL
的值会影响共享文件的链接地址,并且会参与签名计算
mkdir /miniodisk
MINIO_ROOT_USER=minio_admin
MINIO_ROOT_PASSWORD=minio_admin_password
MINIO_VERSION=RELEASE.2023-03-13T19-46-17Z
MINIO_CONTAINER=minio-server
docker run -p 9000:9000 -p 9001:9001 \
--name=$MINIO_CONTAINER \
--net=host \
-e "MINIO_ROOT_USER=$MINIO_ROOT_USER" \
-e "MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD" \
-e "MINIO_SERVER_URL=https://api.minio.com" \
-v /miniodisk:/miniodisk \
minio/minio:$MINIO_VERSION server \
http://minio1:9000/miniodisk \
http://minio2:9000/miniodisk \
http://minio3:9000/miniodisk \
http://minio4:9000/miniodisk \
--console-address ":9001"
此时,我们的MinIO集群已经搭建成功了
配置nginx
1、因为MinIO后台使用了WebSocket技术,需要在nginx上配置Upgrade
、Connection
等请求头来支持WebSocket的转发,参见MinIO官方nginx示例与WebSocket proxying
2、在nginx上使用301
强制将http请求重定向到https地址,保证访问的数据安全
3、修改client_max_body_size默认允许上传的文件大小限制,默认值是1M
,如果上传大文件时会被阻止
4、将ssl_certificate
和ssl_certificate_key
指定为你自己的证书文件路径
以上操作需要修改/etc/nginx/nginx.conf
文件,新增以下配置信息
http {
# 调大客户端请求体的大小限制,便于MinIO上传大文件
client_max_body_size 10M;
# websocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
upstream minioapi {
server minio1:9000;
server minio2:9000;
server minio3:9000;
server minio4:9000;
upstream minioconsole {
server minio1:9001;
server minio2:9001;
server minio3:9001;
server minio4:9001;
server {
listen 80;
server_name console.minio.com api.minio.com;
access_log /var/log/nginx/http_access.log main;
return 301 https://$host$request_uri;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name api.minio.com;
ssl_certificate "/etc/nginx/ssl_cert/api.minio.com.pem";
ssl_certificate_key "/etc/nginx/ssl_cert/api.minio.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/api_minio_com_access.log main;
location / {
proxy_pass http://minioapi/;
proxy_set_header Host $http_host;
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_http_version 1.1;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name console.minio.com;
ssl_certificate "/etc/nginx/ssl_cert/console.minio.com.pem";
ssl_certificate_key "/etc/nginx/ssl_cert/console.minio.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/console_minio_com_access.log main;
location / {
proxy_pass http://minioconsole/;
proxy_set_header Host $http_host;
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
配置文件修改完毕之后,重启nginx,使配置生效
systemctl restart nginx
配置完成,确保nginxserver
服务器开放了80
与443
端口外网访问权限,并且设置好了域名解析后,我们就可以通过https://console.minio.com
访问MinIO后台了