模块总览
Pigsty 的六大核心模块及其功能定位。
Pigsty 采用模块化设计,将功能分解为可独立部署、自由组合的模块。
核心模块
PGSQL 模块
PostgreSQL 高可用集群,Pigsty 的核心模块。
┌─────────────────────────────────────────────────────────────┐
│ PGSQL 模块 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │PostgreSQL│ │Pgbouncer│ │ HAProxy │ │ Patroni │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────────┘ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │pgBackRest│ │pg_exporter││vip-manager│ │ 各类扩展 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
主要功能:
- 自治高可用 PostgreSQL 集群
- Patroni + ETCD 实现自动故障转移
- HAProxy 负载均衡与服务发现
- Pgbouncer 连接池
- pgBackRest 备份与 PITR
- 完整的监控与告警
INFRA 模块
基础设施服务,提供软件仓库、监控、DNS 等核心服务。
┌─────────────────────────────────────────────────────────────┐
│ INFRA 模块 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │ Nginx │ │ Grafana │ │Prometheus│ │AlertManager │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────────┘ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │ DNSMASQ │ │ Loki │ │ Chronyd │ │ Ansible │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
主要功能:
- Nginx:Web 服务、软件仓库
- Prometheus/VictoriaMetrics:指标采集与存储
- Grafana:可视化仪表盘
- AlertManager:告警管理
- DNSMASQ:DNS 服务
- Loki/VictoriaLogs:日志收集
NODE 模块
节点管理,将裸机/虚拟机调整到期望状态。
┌─────────────────────────────────────────────────────────────┐
│ NODE 模块 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 主机名、时区、NTP、内核参数、用户、权限、防火墙... │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │node_exp │ │ Vector │ │ HAProxy │ │ Docker │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
主要功能:
- 系统配置:主机名、时区、NTP
- 用户与权限:SSH、Sudo
- node_exporter:主机监控
- Vector:日志收集
- Docker:容器支持(可选)
ETCD 模块
分布式键值存储,为 PostgreSQL 高可用提供 DCS。
┌─────────────────────────────────────────────────────────────┐
│ ETCD 模块 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ ETCD-1 │◄─┼─► ETCD-2 │◄─┼─► ETCD-3 │ Raft 共识 │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────┘
主要功能:
- Patroni 的 DCS 后端
- 集群领导者选举
- 配置管理与服务发现
- 分布式锁
REDIS 模块
Redis 缓存服务,支持多种部署模式。
┌─────────────────────────────────────────────────────────────┐
│ REDIS 模块 │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 主从模式 │ │ 哨兵模式 │ │
│ │ Master ──► Slave │ │ Master + Sentinel│ │
│ └─────────────────┘ └─────────────────┘ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 集群模式(Redis Cluster) │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
主要功能:
- 独立主从模式
- 哨兵高可用模式
- Redis Cluster 分片集群
- 完整监控支持
MINIO 模块
S3 兼容对象存储,用于数据库备份。
┌─────────────────────────────────────────────────────────────┐
│ MINIO 模块 │
│ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │
│ │Node 1 │ │Node 2 │ │Node 3 │ │Node 4 │ 分布式存储 │
│ └───────┘ └───────┘ └───────┘ └───────┘ │
└─────────────────────────────────────────────────────────────┘
主要功能:
- S3 兼容 API
- pgBackRest 备份目标
- 分布式冗余存储
- 跨区域复制
模块依赖
┌─────────┐
│ PGSQL │
└────┬────┘
│
┌─────────────┼─────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ NODE │ │ ETCD │ │ MINIO │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└─────────────┼─────────────┘
│
┌────▼────┐
│ INFRA │
└────┬────┘
│
┌────▼────┐
│ OS │
└─────────┘
| 依赖关系 | 说明 |
|---|---|
| PGSQL → NODE | 节点必须先被纳管 |
| PGSQL → ETCD | Patroni 需要 DCS |
| PGSQL → MINIO | 可选,远程备份 |
| NODE → INFRA | 软件仓库(弱依赖) |
| ETCD → NODE | 节点必须先被纳管 |
部署顺序
推荐的模块部署顺序:
# 1. 基础设施(包含软件仓库)
./infra.yml
# 2. ETCD 集群(高可用必需)
./etcd.yml
# 3. MinIO 集群(可选,远程备份)
./minio.yml
# 4. PostgreSQL 集群
./pgsql.yml
# 5. Redis 集群(可选)
./redis.yml
或使用一键部署:
./deploy.yml # 自动按正确顺序部署所有模块