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 黑盒探测