节点组件

节点上运行的组件与服务详解。

本节介绍 Pigsty 节点上运行的各类组件及其功能。


基础组件

所有被 Pigsty 纳管的节点都会安装以下基础组件:

node_exporter

主机监控指标导出器,监听 9100 端口:

┌─────────────────────────────────────────────────────────────┐
│                    node_exporter (:9100)                     │
│  ┌───────────────────────────────────────────────────────┐  │
│  │              /metrics 端点                             │  │
│  └───────────────────────────┬───────────────────────────┘  │
│                              │                               │
│    ┌─────────────────────────┼─────────────────────────┐    │
│    ▼                         ▼                         ▼    │
│   CPU                      内存                      磁盘    │
│   网络                     文件系统                   进程    │
└─────────────────────────────────────────────────────────────┘

采集指标

  • CPU 使用率、负载
  • 内存使用、交换分区
  • 磁盘 IO、空间
  • 网络流量、连接
  • 文件系统、进程

Vector

日志收集代理,监听 9598 端口:

┌─────────────────────────────────────────────────────────────┐
│                      Vector (:9598)                          │
│  ┌───────────────────────────────────────────────────────┐  │
│  │                   日志采集                             │  │
│  │  /var/log/*  →  Vector  →  VictoriaLogs (INFRA)       │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

采集来源

  • 系统日志:/var/log/messages
  • PostgreSQL 日志:/pg/log/postgres/
  • Patroni 日志:/pg/log/patroni/
  • 其他组件日志

HAProxy

负载均衡器,提供服务入口和管理页面(9101 端口):

┌─────────────────────────────────────────────────────────────┐
│                      HAProxy                                 │
│  ┌───────────────────────────────────────────────────────┐  │
│  │  :9101  管理页面与指标                                 │  │
│  │  :543x  PostgreSQL 服务端口                           │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

可选组件

Docker

容器运行时,按需启用:

# 启用 Docker
docker_enabled: true

端口:9323(指标)

用途

  • 运行容器化应用
  • 开发测试环境
  • 边缘服务部署

Keepalived

L2 VIP 管理,用于节点集群的高可用:

# 启用 Keepalived
node_keepalived_enabled: true

用途

  • INFRA 节点 VIP
  • 自定义服务 VIP

注意:PGSQL 集群的 VIP 由 vip-manager 管理,不使用 Keepalived。


PGSQL 节点组件

PGSQL 节点额外包含数据库相关组件:

PostgreSQL

核心数据库,监听 5432 端口:

配置 说明
数据目录 /pg/data
日志目录 /pg/log/postgres
配置文件 /pg/data/postgresql.conf

Pgbouncer

连接池,监听 6432 端口:

配置 说明
配置文件 /etc/pgbouncer/pgbouncer.ini
日志目录 /pg/log/pgbouncer
池模式 transaction(默认)

Patroni

高可用控制器,监听 8008 端口:

配置 说明
配置文件 /pg/bin/patroni.yml
日志目录 /pg/log/patroni
DCS ETCD

pg_exporter

PostgreSQL 指标导出器,监听 9630 端口:

采集指标

  • 连接数、事务
  • 缓存命中率
  • 复制延迟
  • 锁、死锁

pgbouncer_exporter

连接池指标导出器,监听 9631 端口:

采集指标

  • 连接池状态
  • 等待队列
  • 平均查询时间

pgbackrest_exporter

备份指标导出器,监听 9854 端口:

采集指标

  • 最近备份时间
  • 备份大小
  • 备份状态

vip-manager

VIP 管理器(可选),绑定 VIP 到主库节点。


组件交互

┌─────────────────────────────────────────────────────────────────────┐
│                          PGSQL 节点                                  │
│                                                                      │
│  ┌─────────────────────────────────────────────────────────────┐    │
│  │                     HAProxy (:543x)                          │    │
│  │        健康检查 ←───────────────────────────────────────┐   │    │
│  └────────────────────────────────┬────────────────────────┼───┘    │
│                                   │                        │        │
│  ┌────────────────────────────────▼────────────────────────┼───┐    │
│  │                   Pgbouncer (:6432)                     │   │    │
│  └────────────────────────────────┬────────────────────────┼───┘    │
│                                   │                        │        │
│  ┌────────────────────────────────▼────────────────────────┼───┐    │
│  │                  PostgreSQL (:5432)                     │   │    │
│  └────────────────────────────────┬────────────────────────┼───┘    │
│                                   │                        │        │
│  ┌────────────────────────────────▼────────────────────────┴───┐    │
│  │                    Patroni (:8008)                          │    │
│  │                          │                                   │    │
│  │                          ▼                                   │    │
│  │                      ETCD 集群                               │    │
│  └─────────────────────────────────────────────────────────────┘    │
│                                                                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐                 │
│  │ pg_exporter │  │pgb_exporter │  │node_exporter│     → Prometheus │
│  │   :9630     │  │   :9631     │  │   :9100     │                 │
│  └─────────────┘  └─────────────┘  └─────────────┘                 │
│                                                                      │
│  ┌─────────────────────────────────────────────────────────────┐    │
│  │                     Vector (:9598)                           │    │
│  │     /pg/log/*  →  Vector  →  VictoriaLogs                   │    │
│  └─────────────────────────────────────────────────────────────┘    │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

端口清单

通用节点

端口 组件 说明
9100 node_exporter 主机指标
9101 HAProxy 管理页面
9598 Vector 日志收集
9323 Docker 容器指标(可选)
9650 Keepalived VIP 指标(可选)

PGSQL 节点

端口 组件 说明
5432 PostgreSQL 数据库
6432 Pgbouncer 连接池
8008 Patroni HA 控制/健康检查
5433 HAProxy 读写服务
5434 HAProxy 只读服务
5436 HAProxy 直连服务
5438 HAProxy 离线服务
9630 pg_exporter PG 指标
9631 pgbouncer_exporter 连接池指标
9854 pgbackrest_exporter 备份指标