跳转到主要内容

文档 v3.7.0 版本已不再积极维护,你当前浏览的是一份归档快照。 最新文档请参阅 最新版本

清单

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