MinIO 新版配置

官方文档

MinIO | The MinIO Quickstart Guide

单节点部署

通过二进制文件部署

# 正常直接通过
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
$ chmod +x minio
$ ./minio server /opt/data
# 启动后,会发现用户名密码默认为 minioadmin,并且 console 监听的是一个动态的端口,下次访问端口会发生变化。

MinIO 新版配置

# 配置用户名密码
$ export MINIO_ROOT_USER = admin
$ export MINIO_ROOT_PASSWORD = 12345678
# 默认的配置目录是${HOME}/.minio,可以通过 --config-dir 命令自定义配置目录
$ ./minio server -config-dir /mnt/config /opt/data
# 控制台监听端口是动态生成的,可以通过 --console-address ":port" 指定静态端口
./minio server --console-address ":5000" /opt/data

基于 Docker

$ docker run -p 9000:9000 --name minio \
-v /opt/data:/data \
-v /opt/config:/root/.minio \
minio/minio server /data

存在问题:浏览器无法访问 minio 控制台,因为没有对外暴露控制台对外暴露控制台端口

$ docker run -p 9000:9000 -p 5000:5000 --name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /opt/data:/data \
-v /opt/config:/root/.minio \
minio/minio server --console-address ":5000" /data

MinIO 纠删码模式

MinIO 使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。即便您丢失一半数量(N/2)的硬盘,依然可以使用。

纠删码是一种恢复丢失和损坏数据的数学算法,MinIO 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块。这就意味着如果是 12 块硬盘,一个对象会被分成 6 个数据块、6 个奇偶校验块,你可以丢失任意 6 块(不管其是否存放的数据还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。

MinIO 新版配置

使用 Minio Docker 镜像,在 8 块盘中启动 Minio 服务:

docker run -d -p 9000:9000 -p 5000:5000 --name minio \
-v /opt/data1:/data1 \
-v /opt/data2:/data2 \
-v /opt/data3:/data3 \
-v /opt/data4:/data4 \
-v /opt/data5:/data5 \
-v /opt/data6:/data6 \
-v /opt/data7:/data7 \
-v /opt/data8:/data8 \
minio/minio server /data{1...8} --console-address ":5000"

分布式集群部署

分布式 Minio 可以让你将多块硬盘(甚至是在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障。

MinIO 新版配置

分布式 Minio 优势

数据保护

分布式 Minio 采用纠删码来防范多个节点宕机和位衰减 bit rot。
分布式 Minio 至少需要四块硬盘,使用分布式 Minio 自动引入了纠删码功能。

高可用

单机节点存在单点故障,相反,如果是一个有 N 块硬盘的分布式 MinIO,只要有 N/2 块硬盘在线,你的数据就是安全的。不过你需要有 N/2 + 1 个硬盘来创建新的对象。
例如,一个 16 个节点的 MinIO 集群,每个节点 16 块硬盘,就算 8 台服务器宕机,这个集群仍然是可读的,不过需要有 9 题啊服务器才能写数据

一致性

MinIO 在分布式和单机模式下,所有读写操作都严格遵守 read-adter-write 一致性模型

运行分布式 MioIO

启动一个分布式 MinIO 实例,你只需要把硬盘位置作为参数传给 minio server 命令即可,然后,你需要在其它节点运行同样的命令。

  • 分布式 minio 里所有的节点需要有同样的 access 密钥和 secret 密钥,这样这些节点才能建立联接。为了实现这个,你需要执行 minio server 命令之前,现将先将 access 密钥和secret 密钥 export成环境变量。新版本使用 MINIO_ROOT_USER & MINIO_ROOT_PASSWORD.

  • 分布式minio使用的磁盘里必须是干净的,里面没有数据。

  • 下面示例里的 IP 仅供参考,你需要改成你真实用到的 IP 和 文件夹路径。

  • 分布式 minio 里的节点时间差不能超过 3 秒,可以使用 NTP 来保证时间一致。

  • 在Windows 下运行分布式 minio 处于实验性阶段。

8 个节点,每个节点 1 块硬盘,需要在每个节点上都运行下面的命令

export MINIO_ROOT_USER = admin
export MINIO_ROOT_PASSWORD = 12345678
minio server http://192.168.1.11/export1 http://192.168.1.12/export2 \
 http://192.168.1.13/export3 http://192.168.1.14/export4 \
 http://192.168.1.15/export5 http://192.168.1.16/export6 \
 http://192.168.1.17/export7 http://192.168.1.18/export8 \

MinIO 新版配置

4 节点,每个节点 4 块硬盘

export MINIO_ROOT_USER = admin
export MINIO_ROOT_PASSWORD = 12345678
minio server http://192.168.1.11/export1 http://192.168.1.11/export2
 http://192.168.1.11/export3 http://192.168.1.11/export4
 http://192.168.1.12/export1 http://192.168.1.12/export2
 http://192.168.1.12/export3 http://192.168.1.12/export4
 http://192.168.1.13/export1 http://192.168.1.13/export2
 http://192.168.1.13/export3 http://192.168.1.13/export4
 http://192.168.1.14/export1 http://192.168.1.14/export2
 http://192.168.1.14/export3 http://192.168.1.14/export4

MinIO 新版配置

export MINIO_ROOT_USER = admin
export MINIO_ROOT_PASSWORD = 12345678
MINIO_HOME = /usr/local/soft
MINIO_HOST = 192.168.3.14
for i in {01..04}; do
  nohup ${MINIO_HOME}/minio server --address ":90${i}" --console-address ":50${i}" http://${MINIO_HOST}:9001/mnt/data01 http://${MINIO_HOST}:9002/mnt/data02 http://${MINIO_HOST}:9003/mnt/data03 http://${MINIO_HOST}:9004/mnt/data04 > ${MINIO_HOME}/minio-90${i}.log 2>&1 &
done

基于 nginx 实现 loadbalance

upstream minio {
    server 192.168.33.161:9000;
    server 192.168.33.162:9000;
    server 192.168.33.163:9000;
    server 192.168.33.164:9000;
}

upstream console {
    ip_hash;
    server 192.168.33.161:5000;
    server 192.168.33.162:5000;
    server 192.168.33.163:5000;
    server 192.168.33.164:5000;
}

server {
    listen      9000;
    server_name localhost;

    ignore_invalid_headers  off;
    client_max_body_size    0;
    proxy_buffering         off;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $http_x_forwarded_proto;

        proxy_connect_timeout   300;
        proxy_http_version      1.1;
        chunked_transfer_encoding   off;
        proxy_ignore_client_abort   on;

        proxy_pass  http://minio;
    }
}

server {
    listen      5000;
    server_name localhost;

    ignore_invalid_headers  off;
    client_max_body_size    0;
    proxy_buffering         off;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $http_x_forwarded_proto;

        proxy_connect_timeout   300;
        proxy_http_version      1.1;
        chunked_transfer_encoding   off;
        proxy_ignore_client_abort   on;

        proxy_pass  http://console;
    }
}

MinIO 客户端 mc 使用

MinIO Client (mc) 为 ls,cat,cp,mirror,diff,find 等 UNIX 命令提供了一种替代方案。它支持文件系统和兼容 Amazon S3 的云存储服务 (AWS Signature v2 和 v4)。

ls            列出文件和文件夹
mb            创建一个存储桶或一个文件夹
cat           显示文件和对象内容
pipe          将一个 STDIN 重定向到一个对象或者文件或者 STDOUT。
share         生成用于共享的 URL。
cp            拷贝文件和对象
mirror        给存储桶和文件夹做镜像
find          基于参数查找文件
diff          对两个文件夹或者存储桶比较差异
rm            删除文件夹或者对象
enents        管理对象通知
watch         监视文件和对象的事件
policy        管理访问策略
config        管理 mc 配置文件
update        检查软件更新
version       输出版本信息

部署客户端 mc

$ wget http://dl.minio.org.cn/client/mc/release/linux-amd64/mc
$ chmod +x mc
$ ./mc --help

配置 mc

mc 将所有的配置信息都存储在~/.minio/config.json文件中

# 查询 mc host 配置
$ mc config host ls
# 添加 minio 服务
$ mc config host add minio-server http://192.168.33.160:9000 admin 12345678
# 删除 host
$ mc config host remove minio-server

mc 具体命令操作参考官方文档即可。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!