INFRA 集群模型
INFRA 模块在 Pigsty 中承担着特殊的角色:它不是传统意义上的"集群",而是由一组 基础设施节点 构成的管理中枢,为整个 Pigsty 部署提供核心服务。 每个 INFRA 节点都是一个 自治 的基础设施服务单元,运行着 Nginx、Grafana、VictoriaMetrics 等核心组件,共同为纳管的数据库集群提供可观测性与管理能力。
在 Pigsty 的 INFRA 模块中有两种核心实体:
- 节点(Node):运行基础设施组件的服务器,可以是裸机、VM、容器或 Pod。
- 组件(Component):在节点上运行的各类基础设施服务,如 Nginx、Grafana、VictoriaMetrics 等。
INFRA 节点通常承担管理节点(Admin Node)的角色,是 Pigsty 的控制平面所在。
组件构成
每个 INFRA 节点上运行着以下核心组件:
| 组件 | 端口 | 说明 |
|---|---|---|
| Nginx | 80/443 |
Web 服务门户,本地软件仓库,统一反向代理入口 |
| Grafana | 3000 |
可视化平台,监控大屏,巡检与数据应用 |
| VictoriaMetrics | 8428 |
时序数据库,兼容 Prometheus API |
| VictoriaLogs | 9428 |
日志数据库,接收 Vector 推送的结构化日志 |
| VictoriaTraces | 10428 |
链路追踪存储,用于慢 SQL / 请求追踪 |
| VMAlert | 8880 |
告警规则评估器,基于 VictoriaMetrics 触发告警 |
| Alertmanager | 9059 |
告警聚合与分发 |
| Blackbox Exporter | 9115 |
ICMP/TCP/HTTP 黑盒探测 |
| DNSMASQ | 53 |
DNS 服务器,提供内部域名解析 |
| Chronyd | 123 |
NTP 时间服务器 |
这些组件共同构成了 Pigsty 的可观测性基础设施。
具体样例
让我们来看一个具体的例子,以双节点的 INFRA 部署为例:
上面的配置片段定义了一个双节点的 INFRA 部署:
| 分组 | Group |
|---|---|
infra |
INFRA 基础设施节点分组 |
| 节点 | Nodes |
infra-1 |
10.10.10.10 1 号 INFRA 节点 |
infra-2 |
10.10.10.11 2 号 INFRA 节点 |
在生产环境中,建议部署至少两个 INFRA 节点,以实现基础设施组件的冗余。
身份参数
Pigsty 使用 INFRA_ID 参数组为 INFRA 模块的每个实体赋予确定的身份。以下一项为必选参数:
| 参数 | 类型 | 级别 | 说明 | 形式 |
|---|---|---|---|---|
infra_seq |
int |
节点 | INFRA 节点序号,必选身份参数 | 自然数,从 1 开始分配,分组内不重复 |
只要在节点层面分配了节点序号,Pigsty 就能自动根据规则为每个实体生成唯一标识符。
| 实体 | 生成规则 | 示例 |
|---|---|---|
| 节点 | infra-{{ infra_seq }} |
infra-1,infra-2 |
INFRA 模块会为节点赋予 infra-N 形式的标识,用于监控系统中区分多个基础设施节点。
但这并不改变节点本身的主机名或系统身份,节点仍然使用其原有的主机名或 IP 地址进行标识。
服务门户
INFRA 节点通过 Nginx 提供统一的 Web 服务入口。infra_portal 参数定义了通过 Nginx 暴露的服务列表。
默认配置只定义了首页服务器:
Pigsty 会自动为启用的组件(如 Grafana、VictoriaMetrics、AlertManager 等)配置反向代理端点。如果需要通过独立域名访问这些服务,可以显式添加配置:
| 域名 | 服务 | 说明 |
|---|---|---|
i.pigsty |
Home | Pigsty 首页 |
g.pigsty |
Grafana | 监控可视化平台 |
p.pigsty |
VictoriaMetrics | 时序数据库 Web UI |
a.pigsty |
Alertmanager | 告警管理界面 |
建议通过域名访问 Pigsty 服务,而不是直接使用 IP + 端口的方式。
部署规模
INFRA 节点的数量取决于部署规模和高可用需求:
| 部署规模 | INFRA 节点数 | 说明 |
|---|---|---|
| 开发测试 | 1 | 单节点部署,所有组件在同一节点 |
| 小规模生产 | 1-2 | 单节点或双节点,可与其他服务共用节点 |
| 中规模生产 | 2-3 | 独立的 INFRA 节点,组件冗余部署 |
| 大规模生产 | 3+ | 多 INFRA 节点,可根据组件分离部署 |
单机部署 时,INFRA 组件与 PGSQL、ETCD 等模块共用同一个节点。
通常在小规模部署中,INFRA 节点通常还承担着 “管理节点” / “备用管理节点”,以及本地软件仓库(/www/pigsty)的角色。
在更大规模的部署中,这些职责可以剥离至专用节点。
监控标签体系
Pigsty 的监控系统会采集 INFRA 组件自身的指标。与数据库模块不同,INFRA 模块的每个 组件 都被视为独立的监控对象,通过 cls(类)标签区分不同组件类型。
| 标签 | 说明 | 示例 |
|---|---|---|
cls |
组件类型,每种组件各自构成一个"类" | nginx |
ins |
实例名,格式为 {组件类型}-{infra_seq} |
nginx-1 |
ip |
运行该组件的 INFRA 节点 IP 地址 | 10.10.10.10 |
job |
VictoriaMetrics 采集任务名,固定为 infra |
infra |
以双节点 INFRA 部署(infra_seq: 1 和 infra_seq: 2)为例,各组件的监控标签如下:
| 组件 | cls |
ins 示例 |
端口 |
|---|---|---|---|
| Nginx | nginx |
nginx-1,nginx-2 |
9113 |
| Grafana | grafana |
grafana-1,grafana-2 |
3000 |
| VictoriaMetrics | vmetrics |
vmetrics-1,vmetrics-2 |
8428 |
| VictoriaLogs | vlogs |
vlogs-1,vlogs-2 |
9428 |
| VictoriaTraces | vtraces |
vtraces-1,vtraces-2 |
10428 |
| VMAlert | vmalert |
vmalert-1,vmalert-2 |
8880 |
| Alertmanager | alertmanager |
alertmanager-1,alertmanager-2 |
9059 |
| Blackbox | blackbox |
blackbox-1,blackbox-2 |
9115 |
所有 INFRA 组件的监控指标都使用统一的 job="infra" 标签,通过 cls 标签区分组件类型: