清单
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 集群等…
集群定义由两部分组成:hosts 和 vars。
您可以在 <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_clean=true
强制删除现有数据库 - 使用主机变量上的实例级别参数
pg_role
覆盖 pg 实例角色 - 使用组变量上的集群级别参数
pg_cluster
覆盖 pg 集群名称。 - 使用全局变量上的全局参数
node_ntp_servers
指定全局 NTP 服务器 - 如果没有设置
pg_version
,pigsty 将使用角色实现的默认值(默认为17
)
除了强制性的 身份参数 外,每个参数都有一个适当的默认值;它们用作标识符,必须明确设置。
例如上述片段中的 pg_cluster
、pg_role
和 pg_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 |