开源对象存储Minio部署篇

发布时间 2023-12-26 14:12:42作者: GaoYanbing
简介: MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。(摘自minio中文站点https://docs.min.io/cn/ 里面有很详细的介绍)。minio部署简单易用,分布式方式部署可以水平扩容且数据分散存储在所有节点上,只要在线节点N/2数据就非常安全,这类似raid6,不同的是卷级别和对象级别,使用方式有网页端、linux端工具mc、多语言SDK。

部署示例

  1. Minio按照不同系统环境下载新的包 https://docs.min.io/cn/minio-quickstart-guide
    资源配置:
    服务器:4台
    系 统:centos7.1
    先在4台机器上创建存放minio数据的目录,最好是单独的数据盘
    mkdir /data/minio_data
    创建存放minio程序的目录
    mkdir /usr/local/minio
    把minio程序放到部署目录
    官方启动方式
    export MINIO_ROOT_USER=<ACCESS_KEY> export MINIO_ROOT_PASSWORD=<SECRET_KEY> minio server http://host{1...n}/export{1...m} http://host{o...z}/export{1...m}
    为了方便启动可以在程序目录下创建一个start.sh脚本文件
    vim /usr/local/minio/start.sh

    #!/bin/bash
    export MINIO_ACCESS_KEY=vnsjhjakjvbnsnvuj8bh                         #所有节点上秘钥必须一致,否则无法集群通信,访问minio时也是用这个秘钥
    export MINIO_SECRET_KEY=vn85oenvs854gpwnv8s9p5hjbs9eg5wpj5
    /usr/local/minio/minio server http://172.16.1.1/data/minio_data \    #minio启动方式,写上所有节点的ip地址和磁盘数据路径
                              http://172.16.1.2/data/minio_data \
                              http://172.16.1.3/data/minio_data \
                              http://172.16.1.4/data/minio_data  

    启动之后默认端口9000,浏览器可直接访问这个端口
    image.png
    浏览器访问输入秘钥就可以访问了
    image.png
    因为是做的4节点分布式部署,可以加个nginx代理到4个节点,nginx配置如下(为了数据传输安全做了https):
    配置如下:

    ip_hash;
    server 172.16.1.1:9000;
    server 172.16.1.2:9000;
    server 172.16.1.3:9000;
    server 172.16.1.4:9000;
    }
    
    server {
    listen 80;
    server_name oss.a.com;
    return 301 https://oss.a.com/$request_uri;
    }
    
     server {
        listen 443;
        server_name  oss.a.com;
        index index.html;
        charset utf-8;
        ssl                  on;
        ssl_certificate      a.com.crt;
        ssl_certificate_key  a.com.key;
        ssl_session_timeout  5m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
        ssl_prefer_server_ciphers   on;
    
        rewrite_log     on;
        access_log      /data/logs/nginx/minio.access.log main;
        error_log       /app/logs/nginx/minio.error.log;
    
        location ~ / {
            proxy_pass http://minio;
     	proxy_set_header Host  $host;
        proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }