跳转到主要内容

清单

Pigsty 的主配置文件
Pigsty 的主配置文件

每个 pigsty 部署都有一个对应的配置 清单。 它可以存储在 YAML 格式的本地配置文件中,或从 CMDB 或任何 ansible 兼容格式动态生成。 Pigsty 默认使用一个单一的 YAML 配置文件,即 pigsty.yml位于 pigsty 主目录中。

configure 脚本将根据您的环境和输入生成具有良好默认值的 pigsty.yml 文件脚手架, 但它是 可选的:您始终可以直接编辑 pigsty.yml 文件,如教程所示。


结构

清单由两部分组成:全局变量 和多个 。您可以在 all.children 中定义新集群。 并使用全局变量描述基础设施:all.vars。它可能看起来像这样:

all:                  # 顶级对象:all
  vars: {...}         # 全局参数
  children:           # 组定义
    infra:            # 组定义:'infra'
      hosts: {...}        # 组成员:'infra'
      vars:  {...}        # 组参数:'infra'
    etcd:    {...}    # 组定义:'etcd'
    pg-meta: {...}    # 组定义:'pg-meta'
    pg-test: {...}    # 组定义:'pg-test'
    redis-test: {...} # 组定义:'redis-test'
    # ...

conf/ 下有大量示例,在 configure 期间也可以用作模板。


集群

每个 ansible 组可能代表一个集群,可以是节点集群、PostgreSQL 集群、Redis 集群、Etcd 集群或 Minio 集群等…

集群定义由两部分组成:hostsvars。 您可以在 <cls>.hosts 中定义集群成员,并在 <cls>.vars 中使用参数描述集群。 这是一个 3 节点 HA PG 集群的示例:

all:
  children:    # 所有组
    pg-test:   # 组名
      hosts:   # 组主机(集群成员)
        10.10.10.11: { pg_seq: 1, pg_role: primary } # 主机 1
        10.10.10.12: { pg_seq: 2, pg_role: replica } # 主机 2
        10.10.10.13: { pg_seq: 3, pg_role: offline } # 主机 3
      vars:    # 组变量(集群参数)
        pg_cluster: pg-test

集群级别的 vars 将覆盖全局变量,主机级别的 vars 将覆盖集群变量和全局变量。


参数

参数是定义部署中所有实体的键值对。 键是字符串名称,值可以是五种类型之一:布尔值、字符串、数字、数组或对象。

参数可以在不同级别设置,具有以下优先级:

级别 位置 描述 优先级
CLI 参数 命令行 通过 -e CLI 参数 最高 (5)
主机变量 <group>.hosts.<host> 特定于单个主机的参数 高 (4)
组变量 <group>.vars 组/集群中主机共享的参数 中等 (3)
全局变量 all.vars 所有主机共享的参数 低 (2)
默认值 <roles>/default/main.yml 角色实现默认值 最低 (1)

以下是关于参数优先级的一些示例:

  • 使用 Playbook CLI 参数 -e pg_version=16 覆盖 PostgreSQL 主版本
  • 使用主机变量上的实例级别参数 pg_role 覆盖 pg 实例角色
  • 使用组变量上的集群级别参数 pg_cluster 覆盖 pg 集群名称。
  • 使用全局变量上的全局参数 node_ntp_servers 指定全局 NTP 服务器
  • 如果没有设置 pg_version,pigsty 将使用角色实现的默认值(默认为 18

除了强制性的 身份参数 外,每个参数都有一个适当的默认值;它们用作标识符,必须明确设置。 例如上述片段中的 pg_clusterpg_rolepg_seq

可用参数根据模块而异:


参考

Pigsty 有 290+ 个参数,查看模块参数了解详细信息。

模块 部分 描述 数量
INFRA META Pigsty 元数据 4
INFRA CA 自签名 CA 3
INFRA INFRA_ID 基础设施门户和身份 2
INFRA REPO 本地软件仓库 9
INFRA INFRA_PACKAGE 基础设施包 2
INFRA NGINX Nginx Web 服务器 7
INFRA DNS DNSMASQ 名称服务器 3
INFRA PROMETHEUS Prometheus 堆栈 18
INFRA GRAFANA Grafana 堆栈 6
INFRA LOKI Loki 日志服务 4
NODE NODE_ID 节点身份参数 5
NODE NODE_DNS 节点域名和解析器 6
NODE NODE_PACKAGE 节点仓库和包 5
NODE NODE_TUNE 节点调优和内核功能 10
NODE NODE_ADMIN 管理员用户和凭据 7
NODE NODE_TIME 节点时区、NTP、Crontabs 5
NODE NODE_VIP 节点 Keepalived L2 VIP 8
NODE HAPROXY HAProxy 负载均衡器 10
NODE NODE_EXPORTER 节点监控代理 3
NODE PROMTAIL Promtail 日志代理 4
DOCKER DOCKER Docker 守护进程 4
ETCD ETCD ETCD DCS 集群 10
MINIO MINIO MINIO S3 对象存储 15
REDIS REDIS Redis 键值 NoSQL 缓存 20
PGSQL PG_ID PG 身份参数 11
PGSQL PG_BUSINESS PG 业务对象定义 12
PGSQL PG_INSTALL 安装 PG 包和扩展 10
PGSQL PG_BOOTSTRAP 使用 Patroni 初始化 HA PG 集群 35
PGSQL PG_PROVISION 创建数据库内对象 9
PGSQL PG_BACKUP 使用 pgBackRest 设置备份仓库 5
PGSQL PG_ACCESS 暴露服务、绑定 VIP、DNS 16
PGSQL PG_MONITOR 收集 Postgres 的指标和日志 18
PGSQL PG_EXPORTER 移除 Postgres 集群 4