MINIO 集群模型
MINIO 是 Pigsty 的对象存储兼容模块名。v4.5.0 当前源码通过 minio_type: silo 部署 Silo,并以 集群 组织一组对象存储 实例。
每个集群都是一个 自治 的 S3 兼容对象存储单元,由至少一个实例组成,通过 S3 API 端口对外提供服务。
MINIO 模块中有三种核心实体:
- 集群(Cluster):自治的对象存储服务单元,用作其他实体的顶级命名空间。
- 实例(Instance):单个 Silo 服务器进程,在节点上运行并管理本地磁盘。
- 节点(Node):运行 Linux + Systemd 环境的硬件资源抽象,隐含式声明。
此外,Silo 保留 存储池(Pool)概念,用于扩容。
部署模式
Silo 支持 Pigsty 的三类清单部署模式:
| 模式 | 代号 | 说明 | 适用场景 |
|---|---|---|---|
| 单机单盘 | SNSD | 单节点,单个数据目录,或单块磁盘 | 开发、测试、演示 |
| 单机多盘 | SNMD | 单节点,使用多块磁盘,通常至少 4 块盘 | 资源受限的小规模部署 |
| 多机多盘 | MNMD | 多节点,每节点多块磁盘 | 生产环境推荐 |
单机单盘模式可以使用普通目录快速体验。Silo 多盘模式应使用真实磁盘挂载点,否则服务会拒绝启动。
具体样例
以下示例显式选择当前默认的 Silo 后端,并定义四节点多盘集群:
上面的配置片段定义了一个四节点的 Silo 集群,每个节点使用四块磁盘;实例标识仍沿用 MINIO 模块的兼容命名:
| 集群 | Cluster |
|---|---|
minio |
Silo 四节点高可用集群 |
| 实例 | Instance |
minio-1 |
1 号对象存储实例,管理 4 块磁盘 |
minio-2 |
2 号对象存储实例,管理 4 块磁盘 |
minio-3 |
3 号对象存储实例,管理 4 块磁盘 |
minio-4 |
4 号对象存储实例,管理 4 块磁盘 |
| 节点 | Nodes |
10.10.10.10 |
1 号节点,对应 minio-1 实例 |
10.10.10.11 |
2 号节点,对应 minio-2 实例 |
10.10.10.12 |
3 号节点,对应 minio-3 实例 |
10.10.10.13 |
4 号节点,对应 minio-4 实例 |
身份参数
Pigsty 使用 MINIO 参数组为对象存储实体赋予确定身份。以下两项为必选参数:
| 参数 | 类型 | 级别 | 说明 | 形式 |
|---|---|---|---|---|
minio_cluster |
string |
集群 | 对象存储集群名称,必选身份参数 | 有效且非空的名称,无默认值 |
minio_seq |
int |
实例 | 对象存储实例编号,必选身份参数 | 非负整数,建议从 1 开始,集群内不重复 |
只要在集群层面定义了集群名称,实例层面分配了实例编号,Pigsty 就能自动根据规则为每个实体生成唯一标识符。
| 实体 | 生成规则 | 示例 |
|---|---|---|
| 实例 | {{ minio_cluster }}-{{ minio_seq }} |
minio-1,minio-2,minio-3,minio-4 |
MINIO 模块不会为主机节点赋予额外的身份标识,节点使用其原有的主机名或 IP 地址进行标识。
minio_node 用于生成 Silo 集群内部的节点名称(写入 /etc/hosts 供集群发现使用),而非主机节点身份。
角色在整个清单中按 minio_cluster 查找实际成员,Ansible Group 名称不必与集群名称一致。minio_type 是保留的后端选择器,当前必须为 silo。
核心配置参数
除身份参数外,以下参数对 Silo 集群配置至关重要:
| 参数 | 类型 | 说明 |
|---|---|---|
minio_type |
enum |
保留选择器,当前只接受 silo |
minio_data |
path |
数据目录,使用 {x...y} 指定多盘 |
minio_node |
string |
节点名模式,用于多节点部署 |
minio_domain |
string |
服务域名,默认为 sss.pigsty |
这些参数共同决定 minio_volumes,再由角色写入 Silo 的 MINIO_VOLUMES:
- 单机单盘:直接使用
minio_data的值,如/data/minio - 单机多盘:使用
minio_data展开的多个目录,如/data{1...4} - 多机多盘:组合
minio_node与minio_data,如https://minio-{1...4}.pigsty:9000/data{1...4}
端口与服务
每个对象存储实例会监听以下端口:
| 端口 | 参数 | 用途 |
|---|---|---|
| 9000 | minio_port |
S3 API 服务端口 |
| 9001 | minio_admin_port |
Web 管理控制台端口 |
MINIO 模块默认启用 HTTPS 加密通信(由 minio_https 控制)。按默认 pgBackRest S3 仓库配置使用时应保持 HTTPS,并正确安装 Pigsty CA。
多节点 Silo 集群可以通过访问 任意一个节点 来访问其服务。最佳实践是使用负载均衡器(如 HAProxy + VIP)提供统一接入点。
资源置备
Silo 集群部署后,Pigsty 会自动创建以下资源(由 minio_provision 控制):
默认存储桶(由 minio_buckets 定义):
| 存储桶 | 用途 |
|---|---|
pgsql |
PostgreSQL pgBackREST 备份存储 |
meta |
元数据存储,启用版本控制 |
data |
通用数据存储 |
默认用户(由 minio_users 定义):
| 用户 | 默认密码 | 策略 | 用途 |
|---|---|---|---|
pgbackrest |
S3User.Backup |
pgsql |
PostgreSQL 备份专用用户 |
s3user_meta |
S3User.Meta |
meta |
访问 meta 存储桶 |
s3user_data |
S3User.Data |
data |
访问 data 存储桶 |
这些密码属于文档公开的 默认凭据,仅供演示与本地开发使用,生产部署前必须替换。
pgbackrest 是 PostgreSQL 集群备份时使用的用户,s3user_meta 和 s3user_data 是未实际使用的保留用户。
监控标签体系
Pigsty 使用上面的 身份参数 标识对象存储实体。Silo 可用性序列示例如下:
其中 cls、ins、ip 分别对应集群名、实例名与节点 IP。兼容监控命名保持 job=minio,当前后端标签为 flavor=silo。详细接口见 指标列表。