MinIO 单机及集群部署

一、Linux单机部署

  1. 下载Minio的RPM包,如minio-20220104074107.0.0.x86_64.rpm;

  2. 安装rpm:rpm -Uvh ./minio-*.rpm --nodeps --force;

  3. 创建用户:useradd minio-user && chown -R minio-user:minio-user /data/minio;

  4. 编写minio.conf配置文件

# 存储目录
MINIO_VOLUMES="/data/minio/data"
# 配置管理页面地址
MINIO_OPTS="--address :9010 -console-address :9011"
# 访问账号
MINIO_ACCESS_KEY=rhxy
# 访问密码
MINIO_SECRET_KEY=123456

  5. 修改minio.service文件:sed -i "s%/etc/default/minio%/data/minio/conf/minio.conf%" /etc/systemd/system/minio.service && systemctl daemon-reload

    注意若是在/usr/lib/systemd/system目录下,需处理启动报错问题:sed -i "s/TimeoutSec/TimeoutStopSec/" /usr/lib/systemd/system/minio.service

  6. 启动Minio:systemctl start minio && systemctl enable minio

 

二、Linux集群部署

  简介:分布式MinIO可以将多块硬盘(分布在多台机器上)组成一个对象存储服务,从而避免了单点故障,还确保完整的数据保护,MinIO在分布式和单机模式下,所有的读写操作都遵守read-after-write模型。

  1. 基础知识点

    A. 数据保护是采用纠删码来防范多个节点宕机和位衰减,MinIO将对象拆分为N/2数据和N/2奇偶检验块;

    B. 单机MinIO服务存在单点故障,集群至少需要4个节点,如果搭建N个节点的MinIO集群,只要用N/2节点在线服务,数据就是安全的,但至少需要N/2+1个节点来创建新的对象;

    C. 存放数据目录需要是新目录,分布式MinIO节点服务器之间的间隔应小于15分钟,可以使用NYP服务来确保时间相同;

三、Linux Docker单机部署

  1. 拉取镜像:docker pull minio/minio;

  2. 部署文件docker-compose.yml

复制代码
version: "3.8"

services:
 # minio文件系统
  minio:
    image: minio/minio:latest
    ports:
      - "9000:9000"
    volumes:
      - "/var/minio/data:/data"
      - "/var/minio/config:/root/.minio"
    environment:
      MINIO_ACCESS_KEY: "root"
      MINIO_SECRET_KEY: "root@123456"
    command: server /data

 

四、Linux Docker集群部署

  简介:至少4台机器,扩容需要偶数台机器递增

# MinIO文件服务集群
    minio-1: 
        image: minio/minio:latest
        hostname: minio-1
        command: server http://minio-{1...4}/export
        deploy:
            mode: global
            placement:
                constraints:
                    - node.labels.minio-1 == true
            restart_policy:
                delay: 10s
                max_attempts: 10
                window: 60s
        healthcheck:
            test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
            interval: 30s
            timeout: 20s
            retries: 3
        networks:
            - rws-mp
        volumes:
            - minio-1-data:/export
    minio-2:
        image: minio/minio:latest
        hostname: minio-2
        command: server http://minio-{1...4}/export
        deploy:
            mode: global
            placement:
                constraints:
                    - node.labels.minio-2 == true
        networks:
            - rws-mp
        volumes:
            - minio-2-data:/export
    minio-3:
        image: minio/minio:latest
        hostname: minio-3
        command: server http://minio-{1...4}/export
        deploy:
            mode: global
            placement:
                constraints:
                    - node.labels.minio-3 == true
        networks:
            - rws-mp
        volumes:
            - minio-3-data:/export
    minio-4:
        image: minio/minio:latest
        hostname: minio-4
        command: server http://minio-{1...4}/export
        deploy:
            mode: global
            placement:
                constraints:
                    - node.labels.minio-4 == true
        networks:
            - rws-mp
        volumes:
            - minio-4-data:/export

五、FAQ

  1. 修改密码:找到安装的minio文件路径.minio.sys/config

    A. 打开config.json文件,更改access_key 和 secret_key的值即可;

    B. 删除config.json和iam文件,重新设置;

  

 

可参考:MinIO分布式集群搭建

    MinIO集群扩容方法

posted @ 2021-06-01 17:58  如幻行云  阅读(2766)  评论(0编辑  收藏  举报