这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

参考

详细的参考信息与列表:支持的操作系统,模块,参数,监控指标,数据库扩展,同类对比,术语表等。

1 - Linux 兼容性

Pigsty 兼容的 Linux 操作系统发行版大版本,以及芯片架构指令集

Pigsty 运行于 Linux 操作系统上,支持 amd64/x86_64arm64/aarch64 架构,支持 ELDebianUbuntu 三大主流 Linux 发行版。

Pigsty 不使用任何虚拟化容器化技术,直接运行于裸操作系统上。我们为三大主流 Linux 发行版最近两个大版本的两种架构提供支持。

概述

Pigsty 推荐使用的操作系统版本:RockyLinux 10.0、Ubuntu 24.04、Debian 13.1。

发行版架构系统代码PG18PG17PG16PG15PG14PG13
RHEL / Rocky / Alma 10x86_64el10.x86_64
RHEL / Rocky / Alma 10aarch64el10.aarch64
Ubuntu 24.04 (noble)x86_64u24.x86_64
Ubuntu 24.04 (noble)aarch64u24.aarch64
Debian 13 (trixie)x86_64d13.x86_64
Debian 13 (trixie)aarch64d13.aarch64

EL

Pigsty 支持 RHEL / Rocky / Alma / Anolis / CentOS 8、9、10 版本。

EL 发行版架构系统代码PG18PG17PG16PG15PG14PG13
RHEL10 / Rocky10 / Alma10x86_64el10.x86_64
RHEL10 / Rocky10 / Alma10aarch64el10.aarch64
RHEL9 / Rocky9 / Alma9x86_64el9.x86_64
RHEL9 / Rocky9 / Alma9aarch64el9.aarch64
RHEL8 / Rocky8 / Alma8x86_64el8.x86_64
RHEL8 / Rocky8 / Alma8aarch64el8.aarch64
RHEL7 / CentOS7x86_64el7.x86_64
RHEL7 / CentOS7aarch64-

Ubuntu

Pigsty 支持 Ubuntu 24.04 / 22.04:

Ubuntu 发行版架构系统代码PG18PG17PG16PG15PG14PG13
Ubuntu 24.04 (noble)x86_64u24.x86_64
Ubuntu 24.04 (noble)aarch64u24.aarch64
Ubuntu 22.04 (jammy)x86_64u22.x86_64
Ubuntu 22.04 (jammy)aarch64u22.aarch64
Ubuntu 20.04 (focal)x86_64u20.x86_64
Ubuntu 20.04 (focal)aarch64-

Debian

Pigsty 支持 Debian 12 / 13,推荐使用最新的 Debian 13.1

Debian 发行版架构系统代码PG18PG17PG16PG15PG14PG13
Debian 13 (trixie)x86_64d13.x86_64
Debian 13 (trixie)aarch64d13.aarch64
Debian 12 (bookworm)x86_64d12.x86_64
Debian 12 (bookworm)aarch64d12.aarch64
Debian 11 (bullseye)x86_64d11.x86_64
Debian 11 (bullseye)aarch64-

Vagrant

当您使用本地虚拟机部署 Pigsty 时,可以考虑使用以下 Vagrant 操作系统镜像,这也是 Pigsty 开发测试使用的镜像。

系统镜像
Rocky 8.10generic/rocky8
Rocky 9.6generic/rocky9
Debian 12.11generic/debian12
Debian 13generic/debian13
Ubuntu 22.04generic/ubuntu2204
Ubuntu 24.04.2bento/ubuntu-24.04

Terraform

当您使用云服务器部署 Pigsty 时,可以考虑在 Terraform 中使用以下操作系统基础镜像,以 阿里云 为例:

x86_64镜像
Rocky 8.10rockylinux_8_10_x64_20G_alibase_20240923.vhd
Rocky 9.6rockylinux_9_6_x64_20G_alibase_20250101.vhd
Rocky 10.0rockylinux_10_0_x64_20G_alibase_20251120.vhd
Ubuntu 22.04ubuntu_22_04_x64_20G_alibase_20240926.vhd
Ubuntu 24.04ubuntu_24_04_x64_20G_alibase_20240923.vhd
Debian 12.11debian_12_11_x64_20G_alibase_20241201.vhd
Debian 13.2debian_13_x64_20G_alibase_20250101.vhd
aarch64镜像
Rocky 8.10rockylinux_8_10_arm64_20G_alibase_20251120.vhd
Rocky 9.6rockylinux_9_6_arm64_20G_alibase_20251120.vhd
Rocky 10.0rockylinux_10_0_arm64_20G_alibase_20251120.vhd
Ubuntu 22.04ubuntu_22_04_arm64_20G_alibase_20251126.vhd
Ubuntu 24.04ubuntu_24_04_arm64_20G_alibase_20251126.vhd
Debian 12.11debian_12_11_arm64_20G_alibase_20250825.vhd
Debian 13.2debian_13_2_arm64_20G_alibase_20251121.vhd

2 - 模块列表

本文列出了 Pigsty 中可用的功能模块,以及后续的功能模块规划。

核心模块

Pigsty 提供了四个 基础 功能模块,对于提供完整高可用的 PostgreSQL 服务必不可少:

  • PGSQL:带有高可用,时间点恢复,IaC,SOP,监控系统,以及 440 个扩展插件的自治的 PostgreSQL 集群。
  • INFRA:本地软件仓库、Prometheus、Grafana、Loki、AlertManager、PushGateway、Blackbox Exporter…
  • NODE:调整节点到所需状态、名称、时区、NTP、ssh、sudo、haproxy、docker、vector、keepalived
  • ETCD:分布式键值存储,用作高可用 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 提供了四个 扩展 功能模块,它对于核心功能来说并非必须,但可以用于增强 PostgreSQL 的能力:

  • MINIO:S3 兼容的简单对象存储服务器,可作为可选的 PostgreSQL 数据库备份仓库,带有生产部署支持与监控。
  • REDIS:Redis 服务器,高性能数据结构服务器,支持独立主从、哨兵、集群模式生产部署,并带有完善的监控支持。
  • MONGO:FerretDB 原生部署支持 —— 它为 PostgreSQL 添加了 MongoDB 线缆协议级别的 API 兼容支持!
  • DOCKER:Docker Daemon 服务,允许用户一键拉起容器化的无状态软件工具模板,为 Pigsty 加装各种功能!

外围模块

Pigsty 同时支持那些与 PostgreSQL 内核带有紧密联系的 外围 模块(扩展,分支,衍生,包装):

  • DUCKDB:强大的嵌入式OLAP数据库,Pigsty提供二进制/动态库及相关PG扩展:pg_duckdbpg_lakehouseduckdb_fdw
  • SUPABASE: 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 支持的 PostgreSQL 扩展插件,以及这些插件在不同系统下的支持情况。

Pigsty 中总共有 440 个可用扩展,详情请参考 PGEXT.CLOUD 专门站,这是由 PIGSTY 维护的扩展仓库。

分类AllPGDGPIGSTYCONTRIBMISSPG18PG17PG16PG15PG14PG13
ALL440149268710408429428430415386
EL434143268716397421422424412382
Debian4261052507114394416414416404371

pigsty-ecosystem.jpg

4 - 文件结构

Pigsty 的文件系统结构是如何设计与组织的,以及各个模块使用的目录结构。

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.ymlinfra.ymlca 角色负责生成的。

# 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 配置参数总览与导航

Pigsty 提供了约 380+ 个配置参数,分布在 8 个默认模块中,用于精细控制系统的各个方面。

总览

本页面提供 Pigsty 所有配置参数的导航与概览,点击模块名称可以跳转到对应的详细参数文档。

模块参数组参数总数说明
PGSQL9123PostgreSQL 数据库集群的核心配置
INFRA1082基础设施组件:软件源、Nginx、DNS、监控、Grafana 等
NODE1183主机节点调优:身份、DNS、包、调优、安全、管理员、时间、VIP等
ETCD213分布式配置存储与服务发现
REDIS121Redis 缓存与数据结构服务器
MINIO221S3 兼容对象存储服务
FERRET19MongoDB 兼容数据库 FerretDB
DOCKER18Docker 容器引擎

PGSQL

PGSQL 模块提供了 9 组共 123 个 PostgreSQL 相关配置参数。

参数组参数数说明
PG_ID11PostgreSQL 集群与实例的身份标识参数
PG_BUSINESS12业务用户、数据库、服务与访问控制规则定义
PG_INSTALL10PostgreSQL 安装相关:版本、路径、软件包
PG_BOOTSTRAP38PostgreSQL 集群初始化引导:Patroni 高可用
PG_PROVISION8PostgreSQL 集群模板置备:角色、权限、扩展
PG_BACKUP6pgBackRest 备份与恢复配置
PG_ACCESS17服务暴露、连接池、VIP、DNS 等客户端访问配置
PG_MONITOR17PostgreSQL 监控 Exporter 配置
PG_REMOVE4PostgreSQL 实例清理与卸载配置

INFRA

INFRA 模块提供了 10 组共 82 个 基础设施相关配置参数。

参数组参数数说明
META5Pigsty 元信息:版本、管理IP、区域、语言、代理
CA3自签名 CA 证书管理
INFRA_ID3基础设施节点身份标识与服务门户
REPO10本地软件仓库配置
INFRA_PACKAGE2基础设施节点软件包安装
NGINX14Nginx Web服务器与反向代理配置
DNS3DNSMasq 域名解析服务配置
VICTORIA19VictoriaMetrics/Logs/Traces 可观测性套件
PROMETHEUS7Alertmanager 与 Blackbox Exporter
GRAFANA8Grafana 可视化平台配置

NODE

NODE 模块提供了 11 组共 82 个 主机节点相关配置参数。

参数组参数数说明
NODE_ID5NODE_ID 相关参数
NODE_DNS6NODE_DNS 相关参数
NODE_PACKAGE4NODE_PACKAGE 相关参数
NODE_TUNE10NODE_TUNE 相关参数
NODE_SEC4NODE_SEC 安全相关参数
NODE_ADMIN9NODE_ADMIN 相关参数
NODE_TIME5NODE_TIME 相关参数
NODE_VIP8NODE_VIP 相关参数
HAPROXY10HAPROXY 相关参数
NODE_EXPORTER3NODE_EXPORTER 相关参数
VECTOR6VECTOR 日志收集相关参数

ETCD

ETCD 模块提供了 2 组共 13 个 分布式配置存储相关参数。

参数组参数数说明
ETCD10etcd 集群的部署与配置
ETCD_REMOVE3etcd 集群的移除行为:防误删保险、数据清理等

REDIS

REDIS 模块提供了 21 个 Redis 相关配置参数。

参数组参数数说明
REDIS21Redis 集群的部署与配置

MINIO

MINIO 模块提供了 2 组共 21 个 MinIO 对象存储相关参数。

参数组参数数参数说明
MINIO18MinIO 集群的部署与配置
MINIO_REMOVE3MinIO 集群的移除行为:防误删保险、数据清理等

FERRET

FERRET 模块提供了 9 个 FerretDB 相关配置参数。

参数组参数数说明
FERRET9FerretDB 部署与配置

DOCKER

DOCKER 模块提供了 8 个 Docker 容器引擎相关配置参数。

参数组参数数说明
DOCKER8Docker 容器引擎配置

参数总览

以下是所有模块的参数汇总表格,按模块分类列出。

PGSQL 参数

PG_ID 参数组用于定义 PostgreSQL 集群与实例的身份标识,包括集群名称、实例序号、角色、分片等核心身份参数。

参数类型说明
pg_modeenumpgsql 集群模式: pgsql,citus,mssql,mysql,polar,ivory,oracle,gpsql
pg_clusterstringpgsql 集群名称, 必选身份参数
pg_seqintpgsql 实例号, 必选身份参数
pg_roleenumpgsql 实例角色, 必选身份参数, 可为 primary,replica,offline
pg_instancesdict在一个节点上定义多个 pg 实例,使用 {port:ins_vars} 格式
pg_upstreamip级联从库或备份集群或的复制上游节点IP地址
pg_shardstringpgsql 分片名,对 citus 与 gpsql 等水平分片集群为必选身份参数
pg_groupintpgsql 分片号,正整数,对 citus 与 gpsql 等水平分片集群为必选身份参数
gp_roleenum这个集群的 greenplum 角色,可以是 master 或 segment
pg_exportersdict在该节点上设置额外的 pg_exporters 用于监控远程 postgres 实例
pg_offline_querybool设置为 true 将此只读实例标记为特殊的离线从库,承载 Offline 服务,允许离线查询

PG_BUSINESS 参数组用于定义业务用户、数据库、服务与访问控制规则,以及默认的系统用户凭据。

参数类型说明
pg_usersuser[]postgres 业务用户
pg_databasesdatabase[]postgres 业务数据库
pg_servicesservice[]postgres 业务服务
pg_hba_ruleshba[]postgres 的业务 hba 规则
pgb_hba_ruleshba[]pgbouncer 的业务 hba 规则
pg_replication_usernameusernamepostgres 复制用户名,默认为 replicator
pg_replication_passwordpasswordpostgres 复制密码,默认为 DBUser.Replicator
pg_admin_usernameusernamepostgres 管理员用户名,默认为 dbuser_dba
pg_admin_passwordpasswordpostgres 管理员明文密码,默认为 DBUser.DBA
pg_monitor_usernameusernamepostgres 监控用户名,默认为 dbuser_monitor
pg_monitor_passwordpasswordpostgres 监控密码,默认为 DBUser.Monitor
pg_dbsu_passwordpassworddbsu 密码,默认为空字符串意味着不设置 dbsu 密码,最好不要设置。

PG_INSTALL 参数组用于配置 PostgreSQL 安装相关选项,包括版本、路径、软件包与扩展插件。

参数类型说明
pg_dbsuusername操作系统 dbsu 名称,默认为 postgres,最好不要更改
pg_dbsu_uidint操作系统 dbsu uid 和 gid,对于默认的 postgres 用户和组为 26
pg_dbsu_sudoenumdbsu sudo 权限, none,limit,all,nopass,默认为 limit
pg_dbsu_homepathpostgresql 主目录,默认为 /var/lib/pgsql
pg_dbsu_ssh_exchangebool在 pgsql 集群之间交换 postgres dbsu ssh 密钥
pg_versionenum要安装的 postgres 主版本,默认为 18
pg_bin_dirpathpostgres 二进制目录,默认为 /usr/pgsql/bin
pg_log_dirpathpostgres 日志目录,默认为 /pg/log/postgres
pg_packagesstring[]要安装的 pg 包,${pg_version} 将被替换为实际主版本号
pg_extensionsstring[]要安装的 pg 扩展,${pg_version} 将被替换为实际主版本号

PG_BOOTSTRAP 参数组用于配置 PostgreSQL 集群初始化引导,包括 Patroni 高可用、数据目录、存储、连接、编码等核心设置。

参数类型说明
pg_datapathpostgres 数据目录,默认为 /pg/data
pg_fs_mainpathpostgres 主数据的挂载点/路径,默认为 /data/postgres
pg_fs_backuppathpg 备份数据的挂载点/路径,默认为 /data/backups
pg_storage_typeenumpg 主数据的存储类型,SSD、HDD,默认为 SSD,影响自动优化的参数。
pg_dummy_filesizesize/pg/dummy 的大小,默认保留 64MB 磁盘空间用于紧急抢修
pg_listenip(s)postgres/pgbouncer 的监听地址,用逗号分隔的IP列表,默认为 0.0.0.0
pg_portportpostgres 监听端口,默认为 5432
pg_localhostpathpostgres 的 Unix 套接字目录,用于本地连接
pg_namespacepath在 etcd 中的顶级键命名空间,被 patroni & vip 用于高可用管理
patroni_enabledbool如果禁用,初始化期间不会创建 postgres 集群
patroni_modeenumpatroni 工作模式:default,pause,remove
patroni_portportpatroni 监听端口,默认为 8008
patroni_log_dirpathpatroni 日志目录,默认为 /pg/log/patroni
patroni_ssl_enabledbool使用 SSL 保护 patroni RestAPI 通信?
patroni_watchdog_modeenumpatroni 看门狗模式:automatic,required,off,默认为 off
patroni_usernameusernamepatroni restapi 用户名,默认为 postgres
patroni_passwordpasswordpatroni restapi 密码,默认为 Patroni.API
pg_primary_dbstring指定集群中首要使用的数据库名,Citus等模式会用到,默认为 postgres
pg_parametersdict覆盖 postgresql.auto.conf 中的 PostgreSQL 参数
pg_filespath[]拷贝至PGDATA目录中的额外文件列表 (例如许可证文件)
pg_confenum配置模板:oltp,olap,crit,tiny,默认为 oltp.yml
pg_max_connintpostgres 最大连接数,auto 将使用推荐值
pg_shared_buffer_ratiofloatpostgres 共享缓冲区内存比率,默认为 0.25,范围 0.1~0.4
pg_rtoint恢复时间目标(秒),默认为 30s
pg_rpoint恢复点目标(字节),默认为 1MiB
pg_libsstring预加载的库,默认为 pg_stat_statements,auto_explain
pg_delayinterval备份集群主库的WAL重放应用延迟,用于制备延迟从库
pg_checksumbool为 postgres 集群启用数据校验和?
pg_pwd_encenum密码加密算法:固定为 scram-sha-256
pg_encodingenum数据库集群编码,默认为 UTF8
pg_localeenum数据库集群本地化设置,默认为 C
pg_lc_collateenum数据库集群排序,默认为 C
pg_lc_ctypeenum数据库字符类型,默认为 C
pg_io_methodenumPostgreSQL IO 方法:auto, sync, worker, io_uring
pg_etcd_passwordpassword此 PostgreSQL 集群在 etcd 中使用的密码,默认使用集群名
pgsodium_keystringpgsodium 加密主密钥,64 位十六进制数字,默认使用 sha256(pg_cluster)
pgsodium_getkey_scriptpathpgsodium 获取密钥脚本路径,默认使用模板中的 pgsodium_getkey

PG_PROVISION 参数组用于配置 PostgreSQL 集群模板置备,包括默认角色、权限、模式、扩展与 HBA 规则。

参数类型说明
pg_provisionbool在引导后置备 postgres 集群内部的业务对象?
pg_initstring为集群模板提供初始化脚本,默认为 pg-init
pg_default_rolesrole[]postgres 集群中的默认预定义角色和系统用户
pg_default_privilegesstring[]由管理员用户创建数据库内对象时的默认权限
pg_default_schemasstring[]要创建的默认模式列表
pg_default_extensionsextension[]要创建的默认扩展列表
pg_reloadbool更改HBA后,是否立即重载 postgres 配置
pg_default_hba_ruleshba[]postgres 基于主机的认证规则,全局PG默认HBA
pgb_default_hba_ruleshba[]pgbouncer 默认的基于主机的认证规则,全局PGB默认HBA

PG_BACKUP 参数组用于配置 pgBackRest 备份与恢复,包括仓库类型、路径、保留策略等。

参数类型说明
pgbackrest_enabledbool在 pgsql 主机上启用 pgbackrest?
pgbackrest_cleanbool在初始化时删除以前的 pg 备份数据?
pgbackrest_log_dirpathpgbackrest 日志目录,默认为 /pg/log/pgbackrest
pgbackrest_methodenumpgbackrest 使用的仓库:local,minio,等…
pgbackrest_init_backupboolpgbackrest 初始化完成后是否立即执行全量备份?默认为 true
pgbackrest_repodictpgbackrest 仓库定义

PG_ACCESS 参数组用于配置服务暴露、连接池、VIP、DNS 等客户端访问相关选项。

参数类型说明
pgbouncer_enabledbool如果禁用,则不会配置 pgbouncer 连接池
pgbouncer_portportpgbouncer 监听端口,默认为 6432
pgbouncer_log_dirpathpgbouncer 日志目录,默认为 /pg/log/pgbouncer
pgbouncer_auth_querybool使用 AuthQuery 来从 postgres 获取未列出的业务用户?
pgbouncer_poolmodeenum池化模式:transaction,session,statement,默认为 transaction
pgbouncer_sslmodeenumpgbouncer 客户端 SSL 模式,默认为禁用
pgbouncer_ignore_paramstring[]pgbouncer 忽略的启动参数列表
pg_weightint在服务中的相对负载均衡权重,默认为 100,范围 0-255
pg_service_providerstring专用的 haproxy 节点组名称,或默认空字符,使用本地节点上的 haproxy
pg_default_service_destenum如果 svc.dest=‘default’,默认服务指向哪里?postgres 或 pgbouncer
pg_default_servicesservice[]postgres 默认服务定义列表,全局共用。
pg_vip_enabledbool是否为 pgsql 主节点启用 L2 VIP?默认不启用
pg_vip_addresscidr4vip 地址的格式为 <ipv4>/<mask>,启用 vip 时为必选参数
pg_vip_interfacestring监听的 vip 网络接口,默认为 eth0
pg_dns_suffixstringpgsql dns 后缀,默认为空
pg_dns_targetenumPG DNS 解析到哪里?auto、primary、vip、none 或者特定的 IP 地址

PG_MONITOR 参数组用于配置 PostgreSQL 监控 Exporter,包括 pg_exporter、pgbouncer_exporter 和 pgbackrest_exporter。

参数类型说明
pg_exporter_enabledbool在 pgsql 主机上启用 pg_exporter 吗?
pg_exporter_configstringpg_exporter 配置文件/模板名称
pg_exporter_cache_ttlsstringpg_exporter 收集器阶梯TTL配置,默认为 ‘1,10,60,300’
pg_exporter_portportpg_exporter 监听端口,默认为 9630
pg_exporter_paramsstringpg_exporter dsn 中传入的额外 URL 参数
pg_exporter_urlpgurl如果指定,则覆盖自动生成的 postgres DSN 连接串
pg_exporter_auto_discoverybool监控是否启用自动数据库发现?默认启用
pg_exporter_exclude_databasestring启用自动发现时,排除在外的数据库名称列表,用逗号分隔
pg_exporter_include_databasestring启用自动发现时,只监控这个列表中的数据库,名称用逗号分隔
pg_exporter_connect_timeoutintpg_exporter 连接超时,单位毫秒,默认为 200
pg_exporter_optionsargpg_exporter 的额外命令行参数选项
pgbouncer_exporter_enabledbool在 pgsql 主机上启用 pgbouncer_exporter 吗?
pgbouncer_exporter_portportpgbouncer_exporter 监听端口,默认为 9631
pgbouncer_exporter_urlpgurl如果指定,则覆盖自动生成的 pgbouncer dsn 连接串
pgbouncer_exporter_optionsargpgbouncer_exporter 的额外命令行参数选项
pgbackrest_exporter_enabledbool在 pgsql 主机上启用 pgbackrest_exporter 吗?
pgbackrest_exporter_portportpgbackrest_exporter 监听端口,默认为 9854
pgbackrest_exporter_optionsargpgbackrest_exporter 的额外命令行参数选项

PG_REMOVE 参数组用于配置 PostgreSQL 实例清理与卸载行为,包括数据目录、备份、软件包的删除控制。

参数类型说明
pg_rm_databool删除 pgsql 实例时是否清理 postgres 数据目录?
pg_rm_backupbool删除主库时是否一并清理 pgbackrest 备份?
pg_rm_pkgbool删除 pgsql 实例时是否卸载相关软件包?
pg_safeguardbool防误删保险,阻止误执行 pgsql 清理操作?默认为 false

INFRA 参数

META 参数组用于定义 Pigsty 的元信息,包括版本号、管理节点 IP、软件源区域、默认语言以及代理设置。

参数类型说明
versionstringpigsty 版本字符串
admin_ipip管理节点 IP 地址
regionenum上游镜像区域:default,china,europe
languageenum默认语言,en 或 zh
proxy_envdict下载包时使用的全局代理环境变量

CA 参数组用于配置 Pigsty 自签名 CA 证书管理,包括是否创建 CA、CA 名称以及证书有效期。

参数类型说明
ca_createbool不存在时是否创建 CA?默认为 true
ca_cnstringCA CN名称,固定为 pigsty-ca
cert_validityinterval证书有效期,默认为 20 年

INFRA_ID 参数组用于定义基础设施节点的身份标识,包括节点序号、服务门户配置以及数据目录。

参数类型说明
infra_seqint基础设施节点序号,必选身份参数
infra_portaldict通过 Nginx 门户暴露的基础设施服务列表
infra_datapath基础设施数据目录,默认为 /data/infra

REPO 参数组用于配置本地软件仓库,包括仓库启用开关、目录路径、上游源定义以及要下载的软件包列表。

参数类型说明
repo_enabledbool在此基础设施节点上创建软件仓库?
repo_homepath软件仓库主目录,默认为/www
repo_namestring软件仓库名称,默认为 pigsty
repo_endpointurl仓库的访问点:域名或 ip:port 格式
repo_removebool构建本地仓库时是否移除现有上游仓库源定义文件?
repo_modulesstring启用的上游仓库模块列表,用逗号分隔
repo_upstreamupstream[]上游仓库源定义:从哪里下载上游包?
repo_packagesstring[]从上游仓库下载哪些软件包?
repo_extra_packagesstring[]从上游仓库下载哪些额外的软件包?
repo_url_packagesstring[]使用URL下载的额外软件包列表

INFRA_PACKAGE 参数组用于定义在基础设施节点上安装的软件包,包括 RPM/DEB 包和 PIP 包。

参数类型说明
infra_packagesstring[]在基础设施节点上要安装的软件包
infra_packages_pipstring在基础设施节点上使用 pip 安装的包

NGINX 参数组用于配置 Nginx Web 服务器与反向代理,包括启用开关、端口、SSL 模式、证书以及基础认证。

参数类型说明
nginx_enabledbool在此基础设施节点上启用 nginx?
nginx_cleanbool初始化时清理现有 nginx 配置?
nginx_exporter_enabledbool在此基础设施节点上启用 nginx_exporter?
nginx_exporter_portportnginx_exporter 监听端口,默认为 9113
nginx_sslmodeenumnginx SSL模式?disable,enable,enforce
nginx_cert_validitydurationnginx 自签名证书有效期,默认为 397d
nginx_homepathnginx 内容目录,默认为 /www,软链接到 nginx_data
nginx_datapathnginx 实际数据目录,默认为 /data/nginx
nginx_usersdictnginx 基础认证用户:用户名和密码字典
nginx_portportnginx 监听端口,默认为 80
nginx_ssl_portportnginx SSL监听端口,默认为 443
certbot_signbool是否使用 certbot 签署证书?
certbot_emailstringcertbot 通知邮箱地址
certbot_optionsstringcertbot 额外的命令行参数

DNS 参数组用于配置 DNSMasq 域名解析服务,包括启用开关、监听端口以及动态 DNS 记录。

参数类型说明
dns_enabledbool在此基础设施节点上设置dnsmasq?
dns_portportDNS 服务器监听端口,默认为 53
dns_recordsstring[]由 dnsmasq 解析的动态 DNS 记录

VICTORIA 参数组用于配置 VictoriaMetrics/Logs/Traces 可观测性套件,包括启用开关、端口、数据保留策略等。

参数类型说明
vmetrics_enabledbool在此基础设施节点上启用 VictoriaMetrics?
vmetrics_cleanbool初始化时清理 VictoriaMetrics 数据?
vmetrics_portportVictoriaMetrics 监听端口,默认为 8428
vmetrics_scrape_intervalinterval全局抓取间隔,默认为 10s
vmetrics_scrape_timeoutinterval全局抓取超时,默认为 8s
vmetrics_optionsargVictoriaMetrics 额外命令行参数
vlogs_enabledbool在此基础设施节点上启用 VictoriaLogs?
vlogs_cleanbool初始化时清理 VictoriaLogs 数据?
vlogs_portportVictoriaLogs 监听端口,默认为 9428
vlogs_optionsargVictoriaLogs 额外命令行参数
vtraces_enabledbool在此基础设施节点上启用 VictoriaTraces?
vtraces_cleanbool初始化时清理 VictoriaTraces 数据?
vtraces_portportVictoriaTraces 监听端口,默认为 10428
vtraces_optionsargVictoriaTraces 额外命令行参数
vmalert_enabledbool在此基础设施节点上启用 VMAlert?
vmalert_portportVMAlert 监听端口,默认为 8880
vmalert_optionsargVMAlert 额外命令行参数

PROMETHEUS 参数组用于配置 Alertmanager 与 Blackbox Exporter,提供告警管理和网络探测功能。

参数类型说明
blackbox_enabledbool在此基础设施节点上设置 blackbox_exporter?
blackbox_portportblackbox_exporter 监听端口,默认为 9115
blackbox_optionsargblackbox_exporter 额外的命令行参数选项
alertmanager_enabledbool在此基础设施节点上设置 alertmanager?
alertmanager_portportAlertManager 监听端口,默认为 9059
alertmanager_optionsargalertmanager 额外的命令行参数选项
exporter_metrics_pathpathexporter 指标路径,默认为 /metrics

GRAFANA 参数组用于配置 Grafana 可视化平台,包括启用开关、端口、管理员凭据以及数据源配置。

参数类型说明
grafana_enabledbool在此基础设施节点上启用 Grafana?
grafana_portportGrafana 监听端口,默认为 3000
grafana_cleanbool初始化Grafana期间清除数据?
grafana_admin_usernameusernameGrafana 管理员用户名,默认为 admin
grafana_admin_passwordpasswordGrafana 管理员密码,默认为 pigsty
grafana_auth_proxybool启用 Grafana 身份代理?
grafana_pgurlurl外部 PostgreSQL 数据库 URL(用于Grafana持久化)
grafana_view_passwordpasswordGrafana 元数据库 PG 数据源密码

NODE 参数

NODE_ID 参数组用于定义节点的身份标识参数,包括节点名称、集群名称,以及是否从 PostgreSQL 借用身份。

参数类型说明
nodenamestringnode 实例标识,如缺失则使用主机名,可选
node_clusterstringnode 集群标识,如缺失则使用默认值’nodes’,可选
nodename_overwritebool用 nodename 覆盖节点的主机名吗?
nodename_exchangebool在剧本主机之间交换 nodename 吗?
node_id_from_pgbool如果可行,是否借用 postgres 身份作为节点身份?

NODE_DNS 参数组用于配置节点的 DNS 解析,包括静态 hosts 记录与动态 DNS 服务器。

参数类型说明
node_write_etc_hostsbool是否修改目标节点上的 /etc/hosts
node_default_etc_hostsstring[]/etc/hosts 中的静态 DNS 记录
node_etc_hostsstring[]/etc/hosts 中的额外静态 DNS 记录
node_dns_methodenum如何处理现有DNS服务器:add,none,overwrite
node_dns_serversstring[]/etc/resolv.conf 中的动态域名服务器列表
node_dns_optionsstring[]/etc/resolv.conf 中的DNS解析选项

NODE_PACKAGE 参数组用于配置节点的软件源与软件包安装。

参数类型说明
node_repo_modulesenum在节点上启用哪些软件源模块?默认为 local
node_repo_removebool配置节点软件仓库时,删除节点上现有的仓库吗?
node_packagesstring[]要在当前节点上安装的软件包列表
node_default_packagesstring[]默认在所有节点上安装的软件包列表

NODE_TUNE 参数组用于配置节点的内核参数、特性开关与性能调优模板。

参数类型说明
node_disable_numabool禁用节点 numa,禁用需要重启
node_disable_swapbool禁用节点 Swap,谨慎使用
node_static_networkbool重启后保留 DNS 解析器设置,即静态网络,默认启用
node_disk_prefetchbool在 HDD 上配置磁盘预取以提高性能
node_kernel_modulesstring[]在此节点上启用的内核模块列表
node_hugepage_countint主机节点分配的 2MB 大页数量,优先级比比例更高
node_hugepage_ratiofloat主机节点分配的内存大页占总内存比例,0 默认禁用
node_overcommit_ratiofloat节点内存允许的 OverCommit 超额比率 (50-100),0 默认禁用
node_tuneenum节点调优配置文件:无,oltp,olap,crit,tiny
node_sysctl_paramsdict额外的 sysctl 配置参数,k:v 格式

NODE_SEC 参数组用于配置节点的安全相关选项,包括 SELinux、防火墙等。

参数类型说明
node_selinux_modeenumSELinux 模式:disabled, permissive, enforcing
node_firewall_modeenum防火墙模式:off, none, zone
node_firewall_intranetcidr[]内网 CIDR 列表,用于配置防火墙规则
node_firewall_public_portport[]公网开放端口列表,默认为 [22, 80, 443, 5432]

NODE_ADMIN 参数组用于配置节点的管理员用户、数据目录与命令别名。

参数类型说明
node_datapath节点主数据目录,默认为 /data
node_admin_enabledbool在目标节点上创建管理员用户吗?
node_admin_uidint节点管理员用户的 uid 和 gid
node_admin_usernameusername节点管理员用户的名称,默认为 dba
node_admin_sudoenum管理员用户的 sudo 权限:limited, nopass, all, none
node_admin_ssh_exchangebool是否在节点集群之间交换管理员 ssh 密钥
node_admin_pk_currentbool将当前用户的 ssh 公钥添加到管理员的 authorized_keys 中吗?
node_admin_pk_liststring[]要添加到管理员用户的 ssh 公钥
node_aliasesdict配置主机上的 Shell Alias 命令,KV字典

NODE_TIME 参数组用于配置节点的时区、NTP 时间同步与定时任务。

参数类型说明
node_timezonestring设置主机节点时区,空字符串跳过
node_ntp_enabledbool启用 chronyd 时间同步服务吗?
node_ntp_serversstring[]/etc/chrony.conf 中的 ntp 服务器列表
node_crontab_overwritebool写入 /etc/crontab 时,追加写入还是全部覆盖?
node_crontabstring[]在 /etc/crontab 中的 crontab 条目

NODE_VIP 参数组用于配置节点集群的 L2 VIP,由 keepalived 实现。

参数类型说明
vip_enabledbool在此节点集群上启用 L2 vip 吗?
vip_addressip节点 vip 地址的 ipv4 格式,启用 vip 时为必要参数
vip_vridint所需的整数,1-254,在同一 VLAN 中应唯一
vip_roleenum可选,master/backup,默认为 backup
vip_preemptbool可选,true/false,默认为 false,启用 vip 抢占
vip_interfacestring节点 vip 网络接口监听,默认为 eth0
vip_dns_suffixstring节点 vip DNS 名称后缀,默认为空字符串
vip_auth_passpasswordVRRP 认证密码,空则使用 <cls>-<vrid> 作为默认值
vip_exporter_portportkeepalived exporter 监听端口,默认为 9650

HAPROXY 参数组用于配置节点上的 HAProxy 负载均衡器与服务暴露。

参数类型说明
haproxy_enabledbool在此节点上启用 haproxy 吗?
haproxy_cleanbool清除所有现有的 haproxy 配置吗?
haproxy_reloadbool配置后重新加载 haproxy 吗?
haproxy_auth_enabledbool启用 haproxy 管理页面的身份验证?
haproxy_admin_usernameusernamehaproxy 管理用户名,默认为 admin
haproxy_admin_passwordpasswordhaproxy 管理密码,默认为 pigsty
haproxy_exporter_portporthaproxy exporter 的端口,默认为 9101
haproxy_client_timeoutintervalhaproxy 客户端连接超时,默认为 24h
haproxy_server_timeoutintervalhaproxy 服务器端连接超时,默认为 24h
haproxy_servicesservice[]要在节点上对外暴露的 haproxy 服务列表

NODE_EXPORTER 参数组用于配置节点监控 Exporter。

参数类型说明
node_exporter_enabledbool在此节点上配置 node_exporter 吗?
node_exporter_portportnode exporter 监听端口,默认为 9100
node_exporter_optionsargnode_exporter 的额外服务器选项

VECTOR 参数组用于配置 Vector 日志收集器。

参数类型说明
vector_enabledbool启用 vector 日志收集器吗?
vector_cleanbool初始化期间清除 vector 数据目录吗?
vector_datapathvector 数据目录,默认为 /data/vector
vector_portportvector 指标监听端口,默认为 9598
vector_read_fromenumvector 从头还是从尾开始读取日志
vector_log_endpointstring[]日志发送目标端点,默认发送至 infra 组

ETCD 参数

ETCD 参数组用于 etcd 集群的部署与配置,包括实例标识、集群名称、数据目录、端口以及认证密码。

参数类型说明
etcd_seqintetcd 实例标识符,必填
etcd_clusterstringetcd 集群名,默认固定为 etcd
etcd_learnerbool是否以 learner 模式初始化 etcd 实例?
etcd_datapathetcd 数据目录,默认为 /data/etcd
etcd_portportetcd 客户端端口,默认为 2379
etcd_peer_portportetcd 同伴端口,默认为 2380
etcd_initenumetcd 初始集群状态,新建或已存在
etcd_election_timeoutintetcd 选举超时,默认为 1000ms
etcd_heartbeat_intervalintetcd 心跳间隔,默认为 100ms
etcd_root_passwordpasswordetcd root 用户密码,用于 RBAC 认证

ETCD_REMOVE 参数组控制 etcd 集群的移除行为,包括防误删保险、数据清理以及软件包卸载。

参数类型说明
etcd_safeguardbooletcd 防误删保险,阻止清除正在运行的 etcd 实例?
etcd_rm_databool移除时是否删除 etcd 数据?默认为 true
etcd_rm_pkgbool移除时是否卸载 etcd 软件包?默认为 false

REDIS 参数

REDIS 参数组用于 Redis 集群的部署与配置,包括身份标识、实例定义、工作模式、内存配置、持久化以及监控。

参数类型说明
redis_clusterstringRedis数据库集群名称,必选身份参数
redis_instancesdictRedis节点上的实例定义
redis_nodeintRedis节点编号,正整数,集群内唯一,必选身份参数
redis_fs_mainpathRedis主数据目录,默认为 /data
redis_exporter_enabledboolRedis Exporter 是否启用?
redis_exporter_portportRedis Exporter监听端口
redis_exporter_optionsstringRedis Exporter命令参数
redis_safeguardbool禁止抹除现存的Redis
redis_cleanbool初始化Redis是否抹除现存实例
redis_rmdatabool移除Redis实例时是否一并移除数据?
redis_modeenumRedis集群模式:sentinel,cluster,standalone
redis_confstringRedis配置文件模板,sentinel 除外
redis_bind_addressipRedis监听地址,默认留空则会绑定主机IP
redis_max_memorysizeRedis可用的最大内存
redis_mem_policyenumRedis内存逐出策略
redis_passwordpasswordRedis密码,默认留空则禁用密码
redis_rdb_savestring[]Redis RDB 保存指令,字符串列表,空数组则禁用RDB
redis_aof_enabledboolRedis AOF 是否启用?
redis_rename_commandsdictRedis危险命令重命名列表
redis_cluster_replicasintRedis原生集群中每个主库配几个从库?
redis_sentinel_monitormaster[]Redis哨兵监控的主库列表,只在哨兵集群上使用

MINIO 参数

MINIO 参数组用于 MinIO 集群的部署与配置,包括身份标识、存储路径、端口、认证凭据以及存储桶和用户的置备。

参数类型说明
minio_seqintminio 实例标识符,必填
minio_clusterstringminio 集群名称,默认为 minio
minio_userusernameminio 操作系统用户,默认为 minio
minio_httpsbool是否为 MinIO 启用 HTTPS?默认为 true
minio_nodestringminio 节点名模式
minio_datapathminio 数据目录,使用 {x...y} 指定多个磁盘
minio_volumesstringminio 核心参数,指定成员节点与磁盘,默认不指定
minio_domainstringminio 外部域名,默认为 sss.pigsty
minio_portportminio 服务端口,默认为 9000
minio_admin_portportminio 控制台端口,默认为 9001
minio_access_keyusername根访问密钥,默认为 minioadmin
minio_secret_keypassword根密钥,默认为 S3User.MinIO
minio_extra_varsstringminio 服务器的额外环境变量
minio_provisionbool是否执行 minio 资源置备任务?默认为 true
minio_aliasstringminio 部署的客户端别名
minio_endpointstringminio 部署的客户端别名对应的端点
minio_bucketsbucket[]待创建的 minio 存储桶列表
minio_usersuser[]待创建的 minio 用户列表

MINIO_REMOVE 参数组控制 MinIO 集群的移除行为,包括防误删保险、数据清理以及软件包卸载。

参数类型说明
minio_safeguardbool防止意外删除?默认为 false
minio_rm_databool移除时是否删除 minio 数据?默认为 true
minio_rm_pkgbool移除时是否卸载 minio 软件包?默认为 false

FERRET 参数

FERRET 参数组用于 FerretDB 部署与配置,包括身份标识、底层 PostgreSQL 连接、监听端口以及 SSL 设置。

参数类型说明
mongo_seqintmongo 实例号,必选身份参数
mongo_clusterstringmongo 集群名,必选身份参数
mongo_pgurlpgurlFerretDB 底层使用的 PGURL 连接串
mongo_ssl_enabledbool是否启用 SSL?默认为 false
mongo_listenip监听地址,默认留空则监听所有地址
mongo_portport服务端口,默认使用 27017
mongo_ssl_portportTLS 监听端口,默认使用 27018
mongo_exporter_portportExporter 端口,默认使用 9216
mongo_extra_varsstring额外环境变量,默认为空白字符串

DOCKER 参数

DOCKER 参数组用于 Docker 容器引擎的部署与配置,包括启用开关、数据目录、存储驱动、镜像加速以及监控。

参数类型说明
docker_enabledbool在当前节点上启用 Docker?默认不启用
docker_datapathDocker 数据目录,默认为 /data/docker
docker_storage_driverenumDocker 存储驱动,默认为 overlay2
docker_cgroups_driverenumDocker CGroup 文件系统驱动:cgroupfs,systemd
docker_registry_mirrorsstring[]Docker 仓库镜像列表
docker_exporter_portportDocker 监控指标导出端口,默认为 9323
docker_imagestring[]Docker 待拉取的镜像列表,默认为空列表
docker_image_cachepathDocker 待导入的镜像压缩包路径,默认为 /tmp/docker/*.tgz

6 - 剧本列表

Pigsty 提供了一系列 Ansible 剧本用于自动化部署与管理各个模块,本页面提供了所有剧本的导航与汇总。

模块导航

每个模块均包含若干预置剧本,以下表格列出了各模块及其包含的剧本数量与说明:

模块数量说明
INFRA5基础设施模块剧本
NODE2节点管理模块剧本
ETCD2ETCD 集群管理剧本
PGSQL7PostgreSQL 集群管理剧本
REDIS2Redis 集群管理剧本
MINIO2MinIO 对象存储管理剧本
FERRET1FerretDB 管理剧本
DOCKER2Docker 与应用管理剧本

剧本汇总

以下表格列出了 Pigsty 中所有可用的预置剧本:

剧本模块功能
deploy.ymlINFRA在所有节点上一次性完整部署所有组件
infra.ymlINFRA在 infra 节点上初始化 pigsty 基础设施
infra-rm.ymlINFRA从 infra 节点移除基础设施组件
cache.ymlINFRA从现有仓库创建离线安装包缓存
cert.ymlINFRA使用 Pigsty 自签名 CA 签发证书
node.ymlNODE纳管节点,调整节点到期望状态
node-rm.ymlNODE从 Pigsty 中移除纳管节点
etcd.ymlETCD安装与配置 Etcd 集群
etcd-rm.ymlETCD移除 Etcd 集群或成员
pgsql.ymlPGSQL初始化 PostgreSQL 集群或添加新的从库
pgsql-rm.ymlPGSQL移除 PostgreSQL 集群,或移除某个实例
pgsql-user.ymlPGSQL在现有的 PostgreSQL 集群中添加新的业务用户
pgsql-db.ymlPGSQL在现有的 PostgreSQL 集群中添加新的业务数据库
pgsql-monitor.ymlPGSQL将远程 PostgreSQL 实例纳入监控中
pgsql-migration.ymlPGSQL为现有的 PostgreSQL 集群生成迁移手册和脚本
pgsql-pitr.ymlPGSQL执行 PostgreSQL 时间点恢复 (PITR)
minio.ymlMINIO安装 MinIO 集群
minio-rm.ymlMINIO移除 MinIO 集群
redis.ymlREDIS初始化 Redis 集群/节点/实例
redis-rm.ymlREDIS移除 Redis 集群/节点/实例
docker.ymlDOCKER安装 Docker Daemon 与 Docker Compose
app.ymlDOCKER部署 Docker Compose 应用模板
mongo.ymlFERRET在节点上安装 FerretDB

剧本使用注意事项

保护机制

多个模块提供了防误删保险,通过 *_safeguard 参数控制:

默认情况下,这些 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_cleanvlogs_cleanvtraces_cleangrafana_cleannginx_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 中各个组件使用的端口一览,以及相关的配置参数与组件状态。

以下为 Pigsty 中各模块组件使用的默认端口及其对应参数,您可以按需调整,或者作为内部防火墙精细配置的参考。

模块组件端口参数状态
NODEnode_exporter9100node_exporter_port✅ 默认启用
NODEhaproxy9101haproxy_exporter_port✅ 默认启用
NODEvector9598vector_port✅ 默认启用
NODEkeepalived_exporter9650vip_exporter_port⚠️ 按需启用
NODEchronyd123-✅ 默认启用
DOCKERdocker9323docker_exporter_port⚠️ 按需启用
INFRAnginx80nginx_port✅ 默认启用
INFRAnginx443nginx_ssl_port✅ 默认启用
INFRAgrafana3000grafana_port✅ 默认启用
INFRAvictoriaMetrics8428vmetrics_port✅ 默认启用
INFRAvictoriaLogs9428vlogs_port✅ 默认启用
INFRAvictoriaTraces10428vtraces_port✅ 默认启用
INFRAvmalert8880vmalert_port✅ 默认启用
INFRAalertmanager9059alertmanager_port✅ 默认启用
INFRAblackbox_exporter9115blackbox_port✅ 默认启用
INFRAdnsmasq53dns_port✅ 默认启用
ETCDetcd2379etcd_port✅ 默认启用
ETCDetcd2380etcd_peer_port✅ 默认启用
MINIOminio9000minio_port✅ 默认启用
MINIOminio9001minio_admin_port✅ 默认启用
REDISredis6379redis_port⚠️ 按需启用
REDISredis_exporter9121redis_exporter_port⚠️ 按需启用
FERRETferretdb27017mongo_port⚠️ 按需启用
FERRETmongo_exporter9216mongo_exporter_port✅ 默认启用
PGSQLpostgres5432pg_port✅ 默认启用
PGSQLpgbouncer6432pgbouncer_port✅ 默认启用
PGSQLpatroni8008patroni_port✅ 默认启用
PGSQLpg_exporter9630pg_exporter_port✅ 默认启用
PGSQLpgbouncer_exporter9631pgbouncer_exporter_port✅ 默认启用
PGSQLpgbackrest_exporter9854pgbackrest_exporter_port✅ 默认启用
PGSQL{{ pg_cluster }}-primary5433pg_default_services✅ 默认启用
PGSQL{{ pg_cluster }}-replica5434pg_default_services✅ 默认启用
PGSQL{{ pg_cluster }}-default5436pg_default_services✅ 默认启用
PGSQL{{ pg_cluster }}-offline5438pg_default_services✅ 默认启用
PGSQL{{ pg_cluster }}-<service>543xpg_services⚠️ 按需启用