节点类型
不同类型节点的定义、角色与功能。
本节详细介绍 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 │
└─────────────────────────────────────────────────────────────┘
安全建议
- 严格控制 ADMIN 节点的访问权限
- 使用密钥认证,禁用密码登录
- 定期审计 SSH 访问日志
- 考虑使用跳板机
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 # 移除节点