Minio是一个使用Go语言开发的开源的支持自部署的OSS存储工具,本文就总结一下Minio服务端的部署和简单使用。

官网:Minio
文档:Docs

一、Minio特点

  • Amazon S3兼容
    Minio使用Amazon S3 v2/v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器。
  • 数据保护
    Minio使用Minio Erasure Code来防止硬件故障。也许会损坏一半以上的driver,但是仍然可以从中恢复。
  • 高度可用
    Minio服务器可以容忍分布式设置中高达(N / 2)-1节点故障。而且,您可以配置Minio服务器在Minio与任意Amazon S3兼容服务器之间存储数据。
  • Lambda计算
    Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。
  • 加密和防篡改
    Minio为加密数据提供了机密性,完整性和真实性保证,而且性能开销微乎其微。使用AES-256-GCM,ChaCha20-Poly1305和AES-CBC支持服务器端和客户端加密。加密的对象使用AEAD服务器端加密进行防篡改。
  • 可对接后端存储
    除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。
  • SDK支持
    基于Minio轻量的特点,它得到类似Java、Python或Go等语言的SDK支持

    二、前期准备工作

    环境说明: > 操作系统:CentOS 7.6
    数据存放目录:/data/minio/datas
    脚本存放目录:/data/minio/sh
    Minio配置文件目录:/etc/minio

    1、下载Minio

    Minio二进制文件下载地址:https://dl.minio.io/server/minio/release/linux-amd64/minio,将下载的脚本存放至/data/minio/sh目录下,并为脚本添加执行权限
    chmod +x /data/minio/sh/minio

    2、创建专用用户

    useradd -M -s /sbin/nologin -r minio-user
    

    3、编写服务启动脚本

    vi /data/minio/sh/run.sh

    #!/bin/bash
    export MINIO_ACCESS_KEY=MinioUser
    export MINIO_SECRET_KEY=MinioManagePassword
    /data/minio/sh/minio server --config-dir /etc/minio --address 127.0.0.1:9999 /data/minio/datas/
    

    其中,MINIO_ACCESS_KEY为用户名,MINIO_SECRET_KEY为密码,密码不能设置过于简单,不然Minio会启动失败,--config-dir指定集群配置文件目录,生成复杂用户名和密码可通过命令 tr -cd '[:alnum:]' </dev/random |fold -w64|head -n1的方式来生成。

    4、编写开机启动脚本

    vi /usr/lib/systemd/system/minio.service

    [Unit]
    Description=Minio
    Documentation=https://docs.minio.io/
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=minio-user
    Group=minio-user
    WorkingDirectory=/data/minio/sh
    ExecStart=/data/minio/sh/run.sh
    
    # Let systemd restart this service on-failure
    Restart=on-failure
    RestartSec=5
    
    # Specifies the maximum file descriptor number that can be opened by this process
    LimitNOFILE=65536
    
    # Disable timeout logic and wait until process is stopped
    TimeoutStopSec=infinity
    SendSIGKILL=no
    
    [Install]
    WantedBy=multi-user.target
    

其中,WorkingDirectory为启动脚本目录,ExecStart为指定集群启动脚本。详情可参考官方脚本示例

三、服务启动及部署

1、为二进制脚本添加权限

chmod +x /data/minio/sh/minio

2、为服务启动脚本添加权限

chmod +x /data/minio/sh/run.sh

3、为文件夹添加权限

chown -R minio-user:minio-user /etc/minio
chown -R minio-user:minio-user /data/minio

4、启动开机启动脚本服务

systemctl daemon-reload
systemctl enable minio
systemctl start minio
systemctl status minio

此时,Minio服务即启用了一个占用端口9999的服务

四、部署

使用Nginx部署时,只需要加入如下内容即可:

location / {
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:9999;
}

以上就是Minio的简单安装步骤,具体详细的部署教程以及多节点部署,可以参考官网或者博客文章:Minio对象存储,本文教程也是参考了该博客文章进行总结的。