部署单节点分布式存储

环境

  • 服务器 IP: 192.168.1.10
  • 自定义域名: X.X.X

安装 minio

  • 下载

    1
    2
    3
    
    curl -L -o /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio
    curl -L -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc
    chmod 0755 /usr/local/bin/{minio,mc}
    
  • 修改 hosts,增加自定义域名解析

    1
    
    192.168.1.10 X.X.X
    
  • 创建四个目录,用于存储 minio 数据

    1
    
    mkdir -p /minio/{1,2,3,4}
    
  • 创建 /etc/systemd/system/minio.service,内容如下

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    
    [Unit]
    Description=MinIO
    After=network.service
    Wants=network.service
    
    [Service]
    Environment=MINIO_ROOT_USER=XXX
    Environment=MINIO_ROOT_PASSWORD=XXXXXXXX
    ExecStart=/usr/local/bin/minio server \
        --address ":9000" \
        --console-address ":9010" \
        http://X.X.X:9000/minio/{1...4}
    #Restart=on-failure
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
    

启动 minio

  • 配置开机自动启动

    1
    2
    
    systemctl daemon-reload
    systemctl enable minio
    
  • 启动 minio

    1
    
    systemctl start monio
    

部署多节点分布式存储

环境

自定义域名 网卡 IP 硬盘槽 数据分区
X1.X.X eth0: 192.168.1.11eth1:10.0.0.11 8 个 /dev/sdb1, /dev/sdc1/dev/sdd1, /dev/sde1
X2.X.X eth0: 192.168.1.12eth1:10.0.0.12 8 个 /dev/sdb1, /dev/sdc1/dev/sdd1, /dev/sde1
X3.X.X eth0: 192.168.1.13eth1:10.0.0.13 8 个 /dev/sdb1, /dev/sdc1/dev/sdd1, /dev/sde1
X4.X.X eth0: 192.168.1.14eth1:10.0.0.14 8 个 /dev/sdb1, /dev/sdc1/dev/sdd1, /dev/sde1
  • eth0 用于接收 api 请求
  • eth1 用于集群内部通信
  • 每台服务器有 8 个硬盘槽,这里先各用 4 个组成 server pool,运行 minio 集群
  • 每台服务器剩下的 4 个硬盘槽用于后面的扩容操作

挂载数据分区

  • 在全部服务器上执行如下操作

  • 挂载硬盘

    1
    2
    3
    4
    5
    
    mkdir -p /mnt/minio{1,2,3,4}
    mount /dev/sdb1 /mnt/minio1
    mount /dev/sdc1 /mnt/minio2
    mount /dev/sdd1 /mnt/minio3
    mount /dev/sde1 /mnt/minio4
    
  • 建议在 fstab 中配置开机自动挂载

安装 minio

  • 在全部服务器上执行如下操作

  • 下载

    1
    2
    3
    
    curl -L -o /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio
    curl -L -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc
    chmod 0755 /usr/local/bin/{minio,mc}
    
  • 修改 hosts,增加自定义域名解析,注意这里是集群通信,要用 eth1 网卡 ip

    1
    2
    3
    4
    
    10.0.0.11 X1.X.X
    10.0.0.12 X2.X.X
    10.0.0.13 X3.X.X
    10.0.0.14 X4.X.X
    
  • 创建 /etc/systemd/system/minio.service,内容如下

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    
    [Unit]
    Description=MinIO
    After=network.service
    Wants=network.service
    
    [Service]
    Environment=MINIO_ROOT_USER=XXX
    Environment=MINIO_ROOT_PASSWORD=XXXXXXXX
    ExecStart=/usr/local/bin/minio server \
        --address ":9000" \
        --console-address ":9010" \
        http://X{1...4}.X.X:9000/mnt/minio{1...4}
    #Restart=on-failure
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
    

启动 minio

  • 在全部服务器上执行如下操作

  • 配置开机自动启动

    1
    2
    
    systemctl daemon-reload
    systemctl enable minio
    
  • 启动 minio

    1
    
    systemctl start monio
    

扩容多节点分布式存储

加装硬盘

  • 在全部服务器上执行如下操作

  • 在每台服务器上个增加四个新硬盘,每个硬盘创建一个分区,格式化

  • 挂载新增的硬盘分区

    1
    2
    3
    4
    5
    
    mkdir -p /mnt/minio{5,6,7,8}
    mount /dev/sdf1 /mnt/minio5
    mount /dev/sdg1 /mnt/minio6
    mount /dev/sdh1 /mnt/minio7
    mount /dev/sdi1 /mnt/minio8
    
  • 建议在 fstab 中配置开机自动挂载

扩容

  • 在全部服务器上执行如下操作

  • 停止 minio 服务

    1
    
    systemctl stop minio
    
  • 修改 /etc/systemd/system/minio.service,增加新的 server pool,内容如下

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    [Unit]
    Description=MinIO
    After=network.service
    Wants=network.service
    
    [Service]
    Environment=MINIO_ROOT_USER=XXX
    Environment=MINIO_ROOT_PASSWORD=XXXXXXXX
    ExecStart=/usr/local/bin/minio server \
        --address ":9000" \
        --console-address ":9010" \
        http://X{1...4}.X.X:9000/mnt/minio{1...4} \
        http://X{1...4}.X.X:9000/mnt/minio{5...8}
    #Restart=on-failure
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
    
  • 启动 minio 服务

    1
    
    systemctl start minio
    

客户端常用操作

  • 创建 alias,注意这里是 api 调用,要用 eth0 网卡 ip

    1
    
    mc alias set $ALIAS_NAME http://192.168.1.X:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD
    
  • 创建 bucket

    1
    
    mc mb $ALIAS_NAME $BUCKET_NAME/$SUB_DIR
    
  • 创建用户

    1
    
    mc admin user add $ALIAS_NAME $NEW_USER_NAME $NEW_PASSWORD
    
  • 给新增用户授权

    1
    
    mc admin policy attach $ALIAS_NAME/$BUCKET_NAME/$SUB_DIR readwrite --user $NEW_USER_NAME