模块总览

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    # 自动按正确顺序部署所有模块