系统架构
介绍 Pigsty 中 INFRA 模块的整体架构,功能组件与责任分工。
每一套 Pigsty 部署都会提供一套基础架构组件,为纳管的节点与数据库集群提供服务,组件包括:
| 组件 | 端口 | 域名 | 描述 |
|---|---|---|---|
| Nginx | 80/443 | i.pigsty | Web 服务门户、本地软件仓库与统一入口 |
| Grafana | 3000 | g.pigsty | 可视化平台,提供监控大屏、巡检与数据应用 |
| VictoriaMetrics | 8428 | p.pigsty | 时序数据库与 VMUI,可兼容 Prometheus API |
| VictoriaLogs | 9428 | - | 集中式日志数据库,接收 Vector 推送的结构化日志 |
| VictoriaTraces | 10428 | - | 链路追踪与事件存储,可用于慢 SQL / 请求追踪 |
| VMAlert | 8880 | - | 告警规则评估器,基于 VictoriaMetrics 指标触发告警 |
| AlertManager | 9059 | a.pigsty | 告警聚合与分发,接收 VMAlert 发送的通知 |
| BlackboxExporter | 9115 | - | ICMP/TCP/HTTP 黑盒探测 |
| DNSMASQ | 53 | - | DNS 服务器,提供内部域名解析 |
| Chronyd | 123 | - | NTP 时间服务器 |
| PostgreSQL | 5432 | - | CMDB 与默认数据库 |
| Ansible | - | - | 运行剧本、编排所有基础设施 |
在 Pigsty 中,PGSQL 模块会使用到INFRA节点上的一些服务,具体来说包括:
Nginx是Pigsty所有WebUI类服务的访问入口,默认使用管理节点80端口。
有许多带有 WebUI 的基础设施组件通过 Nginx 对外暴露服务,例如 Grafana、VictoriaMetrics(VMUI)、AlertManager,以及 HAProxy 流量管理页等,此外 yum/apt 仓库等静态文件资源也通过 Nginx 对外提供服务。
Nginx会根据 infra_portal 的内容,通过域名进行区分,将访问请求转发至对应的上游组件处理。如果您使用了其他的域名,或者公网域名,可以在这里进行相应修改:
infra_portal: # domain names and upstream servers
home : { domain: i.pigsty }
grafana : { domain: g.pigsty ,endpoint: "${admin_ip}:3000" , websocket: true }
prometheus : { domain: p.pigsty ,endpoint: "${admin_ip}:8428" } # VMUI
alertmanager : { domain: a.pigsty ,endpoint: "${admin_ip}:9059" }
blackbox : { endpoint: "${admin_ip}:9115" }
vmalert : { endpoint: "${admin_ip}:8880" }
#logs : { domain: logs.pigsty ,endpoint: "${admin_ip}:9428" }
#minio : { domain: sss.pigsty ,endpoint: "${admin_ip}:9001" ,scheme: https ,websocket: true }
Pigsty强烈建议使用域名访问Pigsty UI系统,而不是直接通过IP+端口的方式访问,基于以下几个理由:
如果您没有可用的互联网域名或本地DNS解析,您可以在 /etc/hosts (MacOS/Linux)或C:\Windows\System32\drivers\etc\hosts (Windows)中添加本地静态解析记录。
Nginx相关配置参数位于:配置:INFRA - NGINX
Pigsty会在安装时首先建立一个本地软件源,以加速后续软件安装。
该软件源由Nginx提供服务,默认位于为 /www/pigsty,可以访问 http://i.pigsty/pigsty 使用。
Pigsty的离线软件包即是将已经建立好的软件源目录(yum/apt)整个打成压缩包,当Pigsty尝试构建本地源时,如果发现本地源目录 /www/pigsty 已经存在,
且带有 /www/pigsty/repo_complete 标记文件,则会认为本地源已经构建完成,从而跳过从原始上游下载软件的步骤,消除了对互联网访问的依赖。
Repo定义文件位于 /www/pigsty.repo,默认可以通过 http://${admin_ip}/pigsty.repo 获取
curl -L http://i.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
Pigsty v4.0 使用 VictoriaMetrics 家族替代 Prometheus/Loki,提供统一的监控、日志与链路追踪能力:
8428 端口,可通过 http://p.pigsty 或 https://i.pigsty/vmetrics/ 访问 VMUI,兼容 Prometheus API。/infra/rules/*.yml 中的告警规则,监听 8880 端口,并将告警事件发送到 Alertmanager。9428 端口,支持 https://i.pigsty/vlogs/ 查询界面。所有节点默认运行 Vector,将系统日志、PostgreSQL 日志等结构化后推送至 VictoriaLogs。10428 端口,用于慢 SQL / Trace 采集,Grafana 以 Jaeger 数据源方式访问。9059 端口,可通过 http://a.pigsty 或 https://i.pigsty/alertmgr/ 管理告警通知。完成 SMTP、Webhook 等配置后即可推送消息。9115 端口,用于 Ping/TCP/HTTP 探测,可通过 https://i.pigsty/blackbox/ 访问。更多信息请参阅:配置:INFRA - VICTORIA 与 配置:INFRA - PROMETHEUS。
Grafana 是 Pigsty 的 WebUI 核心,默认监听 3000 端口,可以直接通过 IP:3000 或域名 http://g.pigsty 访问。
Pigsty 预置了针对 VictoriaMetrics / Logs / Traces 的数据源(vmetrics-*、vlogs-*、vtraces-*),以及大量 Dashboard,可通过 URL 进行联动跳转,快速定位问题。
Grafana 也可作为通用低代码可视化平台使用,因此 Pigsty 默认安装了 ECharts、victoriametrics-datasource 等插件,方便构建监控大屏或巡检报表。
Grafana 相关配置参数位于:配置:INFRA - GRAFANA。
Pigsty默认会在元节点上安装Ansible,Ansible是一个流行的运维工具,采用声明式的配置风格与幂等的剧本设计,可以极大降低系统维护的复杂度。
DNSMASQ 提供环境内的DNS解析服务,其他模块的域名将会注册到 INFRA节点上的 DNSMASQ 服务中。
DNS记录默认放置于所有INFRA节点的 /etc/hosts.d/ 目录中。
DNSMASQ相关配置参数位于:配置:INFRA - DNS
NTP服务用于同步环境内所有节点的时间(可选)
NTP相关配置参数位于:配置:NODES - NTP
要在节点上安装 INFRA 模块,首先需要在配置清单中的 infra 分组中将其加入,并分配实例号 infra_seq
# 配置单个 INFRA 节点
infra: { hosts: { 10.10.10.10: { infra_seq: 1 } }}
# 配置两个 INFRA 节点
infra:
hosts:
10.10.10.10: { infra_seq: 1 }
10.10.10.11: { infra_seq: 2 }
然后,使用 infra.yml 剧本在节点上初始化 INFRA 模块即可。
下面是与 INFRA 模块相关的一些管理任务:
./infra.yml # 在 infra 分组上安装 INFRA 模块
./infra-rm.yml # 从 infra 分组上卸载 INFRA 模块
您可以使用以下剧本子任务,管理 Infra节点 上的本地yun源:
./infra.yml -t repo #从互联网或离线包中创建本地软件源
./infra.yml -t repo_dir # 创建本地软件源
./infra.yml -t repo_check # 检查本地软件源是否已经存在?
./infra.yml -t repo_prepare # 如果存在,直接使用已有的本地软件源
./infra.yml -t repo_build # 如果不存在,从上游构建本地软件源
./infra.yml -t repo_upstream # 处理 /etc/yum.repos.d 中的上游仓库文件
./infra.yml -t repo_remove # 如果 repo_remove == true,则删除现有的仓库文件
./infra.yml -t repo_add # 将上游仓库文件添加到 /etc/yum.repos.d (或 /etc/apt/sources.list.d)
./infra.yml -t repo_url_pkg # 从由 repo_url_packages 定义的互联网下载包
./infra.yml -t repo_cache # 使用 yum makecache / apt update 创建上游软件源元数据缓存
./infra.yml -t repo_boot_pkg # 安装如 createrepo_c、yum-utils 等的引导包...(或 dpkg-)
./infra.yml -t repo_pkg # 从上游仓库下载包 & 依赖项
./infra.yml -t repo_create # 使用 createrepo_c & modifyrepo_c 创建本地软件源
./infra.yml -t repo_use # 将新建的仓库添加到 /etc/yum.repos.d | /etc/apt/sources.list.d 用起来
./infra.yml -t repo_nginx # 如果没有 nginx 在服务,启动一个 nginx 作为 Web Server
其中最常用的命令为:
./infra.yml -t repo_upstream # 向 INFRA 节点添加 repo_upstream 中定义的上游软件源
./infra.yml -t repo_pkg # 从上游仓库下载包及其依赖项。
./infra.yml -t repo_create # 使用 createrepo_c & modifyrepo_c 创建/更新本地 yum 仓库
您可以使用以下剧本子任务,管理 Infra节点 上的各个基础设施组件
./infra.yml -t infra # 配置基础设施
./infra.yml -t infra_env # 配置管理节点上的环境变量:env_dir, env_pg, env_var
./infra.yml -t infra_pkg # 安装INFRA所需的软件包:infra_pkg_yum, infra_pkg_pip
./infra.yml -t infra_user # 设置 infra 操作系统用户组
./infra.yml -t infra_cert # 为 infra 组件颁发证书
./infra.yml -t dns # 配置 DNSMasq:dns_config, dns_record, dns_launch
./infra.yml -t nginx # 配置 Nginx:nginx_config, nginx_cert, nginx_static, nginx_launch, nginx_exporter
./infra.yml -t victoria # 配置 VictoriaMetrics/Logs/Traces:vmetrics|vlogs|vtraces|vmalert
./infra.yml -t alertmanager # 配置 AlertManager:alertmanager_config, alertmanager_launch
./infra.yml -t blackbox # 配置 Blackbox Exporter: blackbox_launch
./infra.yml -t grafana # 配置 Grafana:grafana_clean, grafana_config, grafana_plugin, grafana_launch, grafana_provision
./infra.yml -t infra_register # 将 infra 组件注册到 VictoriaMetrics / Grafana
其他常用的任务包括:
./infra.yml -t nginx_index # 重新渲染 Nginx 首页内容
./infra.yml -t nginx_config,nginx_reload # 重新渲染 Nginx 网站门户配置,对外暴露新的上游服务。
./infra.yml -t vmetrics_config,vmetrics_launch # 重新生成 VictoriaMetrics 主配置文件,并重启服务
./infra.yml -t vlogs_config,vlogs_launch # 重新渲染 VictoriaLogs 配置
./infra.yml -t vmetrics_clean # 清理 VictoriaMetrics 存储数据目录
./infra.yml -t grafana_plugin # 从互联网上下载 Grafana 插件,通常需要科学上网
Pigsty 提供了三个与 INFRA 模块相关的剧本:
infra.yml :在 infra 节点上初始化 pigsty 基础设施infra-rm.yml:从 infra 节点移除基础设施组件install.yml:在当前节点上一次性完整安装 Pigstyinfra.ymlINFRA模块剧本 infra.yml 用于在 Infra节点 上初始化 pigsty 基础设施
执行该剧本将完成以下任务
该剧本默认在 INFRA节点 上执行
10.10.10.10。本剧本的一些注意事项
vmetrics_clean、vlogs_clean、vtraces_clean 设置为 false。/www/pigsty/repo_complete 存在时,本剧本会跳过从互联网下载软件的任务。完整执行该剧本耗时约5-8分钟,视机器配置而异。infra-rm.ymlINFRA模块剧本 infra-rm.yml 用于从 Infra节点 上移除 pigsty 基础设施
常用子任务包括:
./infra-rm.yml # 移除 INFRA 模块
./infra-rm.yml -t service # 停止 INFRA 上的基础设施服务
./infra-rm.yml -t data # 移除 INFRA 上的存留数据
./infra-rm.yml -t package # 卸载 INFRA 上安装的软件包
install.ymlINFRA模块剧本 install.yml用于在所有节点上一次性完整安装 Pigsty
该剧本在 剧本:一次性安装 中有更详细的介绍。
Pigsty Home : Pigsty 监控系统主页
INFRA Overview : Pigsty 基础设施自监控概览
Nginx Instance : Nginx 监控指标与日志
Grafana Instance: Grafana 监控指标与日志
VictoriaMetrics Instance: VictoriaMetrics 抓取、查询与存储指标
VMAlert Instance: 告警规则评估与队列状态
Alertmanager Instance: 告警聚合、通知管道与 Silences
VictoriaLogs Instance: 日志写入速率、查询负载与索引命中
VictoriaTraces Instance: Trace/KV 存储与 Jaeger 接口
Logs Instance: 基于 Vector + VictoriaLogs 的节点日志检索
CMDB Overview: CMDB 可视化
ETCD Overview: etcd 监控指标与日志
INFRA 模块有下列10个参数组。
META:Pigsty元数据CA:自签名公私钥基础设施/CAINFRA_ID:基础设施门户,Nginx域名REPO:本地软件源INFRA_PACKAGE:基础设施软件包NGINX:Nginx 网络服务器DNS:DNSMASQ 域名服务器VICTORIA:VictoriaMetrics / Logs / Traces 套件PROMETHEUS:Alertmanager 与 Blackbox ExporterGRAFANA:Grafana 可观测性全家桶为保持与 Pigsty 版本一致,请参阅 《参数列表》 获取最新的默认值、类型与层级说明。
介绍 Pigsty 中 INFRA 模块的整体架构,功能组件与责任分工。
如何配置 Infra 节点?定制 Nginx 服务器的配置与本地软件仓库的内容?配置 DNS,NTP 与监控组件的方法。
INFRA 模块提供了 10 组共 70+ 个配置参数
如何使用预置的 ansible 剧本来管理 INFRA 集群,常用管理命令速查。
基础设施组件与 Infra 集群管理 SOP:创建,销毁,扩容,缩容,证书,仓库……
如何在 Pigsty 中对基础设施进行自监控?
Pigsty INFRA 模块提供的完整监控指标列表与释义
Pigsty INFRA 基础设施模块常见问题答疑