跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

MinIO

开源对象存储服务

Min.IO:兼容 S3 的开源多云对象存储服务,设计为可扩展、安全且便捷。 它具有原生的多节点多驱动器 HA 支持,可以存储文档、图片、视频和备份。它是 Pigsty 中的一个 可选模块

您可以使用 MinIO 作为可选的 PostgreSQL 备份 存储仓库,除了默认的本地 posix FS 仓库之外。如果使用 MinIO 仓库, MINIO 模块应该在任何 PGSQL 模块之前安装。MinIO 需要受信任的 CA 才能工作,所以您必须在 NODE 之后安装它。


配置
    配置 minio 模块,并使用多个 minio 节点。
参数
    使用 22 个参数自定义 minio 组件
管理
    创建、移除、扩展、收缩、升级 minio 集群
剧本
    可在此模块中使用的 Ansible 剧本
监控
    仪表板、指标、记录和告警规则。
使用
    如何使用 mcli 和配置备份仓库

1 - 使用

MinIO 与 mcli 使用入门,如何访问 MinIO 服务?

MinIO 集群 配置 并通过 剧本 部署完成后,您可以按照以下说明开始使用和访问 MinIO 集群。


部署集群

使用 Pigsty 部署单节点 MinIO 实例非常简单。

minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }

配置清单 中定义它,然后运行剧本:

./minio.yml -l minio

install.yml 剧本将自动创建清单中定义的 MinIO 集群,因此如果您选择默认的一次性安装,无需手动运行 minio.yml 剧本。

如果您计划部署生产级大规模多节点 MinIO 集群,我们 强烈 建议您在开始之前阅读 Pigsty MinIO 配置文档 和 MinIO 官方文档


访问集群

您必须通过 HTTPS 访问 MinIO,因此请确保默认的 minio 服务域名(sss.pigsty)指向正确的位置:

  1. 您可以在 node_etc_hosts 中添加静态解析记录或手动修改 /etc/hosts 文件
  2. 如果您正在使用 DNS 服务,可以在内部 DNS 服务器上添加记录
  3. 如果您正在使用基础设施节点上的 DNSMASQ,可以在 dns_records 中添加记录

建议使用第一种方法:静态 DNS 解析记录,以避免 MinIO 在生产环境中对 DNS 的额外依赖。

您必须将 MinIO 服务域名指向 MinIO 服务器节点的 IP 地址和服务端口,或负载均衡器的 IP 地址和服务端口。Pigsty 将使用默认域名 sss.pigsty 和默认端口 9000

例如,如果您使用 haproxy 来暴露 MinIO 服务 像这样,端口可能是 9002


添加别名

要使用 mcli 客户端访问 MinIO 服务器集群,您需要首先配置服务器别名:

mcli alias ls  # 列出 minio 别名(默认是 sss)
mcli alias set sss https://sss.pigsty:9000 minioadmin minioadmin              # root 用户
mcli alias set sss https://sss.pigsty:9002 minioadmin minioadmin              # root 用户,在负载均衡器端口 9002 上

mcli alias set pgbackrest https://sss.pigsty:9000 pgbackrest S3User.Backup    # 使用其他用户

在管理节点的管理用户上有一个预配置的名为 sss 的 MinIO 别名,您可以直接使用它。

关于 MinIO 客户端工具 mcli 的完整功能,请参考文档:MinIO Client


管理用户

您可以使用 mcli 在 MinIO 中管理业务用户,例如,您可以使用命令行创建两个默认业务用户:

mcli admin user list sss     # 列出所有用户
set +o history               # 隐藏 shell 历史
mcli admin user add sss dba S3User.DBA
mcli admin user add sss pgbackrest S3User.Backup
set -o history

管理桶

您可以使用 mcli 管理桶:

mcli ls sss/                         # 列出 'sss' 上的所有桶
mcli mb --ignore-existing sss/hello  # 创建名为 'hello' 的桶
mcli rb --force sss/hello            # 删除 'hello' 桶

管理对象

您可以使用 cli 执行对象 CRUD 操作,例如:

mcli cp /www/pigsty/* sss/infra/     # 将本地仓库内容上传到 infra 桶
mcli cp sss/infra/plugins.tgz /tmp/  # 从 minio 下载文件到本地
mcli ls sss/infra                    # 列出 infra 桶中的所有文件
mcli rm sss/infra/plugins.tgz        # 删除 infra 桶中的文件
mcli cat sss/infra/repo_complete     # 输出文件内容

详细信息请查看 教程:对象管理


使用 rclone

Pigsty 仓库中提供了 rclone,这是一个方便的云对象存储客户端,您可以使用它来访问 MinIO 服务。

yum install rclone; # el 兼容
dnf install rclone; # debian/ubuntu

mkdir -p ~/.config/rclone/;
tee ~/.config/rclone/rclone.conf > /dev/null <<EOF
[sss]
type = s3
access_key_id = minioadmin
secret_access_key = minioadmin
endpoint = sss.pigsty:9000
EOF

rclone ls sss:/

备份仓库

在 Pigsty 中,MinIO 默认用作 pgBackRest 的备份仓库。当您将 pgbackrest_method 修改为 minio 时,PGSQL 模块将自动将备份仓库切换到 MinIO。

pgbackrest_method: local          # pgbackrest 仓库方法:local,minio,[用户定义...]
pgbackrest_repo:                  # pgbackrest 仓库:https://pgbackrest.org/configuration.html#section-repository
  local:                          # 使用本地 posix fs 的默认 pgbackrest 仓库
    path: /pg/backup              # 本地备份目录,默认为 `/pg/backup`
    retention_full_type: count    # 按数量保留完整备份
    retention_full: 2             # 使用本地 fs 仓库时保留 2 个,最多 3 个完整备份
  minio:                          # pgbackrest 可选的 minio 仓库
    type: s3                      # minio 兼容 s3,因此使用 s3
    s3_endpoint: sss.pigsty       # minio 端点域名,默认为 `sss.pigsty`
    s3_region: us-east-1          # minio 区域,默认为 us-east-1,对 minio 无用
    s3_bucket: pgsql              # minio 桶名,默认为 `pgsql`
    s3_key: pgbackrest            # pgbackrest 的 minio 用户访问密钥
    s3_key_secret: S3User.Backup  # pgbackrest 的 minio 用户密钥
    s3_uri_style: path            # 对 minio 使用路径样式 uri 而不是主机样式
    path: /pgbackrest             # minio 备份路径,默认为 `/pgbackrest`
    storage_port: 9000            # minio 端口,默认为 9000
    storage_ca_file: /pg/cert/ca.crt  # minio ca 文件路径,默认为 `/pg/cert/ca.crt`
    bundle: y                     # 将小文件打包成单个文件
    cipher_type: aes-256-cbc      # 为远程备份仓库启用 AES 加密
    cipher_pass: pgBackRest       # AES 加密密码,默认为 'pgBackRest'
    retention_full_type: time     # 在 minio 仓库上按时间保留完整备份
    retention_full: 14            # 保留最近 14 天的完整备份

请注意,如果您通过负载均衡器使用 MinIO,您应该在此处使用相应的域名和端口号。

2 - 集群配置

根据需求场景选择合适的 MinIO 部署类型,并对外提供可靠的接入。

在部署 MinIO 之前,你需要在 配置清单 中定义一个 MinIO 集群,MinIO 有三种经典部署模式:

  • 单机单盘:SNSD:单机单盘模式,可以使用任意目录作为数据盘,仅作为开发、测试、演示使用。
  • 单机多盘:SNMD:折中模式,在单台服务器上使用多块磁盘 (>=2),仅当资源极为有限时使用。
  • 多机多盘:MNMD:多机多盘模式,标准生产环境部署,具有最好的可靠性,但需要多台服务器。

通常我们建议使用 SNSD 与 MNMD 这两种模式,前者用于开发测试,后者用于生产部署,SNMD 仅在资源有限(只有一台服务器)的情况下使用。

此外,还可以使用 多池部署 来实现现有 MinIO 集群的扩容,或者直接部署 多套集群

使用多节点 MinIO 集群时,访问任意节点都可以获取服务,因此最佳实践是在 MinIO 集群前使用负载均衡与高可用服务接入机制


核心参数

MinIO 部署中,MINIO_VOLUMES 是一个核心配置参数,用于指定 MinIO 的部署模式。 Pigsty 提供了一些便捷的参数用于自动根据配置清单,生成 MINIO_VOLUMES 与其他配置参数的值,但您也可以直接指定它们。

  • 单机单盘: MINIO_VOLUMES 指向本机上的一个普通目录,默认由 minio_data 指定,默认位置为 /data/minio
  • 单机多盘: MINIO_VOLUMES 指向本机上的序列挂载点,同样是由 minio_data 指定,但需要用特殊语法显式覆盖指定真实挂载点,例如 /data{1...4}
  • 多机多盘: MINIO_VOLUMES 指向多台服务器上的序列挂载点,由以下两部分自动组合生成:
    • 首先要使用 minio_data 指定集群每个成员的磁盘挂载点序列 /data{1...4}
    • 还需要使用 minio_node 指定节点的命名模式 ${minio_cluster}-${minio_seq}.pigsty
  • 多池部署: 您需要显式指定 minio_volumes 参数来分配每个存储池的节点,从而实现集群扩容

单机单盘

SNSD 模式,部署参考教程:MinIO 单机单盘部署

在 Pigsty 中,定义一个单例 MinIO 实例非常简单:

# 1 节点 1 驱动器(默认)
minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }

单机模式下,唯一必要的参数是 minio_seqminio_cluster,它们会唯一标识每一个 MinIO 实例。

单节点单磁盘模式仅用于开发目的,因此您可以使用一个普通的目录作为数据目录,该目录由参数 minio_data 默认为 /data/minio

在您使用 MinIO 时,强烈建议您通过静态解析的域名记录访问 MinIO,例如,假设 minio_domain 设置的内部服务域名使用了默认的 sss.pigsty, 那么您可以在所有节点上添加一个静态解析,便于其他节点访问此服务。

node_etc_hosts: ["10.10.10.10 sss.pigsty"] # domain name to access minio from all nodes (required)
SNSD 仅适用于开发测试

单节点单盘模式应当仅用于开发、测试、演示目的,因为它无法容忍任何硬件故障,也无法带来多磁盘的性能改善。生产环境请使用 多机多盘 模式。


单机多盘

SNMD 模式,部署参考教程:MinIO 单机多盘部署

要在单节点上使用多块磁盘,所需的操作与 单机单盘 基本一致,但用户需要以 {{ prefix }}{x...y} 的特定格式指定 minio_data,该格式定义了序列磁盘挂载点。

minio:
  hosts: { 10.10.10.10: { minio_seq: 1 } }
  vars:
    minio_cluster: minio         # minio 集群名称,默认为 minio
    minio_data: '/data{1...4}'   # minio 数据目录,使用 {x...y} 记号来指定多块磁盘
请使用真实磁盘挂载点

请注意,SNMD 模式不支持使用普通目录作为数据目录。如果您使用 SNMD 模式拉起 MinIO,但数据目录不是有效的磁盘挂载点,MinIO 将拒绝启动。请确保使用 XFS 格式化的真实磁盘。

例如 Vagrant MinIO 沙箱 定义了一个带有4块磁盘的单节点 MinIO 集群:/data1/data2/data3/data4。启动 MinIO 之前,你需要正确地挂载它们(请务必使用 xfs 格式化磁盘):

mkfs.xfs /dev/vdb; mkdir /data1; mount -t xfs /dev/sdb /data1;   # 挂载第1块盘……
mkfs.xfs /dev/vdc; mkdir /data2; mount -t xfs /dev/sdb /data2;   # 挂载第2块盘……
mkfs.xfs /dev/vdd; mkdir /data3; mount -t xfs /dev/sdb /data3;   # 挂载第3块盘……
mkfs.xfs /dev/vde; mkdir /data4; mount -t xfs /dev/sdb /data4;   # 挂载第4块盘……

挂载磁盘属于服务器置备的部分,超出 Pigsty 的处理范畴。挂载的磁盘应该同时写入 /etc/fstab 以便在服务器重启后可以自动挂载。

/dev/vdb /data1 xfs defaults,noatime,nodiratime 0 0
/dev/vdc /data2 xfs defaults,noatime,nodiratime 0 0
/dev/vdd /data3 xfs defaults,noatime,nodiratime 0 0
/dev/vde /data4 xfs defaults,noatime,nodiratime 0 0

SNMD 模式可以利用单机上的多块磁盘,提供更高的性能和容量,并且容忍部分磁盘故障。 但单节点模式无法容忍整个节点的故障,而且您无法在运行时添加新的节点,因此如果没有特殊原因,我们不建议在生产环境中使用 SNMD 模式。


多机多盘

MNMD 模式,部署参考教程:MinIO 多机多盘部署

除了需要 单机多盘 模式中的 minio_data 指定磁盘驱动器,使用MinIO 多节点部署需要使用一个额外的 minio_node 参数。

例如,以下配置定义了一个 MinIO 集群,其中有四个节点,每个节点有四块磁盘:

minio:
  hosts:
    10.10.10.10: { minio_seq: 1 }  # 实际节点名: minio-1.pigsty
    10.10.10.11: { minio_seq: 2 }  # 实际节点名: minio-2.pigsty
    10.10.10.12: { minio_seq: 3 }  # 实际节点名: minio-3.pigsty
    10.10.10.13: { minio_seq: 4 }  # 实际节点名: minio-4.pigsty
  vars:
    minio_cluster: minio
    minio_data: '/data{1...4}'                         # 每个节点使用四块磁盘
    minio_node: '${minio_cluster}-${minio_seq}.pigsty' # minio 节点名称规则

minio_node 参数指定了 MinIO 节点名称的模式,用于生成每个节点的唯一名称。 默认情况下,节点名称是 ${minio_cluster}-${minio_seq}.pigsty,其中 ${minio_cluster} 是集群名称,${minio_seq} 是节点序号。 MinIO 实例的名称非常重要,会自动写入到 MinIO 节点的 /etc/hosts 中进行静态解析。MinIO 依靠这些名称来识别并访问集群中的其他节点。

在这种情况下,MINIO_VOLUMES 将被设置为 https://minio-{1...4}.pigsty/data{1...4} ,以标识四个节点上的四块盘。 您可以直接在 MinIO 集群中指定 minio_volumes 参数,来覆盖自动根据规则生成的值。 但通常不需要这样做,因为 Pigsty 会自动根据配置清单生成它。


多池部署

MinIO 的架构允许通过添加新的存储池来扩容。在 Pigsty 中,您可以通过显式指定 minio_volumes 参数来分配每个存储池的节点,从而实现集群扩容。

例如,假设您已经创建了 多机多盘 样例中定义的 MinIO 集群,现在您想要添加一个新的存储池,同样由四个节点构成。

那么,你需要直接覆盖指定 minio_volumes 参数:

minio:
  hosts:
    10.10.10.10: { minio_seq: 1 }
    10.10.10.11: { minio_seq: 2 }
    10.10.10.12: { minio_seq: 3 }
    10.10.10.13: { minio_seq: 4 }

    10.10.10.14: { minio_seq: 5 }
    10.10.10.15: { minio_seq: 6 }
    10.10.10.16: { minio_seq: 7 }
    10.10.10.17: { minio_seq: 8 }
  vars:
    minio_cluster: minio
    minio_data: "/data{1...4}"
    minio_node: '${minio_cluster}-${minio_seq}.pigsty' # minio 节点名称规则
    minio_volumes: 'https://minio-{1...4}.pigsty:9000/data{1...4} https://minio-{5...8}.pigsty:9000/data{1...4}'

在这里,空格分割的两个参数分别代表两个存储池,每个存储池有四个节点,每个节点有四块磁盘。更多关于存储池的信息请参考 管理预案:MinIO集群扩容


多套集群

您可以将新的 MinIO 节点部署为一个全新的 MinIO 集群,使用不同的集群名称定义一个新的分组即可,以下配置声明了两个独立的 MinIO 集群:

minio1:
  hosts:
    10.10.10.10: { minio_seq: 1 }
    10.10.10.11: { minio_seq: 2 }
    10.10.10.12: { minio_seq: 3 }
    10.10.10.13: { minio_seq: 4 }
  vars:
    minio_cluster: minio2
    minio_data: "/data{1...4}"

minio2:
  hosts:
    10.10.10.14: { minio_seq: 5 }
    10.10.10.15: { minio_seq: 6 }
    10.10.10.16: { minio_seq: 7 }
    10.10.10.17: { minio_seq: 8 }
  vars:
    minio_cluster: minio2
    minio_data: "/data{1...4}"
    minio_alias: sss2
    minio_domain: sss2.pigsty
    minio_endpoint: sss2.pigsty:9000

请注意,Pigsty 默认一套部署中只有一个 MinIO 集群,如果您需要部署多个 MinIO 集群,那么一些带有默认值的参数需要显式设置,无法省略,否则会出现命名冲突,如上所示。


服务接入

MinIO 默认使用 9000 端口提供服务。多节点 MinIO 集群可以通过访问 任意一个节点 来访问其服务。

服务接入属于 NODE 模块的功能范畴,这里仅做基本介绍。

多节点 MinIO 集群的高可用接入可以使用 L2 VIP 或 HAProxy 实现。例如,您可以选择使用 keepalived 在 MinIO 集群上绑定一个 L2 VIP, 或者使用由 NODE 模块的提供的 haproxy 组件,通过负载均衡器对外暴露 MinIO 服务。

# minio cluster with 4 nodes and 4 drivers per node
minio:
  hosts:
    10.10.10.10: { minio_seq: 1 , nodename: minio-1 }
    10.10.10.11: { minio_seq: 2 , nodename: minio-2 }
    10.10.10.12: { minio_seq: 3 , nodename: minio-3 }
    10.10.10.13: { minio_seq: 4 , nodename: minio-4 }
  vars:
    minio_cluster: minio
    minio_data: '/data{1...4}'
    minio_buckets: [ { name: pgsql }, { name: infra }, { name: redis } ]
    minio_users:
      - { access_key: dba , secret_key: S3User.DBA, policy: consoleAdmin }
      - { access_key: pgbackrest , secret_key: S3User.SomeNewPassWord , policy: readwrite }

    # bind a node l2 vip (10.10.10.9) to minio cluster (optional)
    node_cluster: minio
    vip_enabled: true
    vip_vrid: 128
    vip_address: 10.10.10.9
    vip_interface: eth1

    # expose minio service with haproxy on all nodes
    haproxy_services:
      - name: minio                    # [REQUIRED] service name, unique
        port: 9002                     # [REQUIRED] service port, unique
        balance: leastconn             # [OPTIONAL] load balancer algorithm
        options:                       # [OPTIONAL] minio health check
          - option httpchk
          - option http-keep-alive
          - http-check send meth OPTIONS uri /minio/health/live
          - http-check expect status 200
        servers:
          - { name: minio-1 ,ip: 10.10.10.10 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-2 ,ip: 10.10.10.11 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-3 ,ip: 10.10.10.12 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-4 ,ip: 10.10.10.13 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }

例如,上面的配置块为 MinIO 集群的所有节点上启用了 HAProxy ,在 9002 端口上暴露 MinIO 服务,同时为集群绑定了一个二层 VIP。 当使用时,用户应当将 sss.pigsty 域名解析指向 VIP 地址 10.10.10.9,并使用 9002 端口访问 MinIO 服务。这样当任意一个节点发生故障时,VIP 会自动切换到另一个节点,保证服务的高可用性。

在这种情况下,您通常还需要在全局修改域名解析的目的地,以及 minio_endpoint 参数,修改写入管理节点 MinIO Alias 对应的端点地址:

minio_endpoint: https://sss.pigsty:9002   # 覆盖默认值: https://sss.pigsty:9000
node_etc_hosts: ["10.10.10.9 sss.pigsty"] # 其他节点将使用 sss.pigsty 域名来访问 MinIO

专用负载均衡

Pigsty 允许用户使用专用的负载均衡服务器组,而不是集群本身来运行 VIP 与 HAProxy。例如 prod 模板中就使用了这种方式。

proxy:
  hosts:
    10.10.10.18 : { nodename: proxy1 ,node_cluster: proxy ,vip_interface: eth1 ,vip_role: master }
    10.10.10.19 : { nodename: proxy2 ,node_cluster: proxy ,vip_interface: eth1 ,vip_role: backup }
  vars:
    vip_enabled: true
    vip_address: 10.10.10.20
    vip_vrid: 20

    haproxy_services:      # expose minio service : sss.pigsty:9000
      - name: minio        # [REQUIRED] service name, unique
        port: 9000         # [REQUIRED] service port, unique
        balance: leastconn # Use leastconn algorithm and minio health check
        options: [ "option httpchk", "option http-keep-alive", "http-check send meth OPTIONS uri /minio/health/live", "http-check expect status 200" ]
        servers:           # reload service with ./node.yml -t haproxy_config,haproxy_reload
          - { name: minio-1 ,ip: 10.10.10.21 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-2 ,ip: 10.10.10.22 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-3 ,ip: 10.10.10.23 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-4 ,ip: 10.10.10.24 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-5 ,ip: 10.10.10.25 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }

在这种情况下,您通常还需要在全局修改 MinIO 域名的解析,将 sss.pigsty 指向负载均衡器的地址,并修改 minio_endpoint 参数,修改写入管理节点 MinIO Alias 对应的端点地址:

minio_endpoint: https://sss.pigsty:9002    # overwrite the defaults: https://sss.pigsty:9000
node_etc_hosts: ["10.10.10.20 sss.pigsty"] # domain name to access minio from all nodes (required)

访问服务

如果您想要访问上面通过 HAProxy 暴露的 MinIO,以 PGSQL 备份配置为例,可以修改 pgbackrest_repo 中的配置,添加新的备份仓库定义:

# 这是新添加的 HA MinIO Repo 定义,使用此配置代替之前的单机 MinIO 配置
minio_ha:
  type: s3
  s3_endpoint: minio-1.pigsty   # s3_endpoint 可以是任何一个负载均衡器:10.10.10.1{0,1,2},或指向任意 3 个节点的域名
  s3_region: us-east-1          # 你可以使用外部域名:sss.pigsty,该域名指向任一成员(`minio_domain`)
  s3_bucket: pgsql              # 你可使用实例名和节点名:minio-1.pigsty minio-1.pigsty minio-1.pigsty minio-1 minio-2 minio-3
  s3_key: pgbackrest            # 最好为 MinIO 的 pgbackrest 用户使用专门的密码
  s3_key_secret: S3User.SomeNewPassWord
  s3_uri_style: path
  path: /pgbackrest
  storage_port: 9002            # 使用负载均衡器的端口 9002 代替默认的 9000(直接访问)
  storage_ca_file: /etc/pki/ca.crt
  bundle: y
  cipher_type: aes-256-cbc      # 在您的生产环境中最好使用新的加密密码,这里可以使用集群名作为密码的一部分。
  cipher_pass: pgBackRest.With.Some.Extra.PassWord.And.Salt.${pg_cluster}
  retention_full_type: time
  retention_full: 14

暴露管控

MinIO 默认通过 9001 端口(由 minio_admin_port 参数指定)提供Web管控界面。

将后台管理界面暴露给外部可能存在安全隐患。如果你希望这样做,请将 MinIO 添加到 infra_portal 并刷新 Nginx 配置。

# ./infra.yml -t nginx
infra_portal:
  home         : { domain: h.pigsty }
  grafana      : { domain: g.pigsty ,endpoint: "${admin_ip}:3000" , websocket: true }
  prometheus   : { domain: p.pigsty ,endpoint: "${admin_ip}:9090" }
  alertmanager : { domain: a.pigsty ,endpoint: "${admin_ip}:9093" }
  blackbox     : { endpoint: "${admin_ip}:9115" }
  loki         : { endpoint: "${admin_ip}:3100" }

  # MinIO 管理页面需要 HTTPS / Websocket 才能工作
  minio        : { domain: m.pigsty     ,endpoint: "10.10.10.10:9001" ,scheme: https ,websocket: true }
  minio10      : { domain: m10.pigsty   ,endpoint: "10.10.10.10:9001" ,scheme: https ,websocket: true }
  minio11      : { domain: m11.pigsty   ,endpoint: "10.10.10.11:9001" ,scheme: https ,websocket: true }
  minio12      : { domain: m12.pigsty   ,endpoint: "10.10.10.12:9001" ,scheme: https ,websocket: true }
  minio13      : { domain: m13.pigsty   ,endpoint: "10.10.10.13:9001" ,scheme: https ,websocket: true }

请注意,MinIO 管控页面需要使用 HTTPS,请 不要 在生产环境中暴露未加密的 MinIO 管控页面。

这意味着,您通常需要在您的 DNS 服务器,或者本机 /etc/hosts 中添加 m.pigsty 的解析记录,以便访问 MinIO 管控页面。

与此同时,如果您使用的是 Pigsty 自签名的 CA 而不是一个正规的公共 CA ,通常您还需要手工信任该 CA 或证书,才能跳过浏览器中的 “不安全” 提示信息。

3 - 参数

自定义 MinIO 参数

MinIO 是一个兼容 S3 的对象存储服务。它被用作 PostgreSQL 的可选中央备份存储仓库。

您也可以将其用于其他目的,例如存储大文件、文档、图片和视频。


参数

MinIO 模块记录 21 项设置:16 个 MINIO 参数、2 个可覆盖的派生值,以及 3 个 MINIO_REMOVE 参数。

参数 类型 层级 注释
minio_seq int I minio 实例标识符,必需
minio_cluster string C minio 集群名称,默认为 minio
minio_user username C minio 操作系统用户,默认为 minio
minio_https bool G 为 minio 使用 https,默认为 true
minio_node string C minio 节点名称模式
minio_data path C minio 数据目录,使用 {x...y} 指定多个驱动器
minio_volumes string C minio 核心参数,指定节点和磁盘,默认自动生成
minio_domain string G minio 外部域名,默认为 sss.pigsty
minio_port port C minio 服务端口,默认为 9000
minio_admin_port port C minio 控制台端口,默认为 9001
minio_access_key username C root 访问密钥,默认为 minioadmin
minio_secret_key password C root 密钥,默认为 minioadmin
minio_extra_vars string C minio 服务器的额外环境变量
minio_provision bool G/C 运行 minio 置备任务?
minio_alias string G 本地 minio 部署的别名
minio_endpoint string C 上述 minio 别名对应的 host:port
minio_buckets bucket[] C 要创建的 minio 桶列表
minio_users user[] C 要创建的 minio 用户列表
参数 类型 层级 注释
minio_safeguard bool G/C/A 防止意外移除?(默认:false)
minio_rm_data bool G/C/A 移除期间删除 minio 数据?(默认:true)
minio_rm_pkg bool G/C/A 移除期间卸载 minio 包?(默认:false)

minio_volumesminio_endpoint 是自动生成的参数,但您可以显式覆盖这两个参数。


默认值

MINIO 共有 18 项设置(含 2 个派生值),定义于 roles/minio/defaults/main.yml

#-----------------------------------------------------------------
# MINIO
#-----------------------------------------------------------------
#minio_seq: 1                     # minio 实例标识符,必需
minio_cluster: minio              # minio 集群标识符,必需
minio_user: minio                 # minio 操作系统用户,默认为 `minio`
minio_https: true                 # 为 minio 使用 https,默认为 true
minio_node: '${minio_cluster}-${minio_seq}.pigsty' # minio 节点名称模式
minio_data: '/data/minio'         # minio 数据目录,使用 {x...y} 指定多个驱动器
#minio_volumes:                   # minio 数据卷,如果指定则覆盖默认值
minio_domain: sss.pigsty          # minio 外部域名,默认为 `sss.pigsty`
minio_port: 9000                  # minio 服务端口,默认为 9000
minio_admin_port: 9001            # minio 控制台端口,默认为 9001
minio_access_key: minioadmin      # root 访问密钥,默认为 `minioadmin`
minio_secret_key: minioadmin      # root 密钥,默认为 `minioadmin`
minio_extra_vars: ''              # 额外环境变量
minio_provision: true             # 运行 minio 置备任务?
minio_alias: sss                  # 本地 minio 部署的别名
#minio_endpoint: https://sss.pigsty:9000 # 如果未指定,由默认值覆盖
minio_buckets:                    # 要创建的 minio 桶列表
  - { name: pgsql }
  - { name: meta ,versioning: true }
  - { name: data }
minio_users:                      # 要创建的 minio 用户列表
  - { access_key: pgbackrest  ,secret_key: S3User.Backup ,policy: pgsql }
  - { access_key: s3user_meta ,secret_key: S3User.Meta   ,policy: meta  }
  - { access_key: s3user_data ,secret_key: S3User.Data   ,policy: data  }

MINIO_REMOVE 共有 3 个参数,定义于 roles/minio_remove/defaults/main.yml 中:

#-----------------------------------------------------------------
# MINIO_REMOVE
#-----------------------------------------------------------------
minio_safeguard: false            # 防止意外移除?
minio_rm_data: true               # 移除期间删除 minio 数据?
minio_rm_pkg: false               # 移除期间卸载 minio 包?

minio_seq

名称:minio_seq,类型:int,层级:I

minio 实例标识符,必需的身份参数。没有默认值,您必须手动分配它


minio_cluster

名称:minio_cluster,类型:string,层级:C

minio 集群名称,默认为 minio。这在部署多个 MinIO 集群时很有用


minio_user

名称:minio_user,类型:username,层级:C

minio 操作系统用户名,默认为 minio


minio_https

名称:minio_https,类型:bool,层级:G

为 MinIO 服务使用 HTTPS 还是 HTTP,默认为 true,表示使用 HTTPS。

请注意,pgbackrest 需要 MinIO HTTPS 才能正常工作,但如果您不将 minio 用于此目的,并且不想为 MinIO 使用 HTTPS,您可以将其设置为 false


minio_node

名称:minio_node,类型:string,层级:C

minio 节点名称模式,这用于 多节点 部署

默认值:${minio_cluster}-${minio_seq}.pigsty


minio_data

名称:minio_data,类型:path,层级:C

minio 数据目录

默认值:/data/minio,这是 单节点 部署的通用目录。

对于 多驱动器 部署,您可以使用 {x...y} 概念来指定多个驱动器。


minio_volumes

名称:minio_volumes,类型:string,层级:C

MinIO 的唯一核心参数,如果未指定,将按以下规则自动生成:

minio_volumes: "{% if minio_cluster_size|int > 1 %}https://{{ minio_node|replace('${minio_cluster}', minio_cluster)|replace('${minio_seq}',minio_seq_range) }}:{{ minio_port|default(9000) }}{% endif %}{{ minio_data }}"
  • SNSDSNMD 部署的情况下,minio_volumes 直接使用 minio_data 的值
  • MNMD 部署的情况下,minio_volumes 使用 minio_nodeminio_portminio_data 的值来生成此参数:
  • 在多个存储池的情况下,您必须覆盖 minio_volumes 来显式指定多个节点池。

用户有责任确保 minio_volumes 中使用的参数与 minio_nodeminio_portminio_data 一致。


minio_domain

名称:minio_domain,类型:string,层级:G

minio 服务域名,默认为 sss.pigsty

客户端可以通过此域名访问 minio S3 服务。此名称将注册到本地 DNSMASQ 并包含在 SSL 证书中。


minio_port

名称:minio_port,类型:port,层级:C

minio 服务端口,默认为 9000


minio_admin_port

名称:minio_admin_port,类型:port,层级:C

minio 控制台端口,默认为 9001


minio_access_key

名称:minio_access_key,类型:username,层级:C

root 访问密钥,默认为 minioadmin


minio_secret_key

名称:minio_secret_key,类型:password,层级:C

root 密钥,默认为 minioadmin

默认值:minioadmin

更改密码!

在您的部署中更改此密码非常重要!


minio_extra_vars

名称:minio_extra_vars,类型:string,层级:C

minio 服务器的额外环境变量。查看 Minio Server 获取完整列表。

默认值为空字符串,您可以使用多行字符串传递多个环境变量。


minio_alias

名称:minio_alias,类型:string,层级:G

本地 MinIO 集群的 MinIO 别名

默认值:sss,将写入基础设施节点/管理用户的客户端别名配置文件。


minio_endpoint

名称:minio_endpoint,类型:string,层级:C

上述 MinIO 别名对应的 host:port。此参数默认未定义。

如果未定义,将被以下默认值覆盖:

mcli alias set {{ minio_alias }} {% if minio_endpoint is defined and minio_endpoint != '' %}{{ minio_endpoint }}{% else %}https://{{ minio_domain }}:{{ minio_port }}{% endif %} {{ minio_access_key }} {{ minio_secret_key }}

此别名和端点将添加到管理节点上的管理用户。


minio_buckets

名称:minio_buckets,类型:bucket[],层级:C

默认要创建的 minio 桶列表:

minio_buckets:                    # 要创建的 minio 桶列表
  - { name: pgsql }
  - { name: meta ,versioning: true }
  - { name: data }

默认创建三个桶,具有不同的策略。

pgsql 桶默认用于 PostgreSQL 备份。而 metadata 是用于其他目的的开放桶。 例如,supabase 模板可能使用 data 桶来存储业务数据。

如果您有需要版本控制的重要元数据,可以开箱即用地使用 meta 桶。

每个桶都有相应的策略,名称与桶名相同。例如,pgsql 策略对 pgsql 桶有所有权限,等等。

您还可以在桶定义中添加 lock 标志,这将启用对象锁定功能,以防止意外删除桶中的对象。


minio_users

名称:minio_users,类型:user[],层级:C

要创建的 minio 用户列表,默认值:

minio_users:                      # 要创建的 minio 用户列表
  - { access_key: pgbackrest  ,secret_key: S3User.Backup ,policy: pgsql }
  - { access_key: s3user_meta ,secret_key: S3User.Meta   ,policy: meta  }
  - { access_key: s3user_data ,secret_key: S3User.Data   ,policy: data  }

为 PostgreSQL DBA 和 pgBackREST 创建默认用户。

更改密码!

请在严肃的生产部署中更改这些密码。


minio_safeguard

名称:minio_safeguard,类型:bool,层级:G/C/A

防止意外移除?默认值为 false

如果启用,minio-rm.yml 剧本将中止并拒绝移除 MinIO 集群,提供防止意外删除的保护。


minio_rm_data

名称:minio_rm_data,类型:bool,层级:G/C/A

移除期间删除 minio 数据?默认值为 true

启用时,minio-rm.yml 剧本将在集群移除期间删除 MinIO 数据目录和配置文件。


minio_rm_pkg

名称:minio_rm_pkg,类型:bool,层级:G/C/A

移除期间卸载 minio 包?默认值为 false

启用时,minio-rm.yml 剧本将在集群移除期间卸载 MinIO 包。默认禁用此功能,以保留 MinIO 安装以供将来可能使用。

4 - 管理

创建、移除、扩展、收缩、升级 minio 集群

以下是 MinIO 的一些管理标准操作程序:

查看 MINIO: FAQ 了解更多问题。


创建集群

要创建 MinIO 集群,首先在 清单 中定义 minio 集群:

minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }

minio_cluster 参数将此集群标记为 MinIO 集群,minio_seq 是 MinIO 节点的序列号,用于生成 MinIO 节点名称如 minio-1minio-2 等。

此代码片段定义了一个单节点 MinIO 集群,使用以下命令创建 MinIO 集群:

./minio.yml -l minio  # 在 minio 组上初始化 MinIO 模块

移除集群

要销毁现有的 MinIO 集群,使用专用的 minio-rm.yml 剧本:

./minio-rm.yml -l minio                                  # 移除 MinIO 集群

您也可以使用参数自定义移除过程:

./minio-rm.yml -l minio -e minio_rm_pkg=true            # 同时移除包
./minio-rm.yml -l minio -e minio_rm_data=false          # 保留数据目录
./minio-rm.yml -l minio -e minio_safeguard=true         # 启用安全防护(将中止)

传统方法(已弃用):

架构变更:Pigsty v3.6+

自 Pigsty v3.6+ 起,MinIO 集群移除已移至使用 minio_remove 角色的专用 minio-rm.yml 剧本。移除过程中会自动清理 prometheus 监控目标。


扩展集群

您无法在节点/磁盘级别扩展 MinIO,但可以在存储池(多个节点)级别扩展。

假设您有一个 4 节点的 MinIO 集群,想通过添加另一个四节点存储池来将容量翻倍。

minio:
  hosts:
    10.10.10.10: { minio_seq: 1 , nodename: minio-1 }
    10.10.10.11: { minio_seq: 2 , nodename: minio-2 }
    10.10.10.12: { minio_seq: 3 , nodename: minio-3 }
    10.10.10.13: { minio_seq: 4 , nodename: minio-4 }
  vars:
    minio_cluster: minio
    minio_data: '/data{1...4}'
    minio_buckets: [ { name: pgsql }, { name: infra }, { name: redis } ]
    minio_users:
      - { access_key: dba , secret_key: S3User.DBA, policy: consoleAdmin }
      - { access_key: pgbackrest , secret_key: S3User.SomeNewPassWord , policy: readwrite }

    # 绑定节点 l2 vip (10.10.10.9) 到 minio 集群(可选)
    node_cluster: minio
    vip_enabled: true
    vip_vrid: 128
    vip_address: 10.10.10.9
    vip_interface: eth1

    # 在所有节点上使用 haproxy 暴露 minio 服务
    haproxy_services:
      - name: minio                    # [必需] 服务名称,唯一
        port: 9002                     # [必需] 服务端口,唯一
        balance: leastconn             # [可选] 负载均衡算法
        options:                       # [可选] minio 健康检查
          - option httpchk
          - option http-keep-alive
          - http-check send meth OPTIONS uri /docs/minio/health/live
          - http-check expect status 200
        servers:
          - { name: minio-1 ,ip: 10.10.10.10 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-2 ,ip: 10.10.10.11 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-3 ,ip: 10.10.10.12 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
          - { name: minio-4 ,ip: 10.10.10.13 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }

步骤 1,在组中添加 4 个节点定义,分配序列号 5 到 8。 关键步骤是修改 minio_volumes 参数,将新的 4 个节点分配到新的 存储池

minio:
  hosts:
    10.10.10.10: { minio_seq: 1 , nodename: minio-1 }
    10.10.10.11: { minio_seq: 2 , nodename: minio-2 }
    10.10.10.12: { minio_seq: 3 , nodename: minio-3 }
    10.10.10.13: { minio_seq: 4 , nodename: minio-4 }
    # 新节点
    10.10.10.14: { minio_seq: 5 , nodename: minio-5 }
    10.10.10.15: { minio_seq: 6 , nodename: minio-6 }
    10.10.10.16: { minio_seq: 7 , nodename: minio-7 }
    10.10.10.17: { minio_seq: 8 , nodename: minio-8 }

  vars:
    minio_cluster: minio
    minio_data: '/data{1...4}'
    minio_volumes: 'https://minio-{1...4}.pigsty:9000/data{1...4} https://minio-{5...8}.pigsty:9000/data{1...4}'  # 新增的集群配置
    # 其他参数

步骤 2,将这些节点添加到 Pigsty:

./node.yml -l 10.10.10.14,10.10.10.15,10.10.10.16,10.10.10.17

步骤 3,使用 minio_install 子任务在新节点上置备 MinIO(用户、目录、包等):

./minio.yml -l 10.10.10.14,10.10.10.15,10.10.10.16,10.10.10.17 -t minio_install

步骤 4:使用 minio_config 子任务在 整个集群 上重新配置整个 MinIO 集群

./minio.yml -l minio -t minio_config

也就是说,现有 4 个节点的 MINIO_VOLUMES 配置也会被更新

步骤 5:同时重启整个 MinIO 集群(注意,不要滚动重启!):

./minio.yml -l minio -t minio_launch -f 10   # 并行度为 10

步骤 6:这是 可选的,如果您使用负载均衡器,请确保负载均衡器配置已更新。

例如,将新的四个节点添加到负载均衡器配置:

# 在所有节点上使用 haproxy 暴露 minio 服务
haproxy_services:
  - name: minio                    # [必需] 服务名称,唯一
    port: 9002                     # [必需] 服务端口,唯一
    balance: leastconn             # [可选] 负载均衡算法
    options:                       # [可选] minio 健康检查
      - option httpchk
      - option http-keep-alive
      - http-check send meth OPTIONS uri /docs/minio/health/live
      - http-check expect status 200
    servers:
      - { name: minio-1 ,ip: 10.10.10.10 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
      - { name: minio-2 ,ip: 10.10.10.11 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
      - { name: minio-3 ,ip: 10.10.10.12 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
      - { name: minio-4 ,ip: 10.10.10.13 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }

      - { name: minio-5 ,ip: 10.10.10.14 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
      - { name: minio-6 ,ip: 10.10.10.15 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
      - { name: minio-7 ,ip: 10.10.10.16 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }
      - { name: minio-8 ,ip: 10.10.10.17 ,port: 9000 ,options: 'check-ssl ca-file /etc/pki/ca.crt check port 9000' }

然后运行 node.yml 剧本的 haproxy 子任务来更新负载均衡器配置:

./node.yml -l minio -t haproxy_config,haproxy_reload   # 重新配置并重新加载 haproxy 服务定义

如果节点 L2 VIP 也用于确保可靠的负载均衡器访问,您还需要将新节点(如果有)添加到现有的 NODE VIP 组:

./node.yml -l minio -t node_vip  # 重新加载节点 l2 vip 配置

收缩集群

MinIO 无法在节点/磁盘级别缩减,但您可以在存储池(多个节点)级别退役——添加新存储池,排空旧存储池,迁移到新存储池,然后退役旧存储池。


升级集群

首先,将新版本的 MinIO 软件包下载到 INFRA 节点的本地软件仓库:

然后重建软件仓库:

./infra.yml -t repo_create

您可以使用 Ansible package 模块升级所有 MinIO 软件包:

ansible minio -m package -b -a 'name=minio state=latest'  # 升级 MinIO 服务器
ansible minio -m package -b -a 'name=mcli state=latest'   # 升级 mcli 客户端

最后,通知 MinIO 集群使用 mc 命令行工具重启:

mc admin service restart sss

节点故障恢复

# 1. 移除故障节点
bin/node-rm <your_old_node_ip>

# 2. 用相同名称替换故障节点(如果 IP 发生变化,修改清单)
bin/node-add <your_new_node_ip>

# 3. 在新节点上置备 MinIO
./minio.yml -l <your_new_node_ip>

# 4. 指示 MinIO 执行修复操作
mc admin heal

磁盘故障恢复

# 1. 卸载故障磁盘
umount /dev/<your_disk_device>

# 2. 更换新驱动器,使用 xfs 格式化
mkfs.xfs /dev/sdb -L DRIVE1

# 3. 不要忘记为自动挂载设置 fstab
vi /etc/fstab
# LABEL=DRIVE1     /mnt/drive1    xfs     defaults,noatime  0       2

# 4. 重新挂载新磁盘
mount -a

# 5. 指示 MinIO 执行修复操作
mc admin heal

5 - 剧本

控制原语

您必须在运行剧本之前在 配置清单配置 minio 集群。


剧本

有两个内置的 MinIO 集群管理剧本:

minio.yml

minio.yml

  • minio-id : 生成 minio 身份
  • minio_install : 安装 minio/mcli
    • minio_os_user : 创建操作系统用户 minio
    • minio_pkg : 安装 minio/mcli 包
    • minio_dir : 创建 minio 目录
  • minio_config : 生成 minio 配置
    • minio_conf : minio 主配置
    • minio_cert : minio ssl 证书
    • minio_dns : 写入 minio dns 记录
  • minio_launch : 启动 minio 服务
  • minio_register : 将 minio 注册到 prometheus
  • minio_provision : 创建 minio 别名/桶/用户
    • minio_alias : 创建 minio 客户端别名
    • minio_bucket : 创建 minio 桶
    • minio_user : 创建 minio 业务用户
架构变更:Pigsty v3.6+

自 Pigsty v3.6+ 起,minio.yml 剧本和 minio 角色专注于集群安装。所有移除操作已移至专用的 minio-rm.yml 剧本,使用 minio_remove 角色。

您应该在 Pigsty 管理的节点上安装 MINIO 模块(即,首先安装 NODE)。

受信任的 ca 文件:/etc/pki/ca.crt 应该已经存在于所有节点上。它在 role: ca 中生成,并在 role: node 中默认加载和信任。


minio-rm.yml

移除 MinIO 集群,运行以下剧本:

./minio-rm.yml    # 移除 MinIO 集群

以下是可用的子任务:

  • minio_id : 为移除操作生成 minio 身份
  • prometheus : 从 prometheus 移除 minio 目标注册
  • minio_stop : 使用 systemd 停止并禁用 minio 服务
  • minio_data : 移除 minio 数据(使用 minio_rm_data=false 禁用)
  • minio_pkg : 卸载 minio 包(使用 minio_rm_pkg=true 启用)

移除剧本使用新的 minio_remove 角色,带有可配置参数:


命令

MINIO 剧本备忘单和常用命令

./minio.yml -l <cls>                      # 在组 <cls> 上初始化 MINIO 模块
./minio-rm.yml -l minio                   # 使用专用移除剧本移除 MinIO 集群
./minio.yml -l minio -t minio_install     # 安装 MinIO,设置目录,不进行配置和启动
./minio.yml -l minio -t minio_config      # 生成 MinIO 配置和证书
./minio.yml -l minio -t minio_launch      # 重启 MinIO 集群

6 - 监控

监控 MinIO 集群

仪表板

MINIO 模块提供一个仪表板。

MinIO Overview:单个 MinIO 集群的概览


告警规则

为 MinIO 预定义了 3 个告警规则,定义在 files/prometheus/rules/minio.yml 中:

  • MinioServerDown
  • MinioNodeOffline
  • MinioDiskOffline
#==============================================================#
#                         Aliveness                            #
#==============================================================#
# MinIO server instance down
- alert: MinioServerDown
  expr: minio_up < 1
  for: 1m
  labels: { level: 0, severity: CRIT, category: minio }
  annotations:
    summary: "CRIT MinioServerDown {{ $labels.ins }}@{{ $labels.instance }}"
    description: |
      minio_up[ins={{ $labels.ins }}, instance={{ $labels.instance }}] = {{ $value }} < 1
      http://g.pigsty/d/minio-overview

#==============================================================#
#                         Error                                #
#==============================================================#
# MinIO node offline triggers a p1 alert
- alert: MinioNodeOffline
  expr: avg_over_time(minio_cluster_nodes_offline_total{job="minio"}[5m]) > 0
  for: 3m
  labels: { level: 1, severity: WARN, category: minio }
  annotations:
    summary: "WARN MinioNodeOffline: {{ $labels.cls }} {{ $value }}"
    description: |
      minio_cluster_nodes_offline_total[cls={{ $labels.cls }}] = {{ $value }} > 0
      http://g.pigsty/d/minio-overview?from=now-5m&to=now&var-cls={{$labels.cls}}

# MinIO disk offline triggers a p1 alert
- alert: MinioDiskOffline
  expr: avg_over_time(minio_cluster_disk_offline_total{job="minio"}[5m]) > 0
  for: 3m
  labels: { level: 1, severity: WARN, category: minio }
  annotations:
    summary: "WARN MinioDiskOffline: {{ $labels.cls }} {{ $value }}"
    description: |
      minio_cluster_disk_offline_total[cls={{ $labels.cls }}] = {{ $value }} > 0
      http://g.pigsty/d/minio-overview?from=now-5m&to=now&var-cls={{$labels.cls}}

7 - FAQ

常见问题解答

无法启动多节点/多驱动器 MinIO 集群。

多驱动器多节点 模式下,如果数据目录不是有效的挂载点,MinIO 将拒绝启动。

为 MinIO 数据目录使用挂载的磁盘而不是普通目录。您只能在 单节点单驱动器 模式下使用普通目录。


如何部署多节点多驱动器 MinIO 集群?

查看 创建多节点多驱动器 MinIO 集群


如何向现有 MinIO 集群添加成员?

您最好在部署前规划 MinIO 集群…因为这需要全局重启

查看这个:扩展 MinIO 部署


如何为 PGSQL 使用 HA MinIO 部署?

使用可选的负载均衡器和不同端口访问 HA MinIO 集群。

这是一个示例:访问 MinIO 服务