跳转到主要内容

架构

INFRA 模块中的架构与实体
INFRA 模块中的架构与实体

标准 Pigsty 部署包含 INFRA 模块,默认提供以下服务:

这些组件为生产级 PostgreSQL 服务提供必要的基础设施。

组件 端口 域名 说明
nginx 80 h.pigsty Web 服务入口与 YUM/APT 仓库
alertmanager 9059 a.pigsty 告警聚合与投递
prometheus 9058 p.pigsty 监控时序数据库
grafana 3000 g.pigsty 可视化平台
loki 3100 - 日志收集服务器
pushgateway 9091 - 收集一次性任务指标
blackbox_exporter 9115 - ICMP、TCP、HTTP 探测
dnsmasq 53 - 可选 DNS 服务器
chronyd 123 - 可选 NTP 时间服务器
不使用 INFRA 也能部署高可用 PostgreSQL

如果不需要这些组件,可使用最小化安装,在不安装 INFRA 模块的情况下部署高可用 PostgreSQL。

  • Nginx:本地仓库 Web 服务器及其他 Web UI 的反向代理
  • Grafana:指标、仪表板和数据分析的可视化平台
  • Loki:通过 Grafana 查询的集中日志系统
  • Prometheus:采集、保存指标并计算告警的时序数据库
  • AlertManager:聚合、静默并投递告警
  • PushGateway:接收一次性任务与批处理任务指标
  • BlackboxExporter:探测节点 IP 与 VIP 的可达性
  • DNSMASQ:解析 Pigsty 内部域名
  • Chronyd:保持节点时间同步

INFRA 并非高可用 PostgreSQL 的硬依赖,例如最小化安装 就会省略它。但它提供生产集群通常需要的支撑服务,因此大多数部署都建议保留。

如果已有 Nginx、本地仓库、监控、DNS 或 NTP 基础设施,可以禁用对应组件, 并通过 INFRA 配置 接入既有系统。


Nginx

Nginx 是 Pigsty 所有 Web UI 的入口,默认监听 HTTP 80 与 HTTPS 443。 它代理 Grafana、Prometheus、AlertManager、HAProxy 控制台等 Web UI,同时提供 本地 YUM/APT 仓库等静态资源。

Nginx 根据 infra_portal 生成配置:

infra_portal:
  home         : { domain: h.pigsty }
  grafana      : { domain: g.pigsty ,endpoint: "${admin_ip}:3000" ,websocket: true }
  prometheus   : { domain: p.pigsty ,endpoint: "${admin_ip}:9058" }
  alertmanager : { domain: a.pigsty ,endpoint: "${admin_ip}:9059" }
  blackbox     : { endpoint: "${admin_ip}:9115" }
  loki         : { endpoint: "${admin_ip}:3100" }
  #minio        : { domain: sss.pigsty ,endpoint: "${admin_ip}:9001" ,scheme: https ,websocket: true }

其他服务会引用这些 endpoint:日志发送至 Loki,Grafana 数据源注册到 Grafana, 告警则投递给 AlertManager。Nginx 也可作为本地文件服务器或通用反向代理,并可 使用自签名证书或真实 HTTPS 证书。


本地软件仓库

安装时,Pigsty 可在 INFRA 节点创建本地软件仓库,以加速后续安装。仓库位于 /www/pigsty,由 Nginx 通过 http://h.pigsty/pigsty 提供服务。

离线软件包就是预先构建好的仓库目录压缩包。如果 /www/pigsty 存在并带有 /www/pigsty/repo_complete 标记,Pigsty 会跳过上游 下载,适用于离线环境。

仓库定义文件为 /www/pigsty.repo,可通过以下命令获取:

curl -L http://h.pigsty/pigsty.repo -o /etc/yum.repos.d/pigsty.repo

也可以不经过 Nginx,直接使用文件仓库:

[pigsty-local]
name=Pigsty local $releasever - $basearch
baseurl=file:///www/pigsty/
enabled=1
gpgcheck=0

仓库参数参阅:INFRA - REPO


Prometheus

Prometheus 是 Pigsty v3.7 的监控时序数据库,监听 9058,可通过 IP:9058http://p.pigsty 访问。它负责:

  • 通过带身份标签的本地静态文件发现服务;
  • 拉取、预处理并保存指标;
  • 计算告警规则并将告警发送给 AlertManager。

AlertManager

AlertManager 监听 9059IP:9059http://a.pigsty),负责接收、聚合、 静默和路由 Prometheus 告警。发送邮件等通知需要额外配置。

Prometheus、AlertManager、PushGateway 与 BlackboxExporter 参数参阅: INFRA - PROMETHEUS


Grafana

Grafana 监听 3000IP:3000http://g.pigsty)。Pigsty 的监控以仪表板和 URL 导航为核心,可在全局、集群、实例、数据库和对象之间快速下钻或上卷。

Pigsty 还预装 ECharts 等可视化插件,因此 Grafana 也可用于低代码数据应用。 Loki 在 3100 端口保存日志,节点上的 Promtail 将日志发送到 Loki。

参数参阅:INFRA - GRAFANAINFRA - Loki


Ansible

Ansible 会在引导时安装到 管理节点。INFRA 节点上的 Ansible 通常不会被 使用,但当管理节点不可用时可作为备用控制入口。


DNSMASQ

DNSMASQ 为 Pigsty 内部域名提供解析,其他模块会将域名记录注册到 INFRA 的 DNSMASQ。记录保存在所有 INFRA 节点的 /etc/hosts.d/

参数参阅:INFRA - DNS。Pigsty 内部仍主要使用 /etc/hosts 静态记录,因此 DNSMASQ 只是便利功能。


Chronyd

Chronyd 用于保持所有节点时间同步。参数参阅: NODE - NTP。如果已有 NTP 服务,可以不启用它。