MinIO 集群部署
docker net必须使用host
服务器必须在hosts文件将域名和ip写进去
要启用 MinIO 的纠删码至少需要 4 个磁盘,所以下面举例是 2个 节点各两个磁盘
启动 MinIO 节点
各节点的时间误差不能超过3秒
同 IP 下即便是不同端口,磁盘名也不能相同
容器内没有文本编辑器,写 hosts 文件不方便,所以直接挂载了 etc 目录
首先修改宿主机挂载目录下的hosts
vim /data/oss/etc/hosts
# 写入以下内容,ip根据实际情况填写,这里是同一台机子 # 如果没有SSL,这里的域名和下面的域名都随你写,反正是内网访问 # 如果有SSL,这里写证书对应的域名,下同 127.0.0.1 minio1 127.0.0.1 minio2
启动 MinIO
# 第一台,两个磁盘 docker run --name minio1 \ -p 9017:9017 \ --net=host \ -e MINIO_ACCESS_KEY=yourAk \ -e MINIO_SECRET_KEY=yourSk \ -v /data/oss/data1:/data1:rw \ -v /data/oss/data2:/data2:rw \ --privileged \ -e TZ=Asia/Shanghai \ -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ -v /data/oss/etc:/etc \ -v /data/oss/conf:/root/.minio \ minio/minio:RELEASE.2021-04-22T15-44-28Z.hotfix.56647434e server \ https://minio1:9017/data1 \ https://minio1:9017/data2 \ https://minio2:9018/data3 \ ttps://minio2:9018/data4 \ --address ":9017"
# 第二台,两个磁盘 docker run --name minio1 \ -p 9018:9018 # 都在同一台机子,所以端口不同\ --net=host \ -e MINIO_ACCESS_KEY=yourAk \ -e MINIO_SECRET_KEY=yourSk \ -v /data/oss/data3:/data3:rw # 同ip不能重名\ -v /data/oss/data4:/data4:rw #同ip不能重名\ --privileged \ -e TZ=Asia/Shanghai \ -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ -v /data/oss/etc:/etc \ -v /data/oss/conf2:/root/.minio # 如果在不同域名下,这里要做区分\ minio/minio:RELEASE.2021-04-22T15-44-28Z.hotfix.56647434e server \ https://minio1:9017/data1 \ https://minio1:9017/data2 \ https://minio2:9018/data3 \ ttps://minio2:9018/data4 \ --address ":9018" # net使用host,其实-p没用,这个才是关键
配置 Nginx SSL
upstream minio_s3 {
least_conn;
server 127.0.0.1:9017; # 这里是每一个节点
server 127.0.0.1:9018;
}
server{
listen 8017; # 你的端口
server_name your_domain; # 你的域名
root /data/oss; # 可以不写
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
ssl_certificate /path/to/public.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#SSL-END
# Allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 100m;
# Disable buffering
proxy_buffering off;
proxy_request_buffering off;
location ^~/ {
proxy_pass https://minio_s3;
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_set_header X-NginX-Proxy true;
real_ip_header X-Real-IP;
proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
chunked_transfer_encoding off;
}
}
控制台
如果需要完整的功能,参考 MinIO Client 和 MinIO Console