• 怎样部署好MiniO分布式文件存储


    这两年把Minio吹上天了,是真的好用文件存储这块不用咱们手撸代码了,就导致了一大批跟风用户
    我之前是用FastDFS的,后来也不得不跟风了

    本文简单说下如何部署Minio以及重点讲下如何使用https访问问题

    Minio部署

    部署问题直接上脚本:

    # Minio文件存储服务
    docker run --name minio \
    	-p 9000:9000 \
    	-p 9009:9009 \
    	--restart=always \
    	-e TZ="Asia/Shanghai" \
    	-d --restart=always \
    	-e "MINIO_ROOT_USER=username" \
    	-e "MINIO_ROOT_PASSWORD=password" \
    	-v /datas/minio/data:/data \
    	-v /datas/minio/conf:/root/.minio \
    	minio/minio server /data \
    	--console-address '0.0.0.0:9009'
    

    上面搞定后,就直接可以通过浏览器访问了
    http://127.0.0.1:9000/, 输入username和password即可,minio里面的配置自行百度

    HTTPS访问

    ssl证书

    可以去腾讯云申请的ssl证书文件到服务器,Nginx的话上传解压后的nginx文件夹下的1_xxx.key和2_xxx.crt文件,
    nginx配置,增加

    # 配置minio的https访问
      server {
        listen 443 ssl;
        server_name your.domain.com;
        # 证书配置,写服务绝对路径
        ssl_certificate /usr/local/nginx/conf/ssl/your.domain.com_bundle.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/your.domain.com.key;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        location / {
          proxy_pass https://172.17.0.3:9000;
          # 下面这三个需要有
          proxy_set_header  Host       $host;
          proxy_set_header  X-Real-IP    $remote_addr;
          proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
      }
    

    上面配置了Nginx转发,重启Nginx后,https就生效了

    业务上修改支持Https协议

     private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {
            if (minioClient == null) {
                try {
                    minioClient = MinioClient.builder()
                            .endpoint(minioUrl, 443, true)// 这里配置使用https协议的
                            .credentials(minioName, minioPass)
                            .build();
                    // FIXME 配置是否忽略掉证书检查
        			// minioClient.ignoreCertCheck();// 如果有证书,过期了可以开启,正常使用不推荐 by junwei
                } catch (Exception e) {
                	log.error("minioClient异常", e);
                }
            }
            return minioClient;
        }
    

    上面代码是参考,获取minioClient客户端需要用ssl访问

    此时,就可以上传文件到minio文件服务器

    访问Https下的Minio的文件

    开启了ssl后,还需要将证书放到Minio的配置目录下,我这里是这样的:

    [root@ethings certs]# pwd
    /data/minio/config/certs
    [root@ethings certs]# ls
    CAs  private.key  public.crt 
    

    上面private.keypublic.crt这两个文件也是nginx配置时的ssl证书文件,Minio中
    在certs目录中,私钥必须命名private.key,公钥必须命名public.crt
    重启Minio配置完成https访问,现在就可以用https访问文件了。

    注意: 重启minio,如果提示:

    RROR Unable to load the TLS configuration: Missing TLS password
    > Please set the password to environment variable `MINIO_CERT_PASSWD` so that the private key can be decrypted
    

    这是因为生成证书的时候设置了密码:使用受密码保护的私钥时,必须MINIO_CERT_PASSWD使用以下命令通过环境变量提供密码:export MINIO_CERT_PASSWD=。 设置完成后,再重启Minio

    Minio永久访问链接

    需要使用 mc命令设置

    ./mc config host add minio http://172.12.3.1:9999 username password   //添加minio server
    ./mc  policy  set  download  minio/yourbucket  //设置需要开放下载的bucket, 注意需要带minio 
    

    补充

    补充一个docker-compose启动方式的 docker-compose.yml:

    version: '3'
    services:
      minio:
        image: minio/minio
        command: server  --address "open.abc.com:9000" --console-address ":9009" /data
        ports:
          - "9000:9000"
          - "9009:9009"
        extra_hosts:
          - "dns_1:172.17.0.1"
        environment:
          MINIO_ACCESS_KEY: "username"
          MINIO_SECRET_KEY: "password"
        volumes:
          - /datas/minio/data:/data
          - /datas/minio/config:/root/.minio
        network_mode: host
    
  • 相关阅读:
    放出云伙伴生态“大招”,微软为业界打了个样
    【MCAL_CANDriver】-2.1-硬件过滤(Hardware Filter)详述及配置
    C++入门教程||C++中的输入输出||C++ 注释
    OceanMind海睿思受邀出席ISACA中国2024年度大会,获国际审计数字信任先锋奖
    跨端开发方案之桌面应用小程序
    CopyOnWriteArrayList源码分析
    套接字编程:TCP通信程序
    小程序的赛道越来越拥挤
    【附源码】计算机毕业设计SSM社区生鲜配送系统
    Python 实现梯度下降算法总结
  • 原文地址:https://blog.csdn.net/junehappylove/article/details/127087977