MinIO 集群部署


MinIO 集群部署

docker net必须使用host

服务器必须在hosts文件将域名和ip写进去

要启用 MinIO 的纠删码至少需要 4 个磁盘,所以下面举例是 2个 节点各两个磁盘

启动 MinIO 节点

各节点的时间误差不能超过3秒

同 IP 下即便是不同端口,磁盘名也不能相同

容器内没有文本编辑器,写 hosts 文件不方便,所以直接挂载了 etc 目录

  1. 首先修改宿主机挂载目录下的hosts vim /data/oss/etc/hosts

    # 写入以下内容,ip根据实际情况填写,这里是同一台机子
    # 如果没有SSL,这里的域名和下面的域名都随你写,反正是内网访问
    # 如果有SSL,这里写证书对应的域名,下同
    127.0.0.1 minio1
    127.0.0.1 minio2
  2. 启动 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 ClientMinIO Console


文章作者: ❤纱雾
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ❤纱雾 !
评论
  目录