INFRA 架构
基础设施模块的组件与功能详解。
INFRA 模块提供核心基础设施服务,包括软件仓库、监控系统、DNS 服务等。
架构总览
┌─────────────────────────────────────────────────────────────────┐
│ INFRA 节点 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Nginx (:80) │ │
│ │ Web 服务 / 软件仓库 / 反向代理 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ Grafana (:3000) │ │ Prometheus (:9090) │ │
│ │ 可视化平台 │ │ 指标存储 │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ AlertManager (:9093) │ │ Loki (:3100) │ │
│ │ 告警管理 │ │ 日志存储 │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ DNSMASQ (:53) │ │ Chronyd (:123) │ │
│ │ DNS 服务 │ │ NTP 服务 │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
核心组件
Nginx
Web 服务器,提供多种功能:
| 功能 | 端口 | 说明 |
|---|---|---|
| 软件仓库 | 80 | YUM/APT 本地仓库 |
| Web 门户 | 80 | Pigsty 首页 |
| 反向代理 | 80 | 代理 Grafana、Prometheus 等 |
http://10.10.10.10/ # Web 门户
http://10.10.10.10/pigsty/ # 软件仓库
http://10.10.10.10/grafana/ # Grafana 代理
VictoriaMetrics / Prometheus
时序数据库,用于指标存储与查询:
┌─────────────────────────────────────────────────────────────┐
│ VictoriaMetrics │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 指标存储 (:9090) │ │
│ └───────────────────────────┬─────────────────────────┘ │
│ │ Pull │
│ ┌─────────┬───────────────┼───────────────┬─────────┐ │
│ ▼ ▼ ▼ ▼ ▼ │
│ pg_exp node_exp pgb_exp patroni ... │
│ :9630 :9100 :9631 :8008 │
└─────────────────────────────────────────────────────────────┘
采集目标:
- node_exporter (9100):主机指标
- pg_exporter (9630):PostgreSQL 指标
- pgbouncer_exporter (9631):连接池指标
- patroni (8008):高可用指标
Grafana
可视化平台,提供丰富的仪表盘:
| 类别 | 仪表盘 |
|---|---|
| 概览 | Pigsty Overview, Cluster Overview |
| 主机 | Node Overview, Node Instance |
| PostgreSQL | PG Cluster, PG Instance, PG Database |
| 连接池 | PGBouncer Overview |
| 高可用 | Patroni Overview |
AlertManager
告警管理,负责告警的分组、去重和通知:
┌─────────────────────────────────────────────────────────────┐
│ AlertManager │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 告警接收 (:9093) │ │
│ └───────────────────────────┬─────────────────────────┘ │
│ │ │
│ ┌─────────────────────────┼─────────────────────────┐ │
│ ▼ ▼ ▼ │
│ 分组 去重 路由 │
│ │ │ │ │
│ └─────────────────────────┼─────────────────────────┘ │
│ ▼ │
│ ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │
│ │ Email │ │ Slack │ │ 钉钉 │ │Webhook│ │
│ └───────┘ └───────┘ └───────┘ └───────┘ │
└─────────────────────────────────────────────────────────────┘
VictoriaLogs / Loki
日志存储系统,集中收集各组件日志:
| 日志来源 | 说明 |
|---|---|
| PostgreSQL | 数据库日志 |
| Patroni | 高可用组件日志 |
| Pgbouncer | 连接池日志 |
| pgBackRest | 备份日志 |
| 系统日志 | /var/log/messages |
DNSMASQ
DNS 服务器,提供内部域名解析:
┌─────────────────────────────────────────────────────────────┐
│ DNSMASQ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ DNS 服务 (:53) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 解析记录: │
│ ├── pg-meta → 10.10.10.10 │
│ ├── pg-test → 10.10.10.11 (主库 VIP) │
│ ├── pg-test-1 → 10.10.10.11 │
│ ├── pg-test-2 → 10.10.10.12 │
│ └── pg-test-3 → 10.10.10.13 │
└─────────────────────────────────────────────────────────────┘
高可用部署
生产环境建议部署多个 INFRA 节点:
infra:
hosts:
10.10.10.10: { infra_seq: 1 } # 主节点
10.10.10.11: { infra_seq: 2 } # 备节点
vars:
node_cluster: infra
多节点部署时:
- Nginx 可通过 Keepalived VIP 实现高可用
- Prometheus 联邦或远程写入实现指标冗余
- AlertManager 集群模式自动去重
端口清单
| 组件 | 端口 | 说明 |
|---|---|---|
| Nginx | 80 | Web 服务 |
| Grafana | 3000 | 可视化 |
| VictoriaMetrics | 9090 | 指标存储 |
| VictoriaLogs | 9428 | 日志存储 |
| AlertManager | 9093 | 告警管理 |
| DNSMASQ | 53 | DNS |
| Chronyd | 123 | NTP |
| BlackboxExporter | 9115 | 黑盒探测 |