节点类型

不同类型节点的定义、角色与功能。

本节详细介绍 Pigsty 中各类节点的定义和特点。


普通节点

使用 node.yml 剧本纳管的节点,是所有其他节点类型的基础。

默认组件

组件 端口 说明 状态
node_exporter 9100 主机监控指标 默认启用
HAProxy Admin 9101 HAProxy 管理 默认启用
Vector 9598 日志收集 默认启用
Docker 9323 容器支持 按需启用
Keepalived - L2 VIP 按需启用

配置示例

my-nodes:
  hosts:
    10.10.10.21: { }
    10.10.10.22: { }
  vars:
    node_cluster: my-nodes

ADMIN 节点

执行 Ansible 管理命令的节点,通常与 INFRA 节点重合。

特点

  • 一套部署中有且只有一个 ADMIN 节点
  • admin_ip 指定
  • 拥有对所有其他节点的 SSH/Sudo 权限
  • 安全性至关重要

职责

┌─────────────────────────────────────────────────────────────┐
│                      ADMIN 节点                              │
│  ┌───────────────────────────────────────────────────────┐  │
│  │                     Ansible                            │  │
│  │  ┌─────────────────────────────────────────────────┐  │  │
│  │  │  deploy.yml  pgsql.yml  node.yml  ...           │  │  │
│  │  └───────────────────────────┬─────────────────────┘  │  │
│  └──────────────────────────────┼────────────────────────┘  │
│                                 │ SSH/Sudo                   │
│    ┌────────────────────────────┼────────────────────────┐  │
│    ▼                            ▼                        ▼  │
│  Node 1                      Node 2                   Node N │
└─────────────────────────────────────────────────────────────┘

安全建议

  1. 严格控制 ADMIN 节点的访问权限
  2. 使用密钥认证,禁用密码登录
  3. 定期审计 SSH 访问日志
  4. 考虑使用跳板机

INFRA 节点

安装 INFRA 模块的节点,提供核心基础设施服务。

组件清单

组件 端口 说明
Nginx 80 Web 服务/软件仓库
Grafana 3000 可视化平台
VictoriaMetrics 9090 指标存储
VictoriaLogs 9428 日志存储
AlertManager 9093 告警管理
DNSMASQ 53 DNS 服务
Chronyd 123 NTP 服务
BlackboxExporter 9115 黑盒探测

配置示例

infra:
  hosts:
    10.10.10.10: { infra_seq: 1 }
    10.10.10.11: { infra_seq: 2 }
  vars:
    node_cluster: infra

高可用

生产环境建议部署 2-3 个 INFRA 节点:

  • 第一个通常是 ADMIN 节点
  • 其他作为备份

PGSQL 节点

安装 PGSQL 模块的节点,运行 PostgreSQL 数据库实例。

组件清单

组件 端口 说明 状态
PostgreSQL 5432 数据库 默认启用
Pgbouncer 6432 连接池 默认启用
Patroni 8008 HA 控制 默认启用
HAProxy Primary 5433 读写服务 默认启用
HAProxy Replica 5434 只读服务 默认启用
HAProxy Default 5436 直连服务 默认启用
HAProxy Offline 5438 离线服务 默认启用
pg_exporter 9630 PG 指标 默认启用
pgbouncer_exporter 9631 连接池指标 默认启用
vip-manager - VIP 管理 按需启用

节点与实例

PGSQL 节点与实例 1:1 部署,可以借用实例身份:

pg-test:
  hosts:
    10.10.10.11: { pg_seq: 1, pg_role: primary }   # 节点名 = pg-test-1
    10.10.10.12: { pg_seq: 2, pg_role: replica }   # 节点名 = pg-test-2
  vars:
    pg_cluster: pg-test
    node_id_from_pg: true    # 节点从 PG 借用身份

ETCD 节点

安装 ETCD 模块的节点,提供分布式共识服务。

组件清单

组件 端口 说明
ETCD 2379 客户端端口
ETCD 2380 对等端口

配置示例

etcd:
  hosts:
    10.10.10.10: { etcd_seq: 1 }
    10.10.10.11: { etcd_seq: 2 }
    10.10.10.12: { etcd_seq: 3 }
  vars:
    etcd_cluster: etcd

高可用

ETCD 使用 Raft 协议,需要奇数个节点:

  • 3 节点:容忍 1 个故障
  • 5 节点:容忍 2 个故障

节点复用

一个物理/虚拟机可以同时扮演多个角色:

典型场景

场景 节点配置
单机部署 ADMIN + INFRA + ETCD + PGSQL
小型集群 INFRA + ETCD 复用
大型部署 角色完全分离

资源考虑

复用节点时需考虑资源竞争:

  • INFRA 节点:Prometheus 存储占用
  • PGSQL 节点:数据库内存/IO
  • ETCD 节点:低延迟磁盘需求

节点生命周期

纳管

./node.yml -l 10.10.10.21

安装模块

./pgsql.yml -l 10.10.10.21    # 安装 PGSQL
./redis.yml -l 10.10.10.21    # 安装 Redis

移除

./node-rm.yml -l 10.10.10.21  # 移除节点