参考
1 - Linux 兼容性
Pigsty 运行于 Linux 操作系统上,支持 amd64/x86_64 与 arm64/aarch64 架构,支持 EL,Debian,Ubuntu 三大主流 Linux 发行版。
Pigsty 不使用任何虚拟化容器化技术,直接运行于裸操作系统上。我们为三大主流 Linux 发行版最近两个大版本的两种架构提供支持。
概述
Pigsty 推荐使用的操作系统版本:RockyLinux 10.0、Ubuntu 24.04、Debian 13.1。
| 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
| RHEL / Rocky / Alma 10 | x86_64 | el10.x86_64 | ||||||
| RHEL / Rocky / Alma 10 | aarch64 | el10.aarch64 | ||||||
Ubuntu 24.04 (noble) | x86_64 | u24.x86_64 | ||||||
Ubuntu 24.04 (noble) | aarch64 | u24.aarch64 | ||||||
Debian 13 (trixie) | x86_64 | d13.x86_64 | ||||||
Debian 13 (trixie) | aarch64 | d13.aarch64 |
EL
Pigsty 支持 RHEL / Rocky / Alma / Anolis / CentOS 8、9、10 版本。
| EL 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
| RHEL10 / Rocky10 / Alma10 | x86_64 | el10.x86_64 | ||||||
| RHEL10 / Rocky10 / Alma10 | aarch64 | el10.aarch64 | ||||||
| RHEL9 / Rocky9 / Alma9 | x86_64 | el9.x86_64 | ||||||
| RHEL9 / Rocky9 / Alma9 | aarch64 | el9.aarch64 | ||||||
| RHEL8 / Rocky8 / Alma8 | x86_64 | el8.x86_64 | ||||||
| RHEL8 / Rocky8 / Alma8 | aarch64 | el8.aarch64 | ||||||
| RHEL7 / CentOS7 | x86_64 | el7.x86_64 | ||||||
| RHEL7 / CentOS7 | aarch64 | - |
请注意,PGDG Yum 仓库 从 EL9 / EL10 开始,针对 EL 小版本 进行构建,目前支持的小版本为:9.6, 9.7, 10.0, 10.1。 Pigsty 当前离线安装包基于 RockyLinux 9.6 与 RockyLinux 10.0 构建,不适用于 9.7 / 10.1 系统(OpenSSL 3.2 -> 3.5 跳变)
EL8 将于 2029 年进入 EOL,建议尽早规划升级。鉴于 EL10 适配已经完成,我们将在下个版本移除对 EL8 的支持。
Red Hat Enterprise Linux 7 已经于 2024年6月停止维护,PGDG 也不再为 PostgreSQL 16/17/18 提供 EL7 二进制包支持。
如需在老旧操作系统上获得运行支持,请考虑我们的 专业订阅服务。
Ubuntu
Pigsty 支持 Ubuntu 24.04 / 22.04:
| Ubuntu 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
Ubuntu 24.04 (noble) | x86_64 | u24.x86_64 | ||||||
Ubuntu 24.04 (noble) | aarch64 | u24.aarch64 | ||||||
Ubuntu 22.04 (jammy) | x86_64 | u22.x86_64 | ||||||
Ubuntu 22.04 (jammy) | aarch64 | u22.aarch64 | ||||||
Ubuntu 20.04 (focal) | x86_64 | u20.x86_64 | ||||||
Ubuntu 20.04 (focal) | aarch64 | - |
Ubuntu 24.04 在系统可靠性/稳定性与软件版本的新颖性/齐全性上取得了良好的平衡,推荐使用此系统。
Ubuntu 20.04 已于 2025年4月进入 EOL。 如需在老旧操作系统上获得扩展支持,请考虑我们的 专业订阅服务。
Debian
Pigsty 支持 Debian 12 / 13,推荐使用最新的 Debian 13.1
| Debian 发行版 | 架构 | 系统代码 | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|
Debian 13 (trixie) | x86_64 | d13.x86_64 | ||||||
Debian 13 (trixie) | aarch64 | d13.aarch64 | ||||||
Debian 12 (bookworm) | x86_64 | d12.x86_64 | ||||||
Debian 12 (bookworm) | aarch64 | d12.aarch64 | ||||||
Debian 11 (bullseye) | x86_64 | d11.x86_64 | ||||||
Debian 11 (bullseye) | aarch64 | - |
Debian 11 已经于 2024-07 进入 EOL。如需在老旧操作系统上获得扩展支持,请考虑我们的 专业订阅服务。
Vagrant
当您使用本地虚拟机部署 Pigsty 时,可以考虑使用以下 Vagrant 操作系统镜像,这也是 Pigsty 开发测试使用的镜像。
| 系统 | 镜像 |
|---|---|
| Rocky 8.10 | generic/rocky8 |
| Rocky 9.6 | generic/rocky9 |
| Debian 12.11 | generic/debian12 |
| Debian 13 | generic/debian13 |
| Ubuntu 22.04 | generic/ubuntu2204 |
| Ubuntu 24.04.2 | bento/ubuntu-24.04 |
Terraform
当您使用云服务器部署 Pigsty 时,可以考虑在 Terraform 中使用以下操作系统基础镜像,以 阿里云 为例:
| x86_64 | 镜像 |
|---|---|
| Rocky 8.10 | rockylinux_8_10_x64_20G_alibase_20240923.vhd |
| Rocky 9.6 | rockylinux_9_6_x64_20G_alibase_20250101.vhd |
| Rocky 10.0 | rockylinux_10_0_x64_20G_alibase_20251120.vhd |
| Ubuntu 22.04 | ubuntu_22_04_x64_20G_alibase_20240926.vhd |
| Ubuntu 24.04 | ubuntu_24_04_x64_20G_alibase_20240923.vhd |
| Debian 12.11 | debian_12_11_x64_20G_alibase_20241201.vhd |
| Debian 13.2 | debian_13_x64_20G_alibase_20250101.vhd |
| aarch64 | 镜像 |
|---|---|
| Rocky 8.10 | rockylinux_8_10_arm64_20G_alibase_20251120.vhd |
| Rocky 9.6 | rockylinux_9_6_arm64_20G_alibase_20251120.vhd |
| Rocky 10.0 | rockylinux_10_0_arm64_20G_alibase_20251120.vhd |
| Ubuntu 22.04 | ubuntu_22_04_arm64_20G_alibase_20251126.vhd |
| Ubuntu 24.04 | ubuntu_24_04_arm64_20G_alibase_20251126.vhd |
| Debian 12.11 | debian_12_11_arm64_20G_alibase_20250825.vhd |
| Debian 13.2 | debian_13_2_arm64_20G_alibase_20251121.vhd |
2 - 模块列表
核心模块
Pigsty 提供了四个 基础 功能模块,对于提供完整高可用的 PostgreSQL 服务必不可少:
PGSQL:带有高可用,时间点恢复,IaC,SOP,监控系统,以及 440 个扩展插件的自治的 PostgreSQL 集群。INFRA:本地软件仓库、Prometheus、Grafana、Loki、AlertManager、PushGateway、Blackbox Exporter…NODE:调整节点到所需状态、名称、时区、NTP、ssh、sudo、haproxy、docker、vector、keepalivedETCD:分布式键值存储,用作高可用 Postgres 集群的 DCS:共识选主/配置管理/服务发现。
内核模块
Pigsty 提供了四个 内核 功能模块 ,它们是 PostgreSQL 内核的可选原位替代,提供不同风味的数据库能力。
MSSQL:微软 SQL Server 线缆协议兼容的 PG 内核,由 AWS, WiltonDB & Babelfish 出品!IVORY:Oracle 兼容的 PostgreSQL 16 内核,由瀚高开源的 IvorySQL 项目提供。POLAR: 由阿里云开源的“云原生” PostgreSQL 内核,Aurora 风味的 RAC PostgreSQL Fork。CITUS:使用扩展实现分布式PostgreSQL集群(Azure Hyperscale),带有原生的 Patroni 高可用支持!
Pigsty 专业版 提供国产化数据库内核支持:PolarDB-O v2 —— 基于 PolarPG 的 Oracle 兼容的国产化数据库内核
扩展模块
Pigsty 提供了四个 扩展 功能模块,它对于核心功能来说并非必须,但可以用于增强 PostgreSQL 的能力:
MINIO:S3 兼容的简单对象存储服务器,可作为可选的 PostgreSQL 数据库备份仓库,带有生产部署支持与监控。REDIS:Redis 服务器,高性能数据结构服务器,支持独立主从、哨兵、集群模式生产部署,并带有完善的监控支持。MONGO:FerretDB 原生部署支持 —— 它为 PostgreSQL 添加了 MongoDB 线缆协议级别的 API 兼容支持!DOCKER:Docker Daemon 服务,允许用户一键拉起容器化的无状态软件工具模板,为 Pigsty 加装各种功能!
外围模块
Pigsty 同时支持那些与 PostgreSQL 内核带有紧密联系的 外围 模块(扩展,分支,衍生,包装):
DUCKDB:强大的嵌入式OLAP数据库,Pigsty提供二进制/动态库及相关PG扩展:pg_duckdb,pg_lakehouse与duckdb_fdwSUPABASE: Pigsty 允许用户在现有高可用 PostgreSQL 集群基础上,运行火爆的 Firebase 开源替代 —— Supabase !GREENPLUM:基于 PostgreSQL 12 内核的 MPP 数据仓库,目前仅提供监控支持与 RPM 安装支持。(Beta)CLOUDBERRY:Greenplum 闭源后原班开发者打造的开源分支,基于 PG 14 内核,目前仅提供RPM安装支持。(Beta)NEON:带有数据库分支功能特性的的无服务器 PostgreSQL 内核 (WIP)
试点模块
Pigsty 正在支持一些与 PostgreSQL 生态相关的 试点 模块,它们可能会在未来成为 Pigsty 的正式模块:
KAFKA:使用 Pigsty 部署由 KRaft 驱动的 Kafka 消息队列,并提供开箱即用的监控支持 (Beta)MYSQL:使用 Pigsty 部署高可用的 MySQL 8.0 集群,并提供开箱即用的监控支持(供批判/迁移评估之用) (Beta)KUBE:使用 SealOS 搭建开箱即用的生产级 Kubernetes 部署与监控支持 (Alpha).VICTORIA:基于 VictoriaMetrics 与 VictoriaLogs 的 Infra 替代选项,提供更好的性能与资源利用率(Alpha)JUPYTER:开箱即用的 Jupyter Notebook 环境,用于数据分析与机器学习等场景(Alpha)
监控其他数据库
Pigsty 的 INFRA 模块可以独立使用,作为开箱即用的监控基础设施,监控其他节点或现有 PostgreSQL 数据库
- 现有 PostgreSQL 服务:Pigsty 可以监控外部的、非 Pigsty 托管的 PostgreSQL 服务,并仍可提供相对完整的监控支持。
RDS PG:是云厂商提供的 PostgreSQL RDS 服务,将其视作标准的外部 Postgres 实例即可纳入监控PolarDB:是阿里云的云原生数据库,将其视作外部 PostgreSQL 11 / 14 实例即可纳入监控。KingBase: 是人大金仓提供的信创国产数据库,视作外部 PostgreSQL 12 实例即可纳入监控。Greenplum/YMatrixDB监控,目前将其视作水平分片的 PostgreSQL 集群即可纳入监控。
3 - 扩展列表
Pigsty 中总共有 440 个可用扩展,详情请参考 PGEXT.CLOUD 专门站,这是由 PIGSTY 维护的扩展仓库。
| 分类 | All | PGDG | PIGSTY | CONTRIB | MISS | PG18 | PG17 | PG16 | PG15 | PG14 | PG13 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ALL | 440 | 149 | 268 | 71 | 0 | 408 | 429 | 428 | 430 | 415 | 386 |
| EL | 434 | 143 | 268 | 71 | 6 | 397 | 421 | 422 | 424 | 412 | 382 |
| Debian | 426 | 105 | 250 | 71 | 14 | 394 | 416 | 414 | 416 | 404 | 371 |
4 - 文件结构
Pigsty FHS
Pigsty 的主目录默认放置于于 ~/pigsty,该目录下的文件结构如下所示:
#------------------------------------------------------------------------------
# pigsty
# ^-----@app # 额外的示例应用资源
# ^-----@bin # bin 脚本
# ^-----@docs # 文档(可docsify化)
# ^-----@files # ansible 文件资源
# ^-----@victoria # VictoriaMetrics 规则定义
# ^-----@grafana # grafana 仪表盘
# ^-----@postgres # /pg/bin/ 脚本
# ^-----@migration # pgsql 迁移任务定义
# ^-----@pki # 自签名 CA 和证书
# ^-----@roles # ansible 剧本实现
# ^-----@templates # ansible 模板文件
# ^-----@vagrant # Vagrant 沙箱虚拟机定义模板
# ^-----@terraform # Terraform 云虚拟机申请模板
# ^-----configure # 配置向导脚本
# ^-----ansible.cfg # ansible 默认配置文件
# ^-----pigsty.yml # pigsty 默认配置文件
# ^-----*.yml # ansible 剧本
#------------------------------------------------------------------------------
# /etc/pigsty/
# ^-----@targets # 基于文件的服务发现目标定义
# ^-----@dashboards # grafana 监控面板
# ^-----@datasources # grafana 数据源
# ^-----@playbooks # ansible 剧本
#------------------------------------------------------------------------------
CA FHS
Pigsty 的自签名 CA 位于 Pigsty 主目录下的 files/pki/。
你必须妥善保管 CA 的密钥文件:files/pki/ca/ca.key,该密钥是在 deploy.yml 或 infra.yml 的 ca 角色负责生成的。
# pigsty/files/pki
# ^-----@ca # 自签名 CA 密钥和证书
# ^-----@ca.key # 非常重要:保守其秘密
# ^-----@ca.crt # 非常重要:在所有地方都受信任
# ^-----@csr # 签名请求 csr
# ^-----@misc # 杂项证书,已签发证书
# ^-----@etcd # etcd 服务器证书
# ^-----@minio # minio 服务器证书
# ^-----@nginx # nginx SSL 证书
# ^-----@infra # infra 客户端证书
# ^-----@pgsql # pgsql 服务器证书
# ^-----@mongo # mongodb/ferretdb 服务器证书
# ^-----@mysql # mysql 服务器证书(占位符)
被 Pigsty 所管理的节点将安装以下证书文件:
/etc/pki/ca.crt # 所有节点都添加的根证书
/etc/pki/ca-trust/source/anchors/ca.crt # 软链接到系统受信任的锚点
所有 infra 节点都会有以下证书:
/etc/pki/infra.crt # infra 节点证书
/etc/pki/infra.key # infra 节点密钥
当您的管理节点出现故障时,files/pki 目录与 pigsty.yml 文件应当在备份的管理节点上可用。你可以用 rsync 做到这一点。
# run on meta-1, rsync to meta2
cd ~/pigsty;
rsync -avz ./ meta-2:~/pigsty
NODE FHS
节点的数据目录由参数 node_data 指定,默认为 /data,由 root 用户持有,权限为 0777。
每个组件的默认数据目录都位于这个数据库目录下,如下所示:
/data
# ^-----@postgres # postgres 数据库目录
# ^-----@backups # postgres 备份数据目录(没有专用备份盘时)
# ^-----@redis # redis 数据目录(多实例共用)
# ^-----@minio # minio 数据目录(单机单盘模式)
# ^-----@etcd # etcd 主数据目录
# ^-----@infra # infra 模块数据目录
# ^-----@docker # Docker 数据目录
# ^-----@... # 其他组件的数据目录
Prometheus FHS
Prometheus 的主配置文件则位于 roles/infra/templates/prometheus/prometheus.yml.j2 ,并渲染至所有基础设施节点的 /etc/prometheus/prometheus.yml。
VictoriaMetrics 相关的脚本与规则定义放置于 pigsty 主目录下的 files/victoria/ 目录,会被拷贝至所有基础设施节点的 /etc/prometheus/ 下。
# /etc/prometheus/
# ^-----prometheus.yml # Prometheus 主配置文件
# ^-----@bin # 工具脚本:检查配置,显示状态,重载配置,重建集群
# ^-----@rules # 记录和报警规则定义
# ^-----infra.yml # infra 规则和报警
# ^-----etcd.yml # etcd 规则和报警
# ^-----node.yml # node 规则和报警
# ^-----pgsql.yml # pgsql 规则和报警
# ^-----redis.yml # redis 规则和报警
# ^-----minio.yml # minio 规则和报警
# ^-----kafka.yml # kafka 规则和报警
# ^-----mysql.yml # mysql 规则和报警
# ^-----@targets # 基于文件的服务发现目标定义
# ^-----@infra # infra 静态目标定义
# ^-----@node # node 静态目标定义
# ^-----@pgsql # pgsql 静态目标定义
# ^-----@pgrds # pgsql 远程RDS目标
# ^-----@redis # redis 静态目标定义
# ^-----@minio # minio 静态目标定义
# ^-----@mongo # mongo 静态目标定义
# ^-----@mysql # mysql 静态目标定义
# ^-----@etcd # etcd 静态目标定义
# ^-----@ping # ping 静态目标定义
# ^-----@patroni # patroni 静态目标定义 (当patroni启用SSL时使用此目录)
# ^-----@..... # 其他监控目标定义
# /etc/alertmanager.yml # 告警组件主配置文件
# /etc/blackbox.yml # 黑盒探测主配置文件
Postgres FHS
以下参数与PostgreSQL数据库目录结构相关:
- pg_dbsu_home: Postgres 默认用户的家目录,默认为
/var/lib/pgsql - pg_bin_dir: Postgres二进制目录,默认为
/usr/pgsql/bin/ - pg_data:Postgres数据库目录,默认为
/pg/data - pg_fs_main:Postgres主数据盘挂载点,默认为
/data - pg_fs_backup:Postgres 备份盘挂载点,默认为
/data/backups(可选,也可以选择备份到主数据盘上的子目录)
# 工作假设:
# {{ pg_fs_main }} 主数据目录,默认位置:`/data` [快速SSD]
# {{ pg_fs_backup }} 备份数据盘,默认位置:`/data/backups` [廉价HDD]
#--------------------------------------------------------------#
# 默认配置:
# pg_fs_main = /data 高速SSD
# pg_fs_backup = /data/backups 廉价HDD (可选)
#
# /pg -> /data/postgres/pg-test-15 (软链接)
# /pg/data -> /data/postgres/pg-test-15/data
#--------------------------------------------------------------#
- name: create postgresql directories
tags: pg_dir
become: yes
block:
- name: make main and backup data dir
file: path={{ item }} state=directory owner=root mode=0777
with_items:
- "{{ pg_fs_main }}"
- "{{ pg_fs_backup }}"
# pg_cluster_dir: "{{ pg_fs_main }}/postgres/{{ pg_cluster }}-{{ pg_version }}"
- name: create postgres directories
file: path={{ item }} state=directory owner={{ pg_dbsu }} group=postgres mode=0700
with_items:
- "{{ pg_fs_main }}/postgres"
- "{{ pg_cluster_dir }}"
- "{{ pg_cluster_dir }}/bin"
- "{{ pg_cluster_dir }}/log"
- "{{ pg_cluster_dir }}/tmp"
- "{{ pg_cluster_dir }}/cert"
- "{{ pg_cluster_dir }}/conf"
- "{{ pg_cluster_dir }}/data"
- "{{ pg_cluster_dir }}/meta"
- "{{ pg_cluster_dir }}/stat"
- "{{ pg_cluster_dir }}/change"
- "{{ pg_backup_dir }}/backup"
数据文件结构
# 真实目录
{{ pg_fs_main }} /data # 顶层数据目录,通常为高速SSD挂载点
{{ pg_dir_main }} /data/postgres # 包含所有 Postgres 实例的数据目录(可能有多个实例/不同版本)
{{ pg_cluster_dir }} /data/postgres/pg-test-15 # 包含了 `pg-test` 集群的数据 (大版本是15)
/data/postgres/pg-test-15/bin # 关于 PostgreSQL 的实用脚本
/data/postgres/pg-test-15/log # 日志:postgres/pgbouncer/patroni/pgbackrest
/data/postgres/pg-test-15/tmp # 临时文件,例如渲染出的 SQL 文件
/data/postgres/pg-test-15/cert # postgres 服务器证书
/data/postgres/pg-test-15/conf # postgres 相关配置文件索引
/data/postgres/pg-test-15/data # postgres 主数据目录
/data/postgres/pg-test-15/meta # postgres 身份信息
/data/postgres/pg-test-15/stat # 统计信息,日志报表,汇总摘要
/data/postgres/pg-test-15/change # 变更记录
/data/postgres/pg-test-15/backup # 指向备份目录的软链接。
{{ pg_fs_backup }} /data/backups # 可选的备份盘目录/挂载点
/data/backups/postgres/pg-test-15/backup # 集群备份的实际存储位置
# 软链接
/pg -> /data/postgres/pg-test-15 # pg 根软链接
/pg/data -> /data/postgres/pg-test-15/data # pg 数据目录
/pg/backup -> /var/backups/postgres/pg-test-15/backup # pg 备份目录
二进制文件结构
在 EL 兼容发行版上(使用yum),PostgreSQL 默认安装位置为
/usr/pgsql-${pg_version}/
Pigsty 会创建一个名为 /usr/pgsql 的软连接,指向由 pg_version 参数指定的实际版本,例如
/usr/pgsql -> /usr/pgsql-15
因此,默认的 pg_bin_dir 是 /usr/pgsql/bin/,而该路径会被添加至系统的 PATH 环境变量中,定义文件为:/etc/profile.d/pgsql.sh.
export PATH="/usr/pgsql/bin:/pg/bin:$PATH"
export PGHOME=/usr/pgsql
export PGDATA=/pg/data
在 Ubuntu/Debian 上,PostgreSQL Deb 包的默认安装位置是:
/usr/lib/postgresql/${pg_version}/bin
Pgbouncer FHS
Pgbouncer 使用与 {{ pg_dbsu }} (默认为 postgres) 相同的用户运行,配置文件位于/etc/pgbouncer。
pgbouncer.ini,连接池主配置文件database.txt:定义连接池中的数据库userlist.txt:定义连接池中的用户pgb_hba.conf:定义连接池的访问权限
Redis FHS
Pigsty提供了对Redis部署与监控对基础支持。
Redis二进制使用RPM包或复制二进制的方式安装于/bin/中,包括
redis-server
redis-server
redis-cli
redis-sentinel
redis-check-rdb
redis-check-aof
redis-benchmark
/usr/libexec/redis-shutdown
对于一个名为 redis-test-1-6379 的 Redis 实例,与其相关的资源如下所示:
/usr/lib/systemd/system/redis-test-1-6379.service # 服务 (在Debian系中为/lib/systemd)
/etc/redis/redis-test-1-6379.conf # 配置
/data/redis/redis-test-1-6379 # 数据库目录
/data/redis/redis-test-1-6379/redis-test-1-6379.rdb # RDB文件
/data/redis/redis-test-1-6379/redis-test-1-6379.aof # AOF文件
/var/log/redis/redis-test-1-6379.log # 日志
/var/run/redis/redis-test-1-6379.pid # PID
对于 Ubuntu / Debian 而言,systemd 服务的默认目录不是 /usr/lib/systemd/system/ 而是 /lib/systemd/system/
5 - 参数列表
Pigsty 提供了约 380+ 个配置参数,分布在 8 个默认模块中,用于精细控制系统的各个方面。
总览
本页面提供 Pigsty 所有配置参数的导航与概览,点击模块名称可以跳转到对应的详细参数文档。
| 模块 | 参数组 | 参数总数 | 说明 |
|---|---|---|---|
| PGSQL | 9 | 123 | PostgreSQL 数据库集群的核心配置 |
| INFRA | 10 | 82 | 基础设施组件:软件源、Nginx、DNS、监控、Grafana 等 |
| NODE | 11 | 83 | 主机节点调优:身份、DNS、包、调优、安全、管理员、时间、VIP等 |
| ETCD | 2 | 13 | 分布式配置存储与服务发现 |
| REDIS | 1 | 21 | Redis 缓存与数据结构服务器 |
| MINIO | 2 | 21 | S3 兼容对象存储服务 |
| FERRET | 1 | 9 | MongoDB 兼容数据库 FerretDB |
| DOCKER | 1 | 8 | Docker 容器引擎 |
PGSQL
PGSQL 模块提供了 9 组共 123 个 PostgreSQL 相关配置参数。
| 参数组 | 参数数 | 说明 |
|---|---|---|
PG_ID | 11 | PostgreSQL 集群与实例的身份标识参数 |
PG_BUSINESS | 12 | 业务用户、数据库、服务与访问控制规则定义 |
PG_INSTALL | 10 | PostgreSQL 安装相关:版本、路径、软件包 |
PG_BOOTSTRAP | 38 | PostgreSQL 集群初始化引导:Patroni 高可用 |
PG_PROVISION | 8 | PostgreSQL 集群模板置备:角色、权限、扩展 |
PG_BACKUP | 6 | pgBackRest 备份与恢复配置 |
PG_ACCESS | 17 | 服务暴露、连接池、VIP、DNS 等客户端访问配置 |
PG_MONITOR | 17 | PostgreSQL 监控 Exporter 配置 |
PG_REMOVE | 4 | PostgreSQL 实例清理与卸载配置 |
INFRA
INFRA 模块提供了 10 组共 82 个 基础设施相关配置参数。
| 参数组 | 参数数 | 说明 |
|---|---|---|
META | 5 | Pigsty 元信息:版本、管理IP、区域、语言、代理 |
CA | 3 | 自签名 CA 证书管理 |
INFRA_ID | 3 | 基础设施节点身份标识与服务门户 |
REPO | 10 | 本地软件仓库配置 |
INFRA_PACKAGE | 2 | 基础设施节点软件包安装 |
NGINX | 14 | Nginx Web服务器与反向代理配置 |
DNS | 3 | DNSMasq 域名解析服务配置 |
VICTORIA | 19 | VictoriaMetrics/Logs/Traces 可观测性套件 |
PROMETHEUS | 7 | Alertmanager 与 Blackbox Exporter |
GRAFANA | 8 | Grafana 可视化平台配置 |
NODE
NODE 模块提供了 11 组共 82 个 主机节点相关配置参数。
| 参数组 | 参数数 | 说明 |
|---|---|---|
NODE_ID | 5 | NODE_ID 相关参数 |
NODE_DNS | 6 | NODE_DNS 相关参数 |
NODE_PACKAGE | 4 | NODE_PACKAGE 相关参数 |
NODE_TUNE | 10 | NODE_TUNE 相关参数 |
NODE_SEC | 4 | NODE_SEC 安全相关参数 |
NODE_ADMIN | 9 | NODE_ADMIN 相关参数 |
NODE_TIME | 5 | NODE_TIME 相关参数 |
NODE_VIP | 8 | NODE_VIP 相关参数 |
HAPROXY | 10 | HAPROXY 相关参数 |
NODE_EXPORTER | 3 | NODE_EXPORTER 相关参数 |
VECTOR | 6 | VECTOR 日志收集相关参数 |
ETCD
ETCD 模块提供了 2 组共 13 个 分布式配置存储相关参数。
| 参数组 | 参数数 | 说明 |
|---|---|---|
ETCD | 10 | etcd 集群的部署与配置 |
ETCD_REMOVE | 3 | etcd 集群的移除行为:防误删保险、数据清理等 |
REDIS
REDIS 模块提供了 21 个 Redis 相关配置参数。
| 参数组 | 参数数 | 说明 |
|---|---|---|
REDIS | 21 | Redis 集群的部署与配置 |
MINIO
MINIO 模块提供了 2 组共 21 个 MinIO 对象存储相关参数。
| 参数组 | 参数数 | 参数说明 |
|---|---|---|
MINIO | 18 | MinIO 集群的部署与配置 |
MINIO_REMOVE | 3 | MinIO 集群的移除行为:防误删保险、数据清理等 |
FERRET
FERRET 模块提供了 9 个 FerretDB 相关配置参数。
| 参数组 | 参数数 | 说明 |
|---|---|---|
FERRET | 9 | FerretDB 部署与配置 |
DOCKER
DOCKER 模块提供了 8 个 Docker 容器引擎相关配置参数。
| 参数组 | 参数数 | 说明 |
|---|---|---|
DOCKER | 8 | Docker 容器引擎配置 |
参数总览
以下是所有模块的参数汇总表格,按模块分类列出。
PGSQL 参数
PG_ID 参数组用于定义 PostgreSQL 集群与实例的身份标识,包括集群名称、实例序号、角色、分片等核心身份参数。
| 参数 | 类型 | 说明 |
|---|---|---|
pg_mode | enum | pgsql 集群模式: pgsql,citus,mssql,mysql,polar,ivory,oracle,gpsql |
pg_cluster | string | pgsql 集群名称, 必选身份参数 |
pg_seq | int | pgsql 实例号, 必选身份参数 |
pg_role | enum | pgsql 实例角色, 必选身份参数, 可为 primary,replica,offline |
pg_instances | dict | 在一个节点上定义多个 pg 实例,使用 {port:ins_vars} 格式 |
pg_upstream | ip | 级联从库或备份集群或的复制上游节点IP地址 |
pg_shard | string | pgsql 分片名,对 citus 与 gpsql 等水平分片集群为必选身份参数 |
pg_group | int | pgsql 分片号,正整数,对 citus 与 gpsql 等水平分片集群为必选身份参数 |
gp_role | enum | 这个集群的 greenplum 角色,可以是 master 或 segment |
pg_exporters | dict | 在该节点上设置额外的 pg_exporters 用于监控远程 postgres 实例 |
pg_offline_query | bool | 设置为 true 将此只读实例标记为特殊的离线从库,承载 Offline 服务,允许离线查询 |
PG_BUSINESS 参数组用于定义业务用户、数据库、服务与访问控制规则,以及默认的系统用户凭据。
| 参数 | 类型 | 说明 |
|---|---|---|
pg_users | user[] | postgres 业务用户 |
pg_databases | database[] | postgres 业务数据库 |
pg_services | service[] | postgres 业务服务 |
pg_hba_rules | hba[] | postgres 的业务 hba 规则 |
pgb_hba_rules | hba[] | pgbouncer 的业务 hba 规则 |
pg_replication_username | username | postgres 复制用户名,默认为 replicator |
pg_replication_password | password | postgres 复制密码,默认为 DBUser.Replicator |
pg_admin_username | username | postgres 管理员用户名,默认为 dbuser_dba |
pg_admin_password | password | postgres 管理员明文密码,默认为 DBUser.DBA |
pg_monitor_username | username | postgres 监控用户名,默认为 dbuser_monitor |
pg_monitor_password | password | postgres 监控密码,默认为 DBUser.Monitor |
pg_dbsu_password | password | dbsu 密码,默认为空字符串意味着不设置 dbsu 密码,最好不要设置。 |
PG_INSTALL 参数组用于配置 PostgreSQL 安装相关选项,包括版本、路径、软件包与扩展插件。
| 参数 | 类型 | 说明 |
|---|---|---|
pg_dbsu | username | 操作系统 dbsu 名称,默认为 postgres,最好不要更改 |
pg_dbsu_uid | int | 操作系统 dbsu uid 和 gid,对于默认的 postgres 用户和组为 26 |
pg_dbsu_sudo | enum | dbsu sudo 权限, none,limit,all,nopass,默认为 limit |
pg_dbsu_home | path | postgresql 主目录,默认为 /var/lib/pgsql |
pg_dbsu_ssh_exchange | bool | 在 pgsql 集群之间交换 postgres dbsu ssh 密钥 |
pg_version | enum | 要安装的 postgres 主版本,默认为 18 |
pg_bin_dir | path | postgres 二进制目录,默认为 /usr/pgsql/bin |
pg_log_dir | path | postgres 日志目录,默认为 /pg/log/postgres |
pg_packages | string[] | 要安装的 pg 包,${pg_version} 将被替换为实际主版本号 |
pg_extensions | string[] | 要安装的 pg 扩展,${pg_version} 将被替换为实际主版本号 |
PG_BOOTSTRAP 参数组用于配置 PostgreSQL 集群初始化引导,包括 Patroni 高可用、数据目录、存储、连接、编码等核心设置。
| 参数 | 类型 | 说明 |
|---|---|---|
pg_data | path | postgres 数据目录,默认为 /pg/data |
pg_fs_main | path | postgres 主数据的挂载点/路径,默认为 /data/postgres |
pg_fs_backup | path | pg 备份数据的挂载点/路径,默认为 /data/backups |
pg_storage_type | enum | pg 主数据的存储类型,SSD、HDD,默认为 SSD,影响自动优化的参数。 |
pg_dummy_filesize | size | /pg/dummy 的大小,默认保留 64MB 磁盘空间用于紧急抢修 |
pg_listen | ip(s) | postgres/pgbouncer 的监听地址,用逗号分隔的IP列表,默认为 0.0.0.0 |
pg_port | port | postgres 监听端口,默认为 5432 |
pg_localhost | path | postgres 的 Unix 套接字目录,用于本地连接 |
pg_namespace | path | 在 etcd 中的顶级键命名空间,被 patroni & vip 用于高可用管理 |
patroni_enabled | bool | 如果禁用,初始化期间不会创建 postgres 集群 |
patroni_mode | enum | patroni 工作模式:default,pause,remove |
patroni_port | port | patroni 监听端口,默认为 8008 |
patroni_log_dir | path | patroni 日志目录,默认为 /pg/log/patroni |
patroni_ssl_enabled | bool | 使用 SSL 保护 patroni RestAPI 通信? |
patroni_watchdog_mode | enum | patroni 看门狗模式:automatic,required,off,默认为 off |
patroni_username | username | patroni restapi 用户名,默认为 postgres |
patroni_password | password | patroni restapi 密码,默认为 Patroni.API |
pg_primary_db | string | 指定集群中首要使用的数据库名,Citus等模式会用到,默认为 postgres |
pg_parameters | dict | 覆盖 postgresql.auto.conf 中的 PostgreSQL 参数 |
pg_files | path[] | 拷贝至PGDATA目录中的额外文件列表 (例如许可证文件) |
pg_conf | enum | 配置模板:oltp,olap,crit,tiny,默认为 oltp.yml |
pg_max_conn | int | postgres 最大连接数,auto 将使用推荐值 |
pg_shared_buffer_ratio | float | postgres 共享缓冲区内存比率,默认为 0.25,范围 0.1~0.4 |
pg_rto | int | 恢复时间目标(秒),默认为 30s |
pg_rpo | int | 恢复点目标(字节),默认为 1MiB |
pg_libs | string | 预加载的库,默认为 pg_stat_statements,auto_explain |
pg_delay | interval | 备份集群主库的WAL重放应用延迟,用于制备延迟从库 |
pg_checksum | bool | 为 postgres 集群启用数据校验和? |
pg_pwd_enc | enum | 密码加密算法:固定为 scram-sha-256 |
pg_encoding | enum | 数据库集群编码,默认为 UTF8 |
pg_locale | enum | 数据库集群本地化设置,默认为 C |
pg_lc_collate | enum | 数据库集群排序,默认为 C |
pg_lc_ctype | enum | 数据库字符类型,默认为 C |
pg_io_method | enum | PostgreSQL IO 方法:auto, sync, worker, io_uring |
pg_etcd_password | password | 此 PostgreSQL 集群在 etcd 中使用的密码,默认使用集群名 |
pgsodium_key | string | pgsodium 加密主密钥,64 位十六进制数字,默认使用 sha256(pg_cluster) |
pgsodium_getkey_script | path | pgsodium 获取密钥脚本路径,默认使用模板中的 pgsodium_getkey |
PG_PROVISION 参数组用于配置 PostgreSQL 集群模板置备,包括默认角色、权限、模式、扩展与 HBA 规则。
| 参数 | 类型 | 说明 |
|---|---|---|
pg_provision | bool | 在引导后置备 postgres 集群内部的业务对象? |
pg_init | string | 为集群模板提供初始化脚本,默认为 pg-init |
pg_default_roles | role[] | postgres 集群中的默认预定义角色和系统用户 |
pg_default_privileges | string[] | 由管理员用户创建数据库内对象时的默认权限 |
pg_default_schemas | string[] | 要创建的默认模式列表 |
pg_default_extensions | extension[] | 要创建的默认扩展列表 |
pg_reload | bool | 更改HBA后,是否立即重载 postgres 配置 |
pg_default_hba_rules | hba[] | postgres 基于主机的认证规则,全局PG默认HBA |
pgb_default_hba_rules | hba[] | pgbouncer 默认的基于主机的认证规则,全局PGB默认HBA |
PG_BACKUP 参数组用于配置 pgBackRest 备份与恢复,包括仓库类型、路径、保留策略等。
| 参数 | 类型 | 说明 |
|---|---|---|
pgbackrest_enabled | bool | 在 pgsql 主机上启用 pgbackrest? |
pgbackrest_clean | bool | 在初始化时删除以前的 pg 备份数据? |
pgbackrest_log_dir | path | pgbackrest 日志目录,默认为 /pg/log/pgbackrest |
pgbackrest_method | enum | pgbackrest 使用的仓库:local,minio,等… |
pgbackrest_init_backup | bool | pgbackrest 初始化完成后是否立即执行全量备份?默认为 true |
pgbackrest_repo | dict | pgbackrest 仓库定义 |
PG_ACCESS 参数组用于配置服务暴露、连接池、VIP、DNS 等客户端访问相关选项。
| 参数 | 类型 | 说明 |
|---|---|---|
pgbouncer_enabled | bool | 如果禁用,则不会配置 pgbouncer 连接池 |
pgbouncer_port | port | pgbouncer 监听端口,默认为 6432 |
pgbouncer_log_dir | path | pgbouncer 日志目录,默认为 /pg/log/pgbouncer |
pgbouncer_auth_query | bool | 使用 AuthQuery 来从 postgres 获取未列出的业务用户? |
pgbouncer_poolmode | enum | 池化模式:transaction,session,statement,默认为 transaction |
pgbouncer_sslmode | enum | pgbouncer 客户端 SSL 模式,默认为禁用 |
pgbouncer_ignore_param | string[] | pgbouncer 忽略的启动参数列表 |
pg_weight | int | 在服务中的相对负载均衡权重,默认为 100,范围 0-255 |
pg_service_provider | string | 专用的 haproxy 节点组名称,或默认空字符,使用本地节点上的 haproxy |
pg_default_service_dest | enum | 如果 svc.dest=‘default’,默认服务指向哪里?postgres 或 pgbouncer |
pg_default_services | service[] | postgres 默认服务定义列表,全局共用。 |
pg_vip_enabled | bool | 是否为 pgsql 主节点启用 L2 VIP?默认不启用 |
pg_vip_address | cidr4 | vip 地址的格式为 <ipv4>/<mask>,启用 vip 时为必选参数 |
pg_vip_interface | string | 监听的 vip 网络接口,默认为 eth0 |
pg_dns_suffix | string | pgsql dns 后缀,默认为空 |
pg_dns_target | enum | PG DNS 解析到哪里?auto、primary、vip、none 或者特定的 IP 地址 |
PG_MONITOR 参数组用于配置 PostgreSQL 监控 Exporter,包括 pg_exporter、pgbouncer_exporter 和 pgbackrest_exporter。
| 参数 | 类型 | 说明 |
|---|---|---|
pg_exporter_enabled | bool | 在 pgsql 主机上启用 pg_exporter 吗? |
pg_exporter_config | string | pg_exporter 配置文件/模板名称 |
pg_exporter_cache_ttls | string | pg_exporter 收集器阶梯TTL配置,默认为 ‘1,10,60,300’ |
pg_exporter_port | port | pg_exporter 监听端口,默认为 9630 |
pg_exporter_params | string | pg_exporter dsn 中传入的额外 URL 参数 |
pg_exporter_url | pgurl | 如果指定,则覆盖自动生成的 postgres DSN 连接串 |
pg_exporter_auto_discovery | bool | 监控是否启用自动数据库发现?默认启用 |
pg_exporter_exclude_database | string | 启用自动发现时,排除在外的数据库名称列表,用逗号分隔 |
pg_exporter_include_database | string | 启用自动发现时,只监控这个列表中的数据库,名称用逗号分隔 |
pg_exporter_connect_timeout | int | pg_exporter 连接超时,单位毫秒,默认为 200 |
pg_exporter_options | arg | pg_exporter 的额外命令行参数选项 |
pgbouncer_exporter_enabled | bool | 在 pgsql 主机上启用 pgbouncer_exporter 吗? |
pgbouncer_exporter_port | port | pgbouncer_exporter 监听端口,默认为 9631 |
pgbouncer_exporter_url | pgurl | 如果指定,则覆盖自动生成的 pgbouncer dsn 连接串 |
pgbouncer_exporter_options | arg | pgbouncer_exporter 的额外命令行参数选项 |
pgbackrest_exporter_enabled | bool | 在 pgsql 主机上启用 pgbackrest_exporter 吗? |
pgbackrest_exporter_port | port | pgbackrest_exporter 监听端口,默认为 9854 |
pgbackrest_exporter_options | arg | pgbackrest_exporter 的额外命令行参数选项 |
PG_REMOVE 参数组用于配置 PostgreSQL 实例清理与卸载行为,包括数据目录、备份、软件包的删除控制。
| 参数 | 类型 | 说明 |
|---|---|---|
pg_rm_data | bool | 删除 pgsql 实例时是否清理 postgres 数据目录? |
pg_rm_backup | bool | 删除主库时是否一并清理 pgbackrest 备份? |
pg_rm_pkg | bool | 删除 pgsql 实例时是否卸载相关软件包? |
pg_safeguard | bool | 防误删保险,阻止误执行 pgsql 清理操作?默认为 false |
INFRA 参数
META 参数组用于定义 Pigsty 的元信息,包括版本号、管理节点 IP、软件源区域、默认语言以及代理设置。
| 参数 | 类型 | 说明 |
|---|---|---|
version | string | pigsty 版本字符串 |
admin_ip | ip | 管理节点 IP 地址 |
region | enum | 上游镜像区域:default,china,europe |
language | enum | 默认语言,en 或 zh |
proxy_env | dict | 下载包时使用的全局代理环境变量 |
CA 参数组用于配置 Pigsty 自签名 CA 证书管理,包括是否创建 CA、CA 名称以及证书有效期。
| 参数 | 类型 | 说明 |
|---|---|---|
ca_create | bool | 不存在时是否创建 CA?默认为 true |
ca_cn | string | CA CN名称,固定为 pigsty-ca |
cert_validity | interval | 证书有效期,默认为 20 年 |
INFRA_ID 参数组用于定义基础设施节点的身份标识,包括节点序号、服务门户配置以及数据目录。
| 参数 | 类型 | 说明 |
|---|---|---|
infra_seq | int | 基础设施节点序号,必选身份参数 |
infra_portal | dict | 通过 Nginx 门户暴露的基础设施服务列表 |
infra_data | path | 基础设施数据目录,默认为 /data/infra |
REPO 参数组用于配置本地软件仓库,包括仓库启用开关、目录路径、上游源定义以及要下载的软件包列表。
| 参数 | 类型 | 说明 |
|---|---|---|
repo_enabled | bool | 在此基础设施节点上创建软件仓库? |
repo_home | path | 软件仓库主目录,默认为/www |
repo_name | string | 软件仓库名称,默认为 pigsty |
repo_endpoint | url | 仓库的访问点:域名或 ip:port 格式 |
repo_remove | bool | 构建本地仓库时是否移除现有上游仓库源定义文件? |
repo_modules | string | 启用的上游仓库模块列表,用逗号分隔 |
repo_upstream | upstream[] | 上游仓库源定义:从哪里下载上游包? |
repo_packages | string[] | 从上游仓库下载哪些软件包? |
repo_extra_packages | string[] | 从上游仓库下载哪些额外的软件包? |
repo_url_packages | string[] | 使用URL下载的额外软件包列表 |
INFRA_PACKAGE 参数组用于定义在基础设施节点上安装的软件包,包括 RPM/DEB 包和 PIP 包。
| 参数 | 类型 | 说明 |
|---|---|---|
infra_packages | string[] | 在基础设施节点上要安装的软件包 |
infra_packages_pip | string | 在基础设施节点上使用 pip 安装的包 |
NGINX 参数组用于配置 Nginx Web 服务器与反向代理,包括启用开关、端口、SSL 模式、证书以及基础认证。
| 参数 | 类型 | 说明 |
|---|---|---|
nginx_enabled | bool | 在此基础设施节点上启用 nginx? |
nginx_clean | bool | 初始化时清理现有 nginx 配置? |
nginx_exporter_enabled | bool | 在此基础设施节点上启用 nginx_exporter? |
nginx_exporter_port | port | nginx_exporter 监听端口,默认为 9113 |
nginx_sslmode | enum | nginx SSL模式?disable,enable,enforce |
nginx_cert_validity | duration | nginx 自签名证书有效期,默认为 397d |
nginx_home | path | nginx 内容目录,默认为 /www,软链接到 nginx_data |
nginx_data | path | nginx 实际数据目录,默认为 /data/nginx |
nginx_users | dict | nginx 基础认证用户:用户名和密码字典 |
nginx_port | port | nginx 监听端口,默认为 80 |
nginx_ssl_port | port | nginx SSL监听端口,默认为 443 |
certbot_sign | bool | 是否使用 certbot 签署证书? |
certbot_email | string | certbot 通知邮箱地址 |
certbot_options | string | certbot 额外的命令行参数 |
DNS 参数组用于配置 DNSMasq 域名解析服务,包括启用开关、监听端口以及动态 DNS 记录。
| 参数 | 类型 | 说明 |
|---|---|---|
dns_enabled | bool | 在此基础设施节点上设置dnsmasq? |
dns_port | port | DNS 服务器监听端口,默认为 53 |
dns_records | string[] | 由 dnsmasq 解析的动态 DNS 记录 |
VICTORIA 参数组用于配置 VictoriaMetrics/Logs/Traces 可观测性套件,包括启用开关、端口、数据保留策略等。
| 参数 | 类型 | 说明 |
|---|---|---|
vmetrics_enabled | bool | 在此基础设施节点上启用 VictoriaMetrics? |
vmetrics_clean | bool | 初始化时清理 VictoriaMetrics 数据? |
vmetrics_port | port | VictoriaMetrics 监听端口,默认为 8428 |
vmetrics_scrape_interval | interval | 全局抓取间隔,默认为 10s |
vmetrics_scrape_timeout | interval | 全局抓取超时,默认为 8s |
vmetrics_options | arg | VictoriaMetrics 额外命令行参数 |
vlogs_enabled | bool | 在此基础设施节点上启用 VictoriaLogs? |
vlogs_clean | bool | 初始化时清理 VictoriaLogs 数据? |
vlogs_port | port | VictoriaLogs 监听端口,默认为 9428 |
vlogs_options | arg | VictoriaLogs 额外命令行参数 |
vtraces_enabled | bool | 在此基础设施节点上启用 VictoriaTraces? |
vtraces_clean | bool | 初始化时清理 VictoriaTraces 数据? |
vtraces_port | port | VictoriaTraces 监听端口,默认为 10428 |
vtraces_options | arg | VictoriaTraces 额外命令行参数 |
vmalert_enabled | bool | 在此基础设施节点上启用 VMAlert? |
vmalert_port | port | VMAlert 监听端口,默认为 8880 |
vmalert_options | arg | VMAlert 额外命令行参数 |
PROMETHEUS 参数组用于配置 Alertmanager 与 Blackbox Exporter,提供告警管理和网络探测功能。
| 参数 | 类型 | 说明 |
|---|---|---|
blackbox_enabled | bool | 在此基础设施节点上设置 blackbox_exporter? |
blackbox_port | port | blackbox_exporter 监听端口,默认为 9115 |
blackbox_options | arg | blackbox_exporter 额外的命令行参数选项 |
alertmanager_enabled | bool | 在此基础设施节点上设置 alertmanager? |
alertmanager_port | port | AlertManager 监听端口,默认为 9059 |
alertmanager_options | arg | alertmanager 额外的命令行参数选项 |
exporter_metrics_path | path | exporter 指标路径,默认为 /metrics |
GRAFANA 参数组用于配置 Grafana 可视化平台,包括启用开关、端口、管理员凭据以及数据源配置。
| 参数 | 类型 | 说明 |
|---|---|---|
grafana_enabled | bool | 在此基础设施节点上启用 Grafana? |
grafana_port | port | Grafana 监听端口,默认为 3000 |
grafana_clean | bool | 初始化Grafana期间清除数据? |
grafana_admin_username | username | Grafana 管理员用户名,默认为 admin |
grafana_admin_password | password | Grafana 管理员密码,默认为 pigsty |
grafana_auth_proxy | bool | 启用 Grafana 身份代理? |
grafana_pgurl | url | 外部 PostgreSQL 数据库 URL(用于Grafana持久化) |
grafana_view_password | password | Grafana 元数据库 PG 数据源密码 |
NODE 参数
NODE_ID 参数组用于定义节点的身份标识参数,包括节点名称、集群名称,以及是否从 PostgreSQL 借用身份。
| 参数 | 类型 | 说明 |
|---|---|---|
nodename | string | node 实例标识,如缺失则使用主机名,可选 |
node_cluster | string | node 集群标识,如缺失则使用默认值’nodes’,可选 |
nodename_overwrite | bool | 用 nodename 覆盖节点的主机名吗? |
nodename_exchange | bool | 在剧本主机之间交换 nodename 吗? |
node_id_from_pg | bool | 如果可行,是否借用 postgres 身份作为节点身份? |
NODE_DNS 参数组用于配置节点的 DNS 解析,包括静态 hosts 记录与动态 DNS 服务器。
| 参数 | 类型 | 说明 |
|---|---|---|
node_write_etc_hosts | bool | 是否修改目标节点上的 /etc/hosts? |
node_default_etc_hosts | string[] | /etc/hosts 中的静态 DNS 记录 |
node_etc_hosts | string[] | /etc/hosts 中的额外静态 DNS 记录 |
node_dns_method | enum | 如何处理现有DNS服务器:add,none,overwrite |
node_dns_servers | string[] | /etc/resolv.conf 中的动态域名服务器列表 |
node_dns_options | string[] | /etc/resolv.conf 中的DNS解析选项 |
NODE_PACKAGE 参数组用于配置节点的软件源与软件包安装。
| 参数 | 类型 | 说明 |
|---|---|---|
node_repo_modules | enum | 在节点上启用哪些软件源模块?默认为 local |
node_repo_remove | bool | 配置节点软件仓库时,删除节点上现有的仓库吗? |
node_packages | string[] | 要在当前节点上安装的软件包列表 |
node_default_packages | string[] | 默认在所有节点上安装的软件包列表 |
NODE_TUNE 参数组用于配置节点的内核参数、特性开关与性能调优模板。
| 参数 | 类型 | 说明 |
|---|---|---|
node_disable_numa | bool | 禁用节点 numa,禁用需要重启 |
node_disable_swap | bool | 禁用节点 Swap,谨慎使用 |
node_static_network | bool | 重启后保留 DNS 解析器设置,即静态网络,默认启用 |
node_disk_prefetch | bool | 在 HDD 上配置磁盘预取以提高性能 |
node_kernel_modules | string[] | 在此节点上启用的内核模块列表 |
node_hugepage_count | int | 主机节点分配的 2MB 大页数量,优先级比比例更高 |
node_hugepage_ratio | float | 主机节点分配的内存大页占总内存比例,0 默认禁用 |
node_overcommit_ratio | float | 节点内存允许的 OverCommit 超额比率 (50-100),0 默认禁用 |
node_tune | enum | 节点调优配置文件:无,oltp,olap,crit,tiny |
node_sysctl_params | dict | 额外的 sysctl 配置参数,k:v 格式 |
NODE_SEC 参数组用于配置节点的安全相关选项,包括 SELinux、防火墙等。
| 参数 | 类型 | 说明 |
|---|---|---|
node_selinux_mode | enum | SELinux 模式:disabled, permissive, enforcing |
node_firewall_mode | enum | 防火墙模式:off, none, zone |
node_firewall_intranet | cidr[] | 内网 CIDR 列表,用于配置防火墙规则 |
node_firewall_public_port | port[] | 公网开放端口列表,默认为 [22, 80, 443, 5432] |
NODE_ADMIN 参数组用于配置节点的管理员用户、数据目录与命令别名。
| 参数 | 类型 | 说明 |
|---|---|---|
node_data | path | 节点主数据目录,默认为 /data |
node_admin_enabled | bool | 在目标节点上创建管理员用户吗? |
node_admin_uid | int | 节点管理员用户的 uid 和 gid |
node_admin_username | username | 节点管理员用户的名称,默认为 dba |
node_admin_sudo | enum | 管理员用户的 sudo 权限:limited, nopass, all, none |
node_admin_ssh_exchange | bool | 是否在节点集群之间交换管理员 ssh 密钥 |
node_admin_pk_current | bool | 将当前用户的 ssh 公钥添加到管理员的 authorized_keys 中吗? |
node_admin_pk_list | string[] | 要添加到管理员用户的 ssh 公钥 |
node_aliases | dict | 配置主机上的 Shell Alias 命令,KV字典 |
NODE_TIME 参数组用于配置节点的时区、NTP 时间同步与定时任务。
| 参数 | 类型 | 说明 |
|---|---|---|
node_timezone | string | 设置主机节点时区,空字符串跳过 |
node_ntp_enabled | bool | 启用 chronyd 时间同步服务吗? |
node_ntp_servers | string[] | /etc/chrony.conf 中的 ntp 服务器列表 |
node_crontab_overwrite | bool | 写入 /etc/crontab 时,追加写入还是全部覆盖? |
node_crontab | string[] | 在 /etc/crontab 中的 crontab 条目 |
NODE_VIP 参数组用于配置节点集群的 L2 VIP,由 keepalived 实现。
| 参数 | 类型 | 说明 |
|---|---|---|
vip_enabled | bool | 在此节点集群上启用 L2 vip 吗? |
vip_address | ip | 节点 vip 地址的 ipv4 格式,启用 vip 时为必要参数 |
vip_vrid | int | 所需的整数,1-254,在同一 VLAN 中应唯一 |
vip_role | enum | 可选,master/backup,默认为 backup |
vip_preempt | bool | 可选,true/false,默认为 false,启用 vip 抢占 |
vip_interface | string | 节点 vip 网络接口监听,默认为 eth0 |
vip_dns_suffix | string | 节点 vip DNS 名称后缀,默认为空字符串 |
vip_auth_pass | password | VRRP 认证密码,空则使用 <cls>-<vrid> 作为默认值 |
vip_exporter_port | port | keepalived exporter 监听端口,默认为 9650 |
HAPROXY 参数组用于配置节点上的 HAProxy 负载均衡器与服务暴露。
| 参数 | 类型 | 说明 |
|---|---|---|
haproxy_enabled | bool | 在此节点上启用 haproxy 吗? |
haproxy_clean | bool | 清除所有现有的 haproxy 配置吗? |
haproxy_reload | bool | 配置后重新加载 haproxy 吗? |
haproxy_auth_enabled | bool | 启用 haproxy 管理页面的身份验证? |
haproxy_admin_username | username | haproxy 管理用户名,默认为 admin |
haproxy_admin_password | password | haproxy 管理密码,默认为 pigsty |
haproxy_exporter_port | port | haproxy exporter 的端口,默认为 9101 |
haproxy_client_timeout | interval | haproxy 客户端连接超时,默认为 24h |
haproxy_server_timeout | interval | haproxy 服务器端连接超时,默认为 24h |
haproxy_services | service[] | 要在节点上对外暴露的 haproxy 服务列表 |
NODE_EXPORTER 参数组用于配置节点监控 Exporter。
| 参数 | 类型 | 说明 |
|---|---|---|
node_exporter_enabled | bool | 在此节点上配置 node_exporter 吗? |
node_exporter_port | port | node exporter 监听端口,默认为 9100 |
node_exporter_options | arg | node_exporter 的额外服务器选项 |
VECTOR 参数组用于配置 Vector 日志收集器。
| 参数 | 类型 | 说明 |
|---|---|---|
vector_enabled | bool | 启用 vector 日志收集器吗? |
vector_clean | bool | 初始化期间清除 vector 数据目录吗? |
vector_data | path | vector 数据目录,默认为 /data/vector |
vector_port | port | vector 指标监听端口,默认为 9598 |
vector_read_from | enum | vector 从头还是从尾开始读取日志 |
vector_log_endpoint | string[] | 日志发送目标端点,默认发送至 infra 组 |
ETCD 参数
ETCD 参数组用于 etcd 集群的部署与配置,包括实例标识、集群名称、数据目录、端口以及认证密码。
| 参数 | 类型 | 说明 |
|---|---|---|
etcd_seq | int | etcd 实例标识符,必填 |
etcd_cluster | string | etcd 集群名,默认固定为 etcd |
etcd_learner | bool | 是否以 learner 模式初始化 etcd 实例? |
etcd_data | path | etcd 数据目录,默认为 /data/etcd |
etcd_port | port | etcd 客户端端口,默认为 2379 |
etcd_peer_port | port | etcd 同伴端口,默认为 2380 |
etcd_init | enum | etcd 初始集群状态,新建或已存在 |
etcd_election_timeout | int | etcd 选举超时,默认为 1000ms |
etcd_heartbeat_interval | int | etcd 心跳间隔,默认为 100ms |
etcd_root_password | password | etcd root 用户密码,用于 RBAC 认证 |
ETCD_REMOVE 参数组控制 etcd 集群的移除行为,包括防误删保险、数据清理以及软件包卸载。
| 参数 | 类型 | 说明 |
|---|---|---|
etcd_safeguard | bool | etcd 防误删保险,阻止清除正在运行的 etcd 实例? |
etcd_rm_data | bool | 移除时是否删除 etcd 数据?默认为 true |
etcd_rm_pkg | bool | 移除时是否卸载 etcd 软件包?默认为 false |
REDIS 参数
REDIS 参数组用于 Redis 集群的部署与配置,包括身份标识、实例定义、工作模式、内存配置、持久化以及监控。
| 参数 | 类型 | 说明 |
|---|---|---|
redis_cluster | string | Redis数据库集群名称,必选身份参数 |
redis_instances | dict | Redis节点上的实例定义 |
redis_node | int | Redis节点编号,正整数,集群内唯一,必选身份参数 |
redis_fs_main | path | Redis主数据目录,默认为 /data |
redis_exporter_enabled | bool | Redis Exporter 是否启用? |
redis_exporter_port | port | Redis Exporter监听端口 |
redis_exporter_options | string | Redis Exporter命令参数 |
redis_safeguard | bool | 禁止抹除现存的Redis |
redis_clean | bool | 初始化Redis是否抹除现存实例 |
redis_rmdata | bool | 移除Redis实例时是否一并移除数据? |
redis_mode | enum | Redis集群模式:sentinel,cluster,standalone |
redis_conf | string | Redis配置文件模板,sentinel 除外 |
redis_bind_address | ip | Redis监听地址,默认留空则会绑定主机IP |
redis_max_memory | size | Redis可用的最大内存 |
redis_mem_policy | enum | Redis内存逐出策略 |
redis_password | password | Redis密码,默认留空则禁用密码 |
redis_rdb_save | string[] | Redis RDB 保存指令,字符串列表,空数组则禁用RDB |
redis_aof_enabled | bool | Redis AOF 是否启用? |
redis_rename_commands | dict | Redis危险命令重命名列表 |
redis_cluster_replicas | int | Redis原生集群中每个主库配几个从库? |
redis_sentinel_monitor | master[] | Redis哨兵监控的主库列表,只在哨兵集群上使用 |
MINIO 参数
MINIO 参数组用于 MinIO 集群的部署与配置,包括身份标识、存储路径、端口、认证凭据以及存储桶和用户的置备。
| 参数 | 类型 | 说明 |
|---|---|---|
minio_seq | int | minio 实例标识符,必填 |
minio_cluster | string | minio 集群名称,默认为 minio |
minio_user | username | minio 操作系统用户,默认为 minio |
minio_https | bool | 是否为 MinIO 启用 HTTPS?默认为 true |
minio_node | string | minio 节点名模式 |
minio_data | path | minio 数据目录,使用 {x...y} 指定多个磁盘 |
minio_volumes | string | minio 核心参数,指定成员节点与磁盘,默认不指定 |
minio_domain | string | minio 外部域名,默认为 sss.pigsty |
minio_port | port | minio 服务端口,默认为 9000 |
minio_admin_port | port | minio 控制台端口,默认为 9001 |
minio_access_key | username | 根访问密钥,默认为 minioadmin |
minio_secret_key | password | 根密钥,默认为 S3User.MinIO |
minio_extra_vars | string | minio 服务器的额外环境变量 |
minio_provision | bool | 是否执行 minio 资源置备任务?默认为 true |
minio_alias | string | minio 部署的客户端别名 |
minio_endpoint | string | minio 部署的客户端别名对应的端点 |
minio_buckets | bucket[] | 待创建的 minio 存储桶列表 |
minio_users | user[] | 待创建的 minio 用户列表 |
MINIO_REMOVE 参数组控制 MinIO 集群的移除行为,包括防误删保险、数据清理以及软件包卸载。
| 参数 | 类型 | 说明 |
|---|---|---|
minio_safeguard | bool | 防止意外删除?默认为 false |
minio_rm_data | bool | 移除时是否删除 minio 数据?默认为 true |
minio_rm_pkg | bool | 移除时是否卸载 minio 软件包?默认为 false |
FERRET 参数
FERRET 参数组用于 FerretDB 部署与配置,包括身份标识、底层 PostgreSQL 连接、监听端口以及 SSL 设置。
| 参数 | 类型 | 说明 |
|---|---|---|
mongo_seq | int | mongo 实例号,必选身份参数 |
mongo_cluster | string | mongo 集群名,必选身份参数 |
mongo_pgurl | pgurl | FerretDB 底层使用的 PGURL 连接串 |
mongo_ssl_enabled | bool | 是否启用 SSL?默认为 false |
mongo_listen | ip | 监听地址,默认留空则监听所有地址 |
mongo_port | port | 服务端口,默认使用 27017 |
mongo_ssl_port | port | TLS 监听端口,默认使用 27018 |
mongo_exporter_port | port | Exporter 端口,默认使用 9216 |
mongo_extra_vars | string | 额外环境变量,默认为空白字符串 |
DOCKER 参数
DOCKER 参数组用于 Docker 容器引擎的部署与配置,包括启用开关、数据目录、存储驱动、镜像加速以及监控。
| 参数 | 类型 | 说明 |
|---|---|---|
docker_enabled | bool | 在当前节点上启用 Docker?默认不启用 |
docker_data | path | Docker 数据目录,默认为 /data/docker |
docker_storage_driver | enum | Docker 存储驱动,默认为 overlay2 |
docker_cgroups_driver | enum | Docker CGroup 文件系统驱动:cgroupfs,systemd |
docker_registry_mirrors | string[] | Docker 仓库镜像列表 |
docker_exporter_port | port | Docker 监控指标导出端口,默认为 9323 |
docker_image | string[] | Docker 待拉取的镜像列表,默认为空列表 |
docker_image_cache | path | Docker 待导入的镜像压缩包路径,默认为 /tmp/docker/*.tgz |
6 - 剧本列表
模块导航
每个模块均包含若干预置剧本,以下表格列出了各模块及其包含的剧本数量与说明:
| 模块 | 数量 | 说明 |
|---|---|---|
INFRA | 5 | 基础设施模块剧本 |
NODE | 2 | 节点管理模块剧本 |
ETCD | 2 | ETCD 集群管理剧本 |
PGSQL | 7 | PostgreSQL 集群管理剧本 |
REDIS | 2 | Redis 集群管理剧本 |
MINIO | 2 | MinIO 对象存储管理剧本 |
FERRET | 1 | FerretDB 管理剧本 |
DOCKER | 2 | Docker 与应用管理剧本 |
剧本汇总
以下表格列出了 Pigsty 中所有可用的预置剧本:
| 剧本 | 模块 | 功能 |
|---|---|---|
deploy.yml | INFRA | 在所有节点上一次性完整部署所有组件 |
infra.yml | INFRA | 在 infra 节点上初始化 pigsty 基础设施 |
infra-rm.yml | INFRA | 从 infra 节点移除基础设施组件 |
cache.yml | INFRA | 从现有仓库创建离线安装包缓存 |
cert.yml | INFRA | 使用 Pigsty 自签名 CA 签发证书 |
node.yml | NODE | 纳管节点,调整节点到期望状态 |
node-rm.yml | NODE | 从 Pigsty 中移除纳管节点 |
etcd.yml | ETCD | 安装与配置 Etcd 集群 |
etcd-rm.yml | ETCD | 移除 Etcd 集群或成员 |
pgsql.yml | PGSQL | 初始化 PostgreSQL 集群或添加新的从库 |
pgsql-rm.yml | PGSQL | 移除 PostgreSQL 集群,或移除某个实例 |
pgsql-user.yml | PGSQL | 在现有的 PostgreSQL 集群中添加新的业务用户 |
pgsql-db.yml | PGSQL | 在现有的 PostgreSQL 集群中添加新的业务数据库 |
pgsql-monitor.yml | PGSQL | 将远程 PostgreSQL 实例纳入监控中 |
pgsql-migration.yml | PGSQL | 为现有的 PostgreSQL 集群生成迁移手册和脚本 |
pgsql-pitr.yml | PGSQL | 执行 PostgreSQL 时间点恢复 (PITR) |
minio.yml | MINIO | 安装 MinIO 集群 |
minio-rm.yml | MINIO | 移除 MinIO 集群 |
redis.yml | REDIS | 初始化 Redis 集群/节点/实例 |
redis-rm.yml | REDIS | 移除 Redis 集群/节点/实例 |
docker.yml | DOCKER | 安装 Docker Daemon 与 Docker Compose |
app.yml | DOCKER | 部署 Docker Compose 应用模板 |
mongo.yml | FERRET | 在节点上安装 FerretDB |
剧本使用注意事项
保护机制
多个模块提供了防误删保险,通过 *_safeguard 参数控制:
- PGSQL:
pg_safeguard参数用于防止误删 PostgreSQL 集群 - ETCD:
etcd_safeguard参数用于防止误删 Etcd 集群 - MINIO:
minio_safeguard参数用于防止误删 MinIO 集群
默认情况下,这些 safeguard 参数均未启用(未定义)。建议在生产环境中为已初始化的集群显式设置为 true。
当保护开关设置为 true 时,对应的 *-rm.yml 剧本会立即中止执行,防止误删。可以通过命令行参数强制覆盖:
./pgsql-rm.yml -l pg-test -e pg_safeguard=false
./etcd-rm.yml -e etcd_safeguard=false
./minio-rm.yml -l minio -e minio_safeguard=false
限制执行范围
执行剧本时建议使用 -l 参数限制命令执行的对象范围:
./pgsql.yml -l pg-meta # 限制在集群 pg-meta 上执行
./node.yml -l 10.10.10.10 # 限制在特定节点上执行
./redis.yml -l redis-test # 限制在 redis-test 集群上执行
幂等性
大部分剧本都是幂等的,可以重复执行。但需要注意:
infra.yml默认不会清除数据,可安全重复执行。所有 clean 参数(vmetrics_clean、vlogs_clean、vtraces_clean、grafana_clean、nginx_clean)默认均为false- 如需清除基础设施数据重建,需显式设置对应的 clean 参数为
true - 重复执行
*-rm.yml删除剧本需格外小心,确保在正确的目标上执行
任务标签
可以使用 -t 参数只执行特定的任务子集:
./pgsql.yml -l pg-test -t pg_service # 只刷新集群 pg-test 的服务
./node.yml -t haproxy # 只在节点上设置 haproxy
./etcd.yml -t etcd_launch # 只重启 etcd 服务
常用命令速查
INFRA 模块
./deploy.yml # 一次性完整部署 Pigsty
./infra.yml # 初始化基础设施
./infra-rm.yml # 移除基础设施
./cache.yml # 从现有仓库创建离线安装包
./cert.yml -e cn=<name> # 签发客户端证书
NODE 模块
./node.yml -l <cls|ip> # 添加节点
./node-rm.yml -l <cls|ip> # 移除节点
bin/node-add <cls|ip> # 添加节点 (包装脚本)
bin/node-rm <cls|ip> # 移除节点 (包装脚本)
ETCD 模块
./etcd.yml # 初始化 etcd 集群
./etcd-rm.yml # 移除 etcd 集群
bin/etcd-add <ip> # 添加 etcd 成员 (包装脚本)
bin/etcd-rm <ip> # 移除 etcd 成员 (包装脚本)
PGSQL 模块
./pgsql.yml -l <cls> # 初始化 PostgreSQL 集群
./pgsql-rm.yml -l <cls> # 移除 PostgreSQL 集群
./pgsql-user.yml -l <cls> -e username=<user> # 创建业务用户
./pgsql-db.yml -l <cls> -e dbname=<db> # 创建业务数据库
./pgsql-monitor.yml -e clsname=<cls> # 监控远程集群
./pgsql-migration.yml -e@files/migration/<cls>.yml # 生成迁移手册
./pgsql-pitr.yml -l <cls> -e '{"pg_pitr": {}}' # 执行 PITR 恢复
bin/pgsql-add <cls> # 初始化集群 (包装脚本)
bin/pgsql-rm <cls> # 移除集群 (包装脚本)
bin/pgsql-user <cls> <user> # 创建用户 (包装脚本)
bin/pgsql-db <cls> <db> # 创建数据库 (包装脚本)
bin/pgsql-svc <cls> # 刷新服务 (包装脚本)
bin/pgsql-hba <cls> # 重载 HBA (包装脚本)
bin/pgmon-add <cls> # 监控远程集群 (包装脚本)
REDIS 模块
./redis.yml -l <cls> # 初始化 Redis 集群
./redis-rm.yml -l <cls> # 移除 Redis 集群
MINIO 模块
./minio.yml -l <cls> # 初始化 MinIO 集群
./minio-rm.yml -l <cls> # 移除 MinIO 集群
FERRET 模块
./mongo.yml -l ferret # 安装 FerretDB
DOCKER 模块
./docker.yml -l <host> # 安装 Docker
./app.yml -e app=<name> # 部署 Docker Compose 应用
7 - 端口列表
以下为 Pigsty 中各模块组件使用的默认端口及其对应参数,您可以按需调整,或者作为内部防火墙精细配置的参考。
| 模块 | 组件 | 端口 | 参数 | 状态 |
|---|---|---|---|---|
NODE | node_exporter | 9100 | node_exporter_port | ✅ 默认启用 |
NODE | haproxy | 9101 | haproxy_exporter_port | ✅ 默认启用 |
NODE | vector | 9598 | vector_port | ✅ 默认启用 |
NODE | keepalived_exporter | 9650 | vip_exporter_port | ⚠️ 按需启用 |
NODE | chronyd | 123 | - | ✅ 默认启用 |
DOCKER | docker | 9323 | docker_exporter_port | ⚠️ 按需启用 |
INFRA | nginx | 80 | nginx_port | ✅ 默认启用 |
INFRA | nginx | 443 | nginx_ssl_port | ✅ 默认启用 |
INFRA | grafana | 3000 | grafana_port | ✅ 默认启用 |
INFRA | victoriaMetrics | 8428 | vmetrics_port | ✅ 默认启用 |
INFRA | victoriaLogs | 9428 | vlogs_port | ✅ 默认启用 |
INFRA | victoriaTraces | 10428 | vtraces_port | ✅ 默认启用 |
INFRA | vmalert | 8880 | vmalert_port | ✅ 默认启用 |
INFRA | alertmanager | 9059 | alertmanager_port | ✅ 默认启用 |
INFRA | blackbox_exporter | 9115 | blackbox_port | ✅ 默认启用 |
INFRA | dnsmasq | 53 | dns_port | ✅ 默认启用 |
ETCD | etcd | 2379 | etcd_port | ✅ 默认启用 |
ETCD | etcd | 2380 | etcd_peer_port | ✅ 默认启用 |
MINIO | minio | 9000 | minio_port | ✅ 默认启用 |
MINIO | minio | 9001 | minio_admin_port | ✅ 默认启用 |
REDIS | redis | 6379 | redis_port | ⚠️ 按需启用 |
REDIS | redis_exporter | 9121 | redis_exporter_port | ⚠️ 按需启用 |
FERRET | ferretdb | 27017 | mongo_port | ⚠️ 按需启用 |
FERRET | mongo_exporter | 9216 | mongo_exporter_port | ✅ 默认启用 |
PGSQL | postgres | 5432 | pg_port | ✅ 默认启用 |
PGSQL | pgbouncer | 6432 | pgbouncer_port | ✅ 默认启用 |
PGSQL | patroni | 8008 | patroni_port | ✅ 默认启用 |
PGSQL | pg_exporter | 9630 | pg_exporter_port | ✅ 默认启用 |
PGSQL | pgbouncer_exporter | 9631 | pgbouncer_exporter_port | ✅ 默认启用 |
PGSQL | pgbackrest_exporter | 9854 | pgbackrest_exporter_port | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-primary | 5433 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-replica | 5434 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-default | 5436 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-offline | 5438 | pg_default_services | ✅ 默认启用 |
PGSQL | {{ pg_cluster }}-<service> | 543x | pg_services | ⚠️ 按需启用 |
