• 使用containerd搭建MinIO集群服务


    概述

    因为在云服务器上默认只有一块磁盘,如果直接在系统盘上安装MinIO,会被拒绝,所以这里采用containerd的方式绕过这一限制

    操作环境

    操作系统

    CentOS 7.9

    MinIO版本

    RELEASE.2023-03-13T19-46-17Z

    服务器host信息

    192.168.10.1 minio1
    192.168.10.2 minio2
    192.168.10.3 minio3
    192.168.10.4 minio4
    192.168.10.5 nginxserver
    

    部署说明

    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服务器上已经安装好了containerd组件,参见在Linux中安装containerd作为kubernetes的容器运行时

    并且确保在nginxserver主机上安装了nginx,参见在CentOS中安装和使用nginx

    安装

    在每台机器上执行以下命令

    注意:确保各个minio服务器之间的防火墙上已经开放了90009001的内网访问权限

    其中MINIO_ROOT_USERMINIO_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
    
    ctr run --net-host -d \
      --env=MINIO_ROOT_USER=$MINIO_ROOT_USER \
      --env=MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD \
      --env=MINIO_SERVER_URL=https://api.minio.com \
      --mount=type=bind,src=/miniodisk,dst=/data,options=rbind:rw docker.io/minio/minio:$MINIO_VERSION \
      $MINIO_CONTAINER minio server \
      http://minio1:9000/data \
      http://minio2:9000/data \
      http://minio3:9000/data \
      http://minio4:9000/data \
      --console-address ":9001"
    

    此时,我们的MinIO集群已经搭建成功了

    配置nginx

    1、因为MinIO后台使用了WebSocket技术,需要在nginx上配置UpgradeConnection等请求头来支持WebSocket的转发,参见MinIO官方nginx示例WebSocket proxying

    2、在nginx上使用301强制将http请求重定向到https地址,保证访问的数据安全

    3、修改client_max_body_size默认允许上传的文件大小限制,默认值是1M,如果上传大文件时会被阻止

    4、将ssl_certificatessl_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服务器开放了80443端口外网访问权限,并且设置好了域名解析后,我们就可以通过https://console.minio.com访问MinIO后台了

  • 相关阅读:
    c++ makefile + clangd 生成 compile_command.json
    请根据该图片写出代码
    爱胜品YPS-1133DN系列打印机与奔图P3301DN打印机耗材更换的简单对比说明
    STM32F103xx TFT液晶显示ASCII字符串、中文、图片并且显示带有镜像和旋转功能
    群狼调研(长沙产品概念测试)|如何做新品上市满意度调研
    【机器学习】梯度下降算法原理和实现
    《深入理解java虚拟机 第三版》学习笔记二
    计算机网络-网络,互联网
    彩虹之眼文化集团整体方案设计
    Spring-bean
  • 原文地址:https://www.cnblogs.com/mstmdev/p/17213523.html