PIGSTY

参数

65 个参数用于定制节点

NODE 模块有 10 个部分,65 个参数。


参数

名称部分类型级别注释
nodenameNODE_IDstringI节点实例身份,如果缺失则使用主机名,可选
node_clusterNODE_IDstringC节点集群身份,如果缺失则使用 'nodes',可选
nodename_overwriteNODE_IDboolC使用 nodename 覆盖节点的主机名?
nodename_exchangeNODE_IDboolC在 play 主机间交换节点名?
node_id_from_pgNODE_IDboolC如果适用,使用 postgres 身份作为节点身份?
node_write_etc_hostsNODE_DNSboolG/C/I修改目标节点上的 /etc/hosts
node_default_etc_hostsNODE_DNSstring[]G/etc/hosts 中的静态 DNS 记录
node_etc_hostsNODE_DNSstring[]C/etc/hosts 中的额外静态 DNS 记录
node_dns_methodNODE_DNSenumC如何处理 DNS 服务器:add、none、overwrite
node_dns_serversNODE_DNSstring[]C/etc/resolv.conf 中的动态名称服务器
node_dns_optionsNODE_DNSstring[]C/etc/resolv.conf 中的 DNS 解析选项
node_repo_modulesNODE_PACKAGEstringC节点上要添加的上游仓库,默认为本地
node_repo_removeNODE_PACKAGEboolC移除节点上现有的仓库?
node_packagesNODE_PACKAGEstring[]C当前节点要安装的包
node_default_packagesNODE_PACKAGEstring[]G所有节点上要安装的默认包
node_disable_firewallNODE_TUNEboolC禁用节点防火墙?默认为 true
node_disable_selinuxNODE_TUNEboolC禁用节点 selinux?默认为 true
node_disable_numaNODE_TUNEboolC禁用节点 numa,需要重启
node_disable_swapNODE_TUNEboolC禁用节点交换分区,谨慎使用
node_static_networkNODE_TUNEboolC重启后保留 DNS 解析器设置
node_disk_prefetchNODE_TUNEboolC在 HDD 上设置磁盘预取以提高性能
node_kernel_modulesNODE_TUNEstring[]C此节点上要启用的内核模块
node_hugepage_countNODE_TUNEintC2MB 大页数量,优先于比率
node_hugepage_ratioNODE_TUNEfloatC节点内存大页比率,默认 0 禁用
node_overcommit_ratioNODE_TUNEfloatC节点内存过量使用比率,默认 0 禁用
node_tuneNODE_TUNEenumC节点调优配置文件:none、oltp、olap、crit、tiny
node_sysctl_paramsNODE_TUNEdictC除调优外的 k:v 格式 sysctl 参数
node_dataNODE_ADMINpathC节点主数据目录,默认为 /data
node_admin_enabledNODE_ADMINboolC在目标节点上创建管理员用户?
node_admin_uidNODE_ADMINintC节点管理员用户的 uid 和 gid
node_admin_usernameNODE_ADMINusernameC节点管理员用户名,默认为 dba
node_admin_ssh_exchangeNODE_ADMINboolC在节点集群间交换管理员 SSH 密钥
node_admin_pk_currentNODE_ADMINboolC将当前用户的 SSH 公钥添加到管理员 authorized_keys
node_admin_pk_listNODE_ADMINstring[]C要添加到管理员用户的 SSH 公钥
node_aliasesNODE_ADMINdictC要添加的额外 shell 别名,k:v 字典
node_timezoneNODE_TIMEstringC设置节点时区,空字符串跳过
node_ntp_enabledNODE_TIMEboolC启用 chronyd 时间同步服务?
node_ntp_serversNODE_TIMEstring[]C/etc/chrony.conf 中的 NTP 服务器
node_crontab_overwriteNODE_TIMEboolC覆盖还是追加到 /etc/crontab
node_crontabNODE_TIMEstring[]C/etc/crontab 中的 crontab 条目
vip_enabledNODE_VIPboolC在此节点集群上启用 VIP?
vip_addressNODE_VIPipCIPv4 格式的节点 VIP 地址,如果启用 VIP 则必需
vip_vridNODE_VIPintC必需,整数,1-254,在同一 VLAN 中应唯一
vip_roleNODE_VIPenumI可选,master/backup,默认为 backup,用作初始角色
vip_preemptNODE_VIPboolC/I可选,true/false,默认为 false,启用 VIP 抢占
vip_interfaceNODE_VIPstringC/I节点 VIP 监听的网络接口,默认为 eth0
vip_dns_suffixNODE_VIPstringC节点 VIP DNS 名称后缀,默认为空字符串
vip_exporter_portNODE_VIPportCkeepalived 导出器监听端口,默认为 9650
haproxy_enabledHAPROXYboolC在此节点上启用 haproxy?
haproxy_cleanHAPROXYboolG/C/A清理所有现有的 haproxy 配置?
haproxy_reloadHAPROXYboolA配置后重新加载 haproxy?
haproxy_auth_enabledHAPROXYboolG为 haproxy 管理页面启用身份验证
haproxy_admin_usernameHAPROXYusernameGhaproxy 管理员用户名,默认为 admin
haproxy_admin_passwordHAPROXYpasswordGhaproxy 管理员密码,默认为 pigsty
haproxy_exporter_portHAPROXYportChaproxy 管理/导出器端口,默认为 9101
haproxy_client_timeoutHAPROXYintervalC客户端连接超时,默认为 24h
haproxy_server_timeoutHAPROXYintervalC服务器端连接超时,默认为 24h
haproxy_servicesHAPROXYservice[]C要在节点上公开的 haproxy 服务列表
node_exporter_enabledNODE_EXPORTERboolC在此节点上设置 node_exporter?
node_exporter_portNODE_EXPORTERportCnode exporter 监听端口,默认为 9100
node_exporter_optionsNODE_EXPORTERargCnode_exporter 的额外服务器选项
promtail_enabledPROMTAILboolC启用 promtail 日志收集器?
promtail_cleanPROMTAILboolG/A初始化期间清除现有的 promtail 状态文件?
promtail_portPROMTAILportCpromtail 监听端口,默认为 9080
promtail_positionsPROMTAILpathCpromtail 位置状态文件路径

NODE

Node 模块将目标节点调优到所需状态,并将它们集成到 Pigsty 监控系统中。


NODE_ID

每个节点都有身份参数,这些参数通过 <cluster>.hosts<cluster>.vars 中的参数配置。详情请查看 NODE Identity


nodename

名称:nodename,类型:string,级别:I

节点实例身份,如果缺失则使用主机名,可选

无默认值,Null 或空字符串表示 nodename 将设置为节点的当前主机名。

如果 node_id_from_pgtrue(默认)且 nodename 未明确定义,nodename 将首先尝试使用 ${pg_cluster}-${pg_seq},如果此节点上未定义 PGSQL,则回退到默认的 HOSTNAME

如果 nodename_overwritetrue,节点名称也将用作 HOSTNAME。


node_cluster

名称:node_cluster,类型:string,级别:C

节点集群身份,如果缺失则使用 'nodes',可选

默认值:nodes

如果 node_id_from_pgtrue(默认)且 node_cluster 未明确定义,node_cluster 将首先尝试使用 ${pg_cluster},如果此节点上未定义 PGSQL,则回退到默认的 HOSTNAME


nodename_overwrite

名称:nodename_overwrite,类型:bool,级别:C

使用 nodename 覆盖节点的主机名?

默认值为 true,非空节点名 nodename 将覆盖当前节点的主机名。

nodename 参数未定义或为空字符串,但 node_id_from_pgtrue 时,节点名称将尝试使用 {{ pg_cluster }}-{{ pg_seq }},借用 1:1 PostgreSQL 实例的实例名身份。

如果 nodename 未定义、为空或空字符串且 node_id_from_pgfalse,则不对主机名进行任何更改。


nodename_exchange

名称:nodename_exchange,类型:bool,级别:C

在 play 主机间交换节点名?

默认值为 false

启用此参数时,在执行 node.yml playbook 的同一组节点之间交换节点名称,写入 /etc/hosts


node_id_from_pg

名称:node_id_from_pg,类型:bool,级别:C

如果适用,使用 postgres 身份作为节点身份?

默认值为 true

如果适用,借用 PostgreSQL 集群和实例身份。

如果 postgres 和节点之间存在 1:1 关系,使用相同的身份很有用。


NODE_DNS

Pigsty 为节点配置静态 DNS 记录和动态 DNS 解析器。

如果您已经有 DNS 服务器,请将 node_dns_method 设置为 none 以禁用动态 DNS 设置。

node_write_etc_hosts: true        # 修改目标节点上的 `/etc/hosts`?
node_default_etc_hosts:           # `/etc/hosts` 中的静态 DNS 记录
  - "${admin_ip} h.pigsty a.pigsty p.pigsty g.pigsty"
node_etc_hosts: []                # `/etc/hosts` 中的额外静态 DNS 记录
node_dns_method: add              # 如何处理 DNS 服务器:add、none、overwrite
node_dns_servers: ['${admin_ip}'] # `/etc/resolv.conf` 中的动态名称服务器
node_dns_options:                 # `/etc/resolv.conf` 中的 DNS 解析选项
  - options single-request-reopen timeout:1

node_write_etc_hosts

名称:node_write_etc_hosts,类型:bool,级别:G|C|I

修改目标节点上的 /etc/hosts

例如,docker VM 默认无法修改 /etc/hosts,因此您可以将此值设置为 false 以禁用修改。


node_default_etc_hosts

名称:node_default_etc_hosts,类型:string[],级别:G

/etc/hosts 中的静态 DNS 记录

默认值:

["${admin_ip} h.pigsty a.pigsty p.pigsty g.pigsty"]

node_default_etc_hosts 是一个数组。每个元素都是格式为 <ip> <name> 的 DNS 记录。

它用于全局静态 DNS 记录。您可以为每个集群使用 node_etc_hosts 来设置临时记录。

确保在 DNS 名称服务器启动之前,将类似 10.10.10.10 h.pigsty a.pigsty p.pigsty g.pigsty 的 DNS 记录写入 /etc/hosts,以确保可以使用域名访问本地 yum 仓库。


node_etc_hosts

名称:node_etc_hosts,类型:string[],级别:C

/etc/hosts 中的额外静态 DNS 记录

默认值:[]

node_default_etc_hosts 相同,但是额外添加的。


node_dns_method

名称:node_dns_method,类型:enum,级别:C

如何处理 DNS 服务器:add、none、overwrite

默认值:add

  • add:将 node_dns_servers 中的记录追加到 /etc/resolv.conf 并保留现有的 DNS 服务器。(默认)
  • overwrite:用 node_dns_servers 中的记录覆盖 /etc/resolv.conf
  • none:如果在生产环境中提供了 DNS 服务器,可以跳过 DNS 服务器配置。

node_dns_servers

名称:node_dns_servers,类型:string[],级别:C

/etc/resolv.conf 中的动态名称服务器

默认值:["${admin_ip}"],管理节点上的默认名称服务器将作为第一个名称服务器添加到 /etc/resolv.conf


node_dns_options

名称:node_dns_options,类型:string[],级别:C

/etc/resolv.conf 中的 DNS 解析选项,默认值:

- options single-request-reopen timeout:1

NODE_PACKAGE

本节讨论要安装的上游 yum 仓库和软件包。

node_repo_modules: local          # 要在节点上添加的上游仓库,默认为本地
node_repo_remove: true            # 移除节点上现有的仓库?
node_packages: [openssh-server]   # 要安装最新版本的当前节点软件包
#node_default_packages: []        # 要在基础设施节点上安装的默认软件包,(默认值从 node_id/vars 加载)

node_repo_modules

名称:node_repo_modules,类型:string,级别:C/A

要在节点上添加的上游仓库,默认值:local

此参数指定要添加到节点的上游仓库。它用于过滤 repo_upstream 条目,只有具有相同 module 值的条目才会添加到节点的软件源。这类似于 repo_modules 参数。


node_repo_remove

名称:node_repo_remove,类型:bool,级别:C/A

移除节点上现有的仓库?

默认值为 true,因此 Pigsty 将在添加上游仓库之前将 /etc/yum.repos.d 中的现有仓库文件移动到备份目录:/etc/yum.repos.d/backup。在 Debian/Ubuntu 上,Pigsty 将备份并移动 /etc/apt/sources.list(.d)/etc/apt/backup


node_packages

名称:node_packages,类型:string[],级别:C

要在当前节点上安装的软件包,默认值:[openssh-server]

每个元素都是逗号分隔的软件包名称列表,除了 node_default_packages 之外,还将在当前节点上安装。

此参数中指定的软件包将升级到最新版本,默认值为 [openssh-server],默认升级 sshd 以避免 SSH CVE。

此参数通常用于安装对当前节点/集群而言是临时的额外软件包。


node_default_packages

名称:node_default_packages,类型:string[],级别:G

要在所有节点上安装的默认软件包,未定义默认值。

此参数是字符串数组,每个字符串都是逗号分隔的软件包名称列表,默认情况下将在所有节点上安装。

此参数没有默认值,您可以明确指定它,或者如果要使用默认值则将其留空。

当将其留空时,Pigsty 将根据您的操作系统使用 roles/node_id/vars 中定义的 node_packages_default 的默认值。

对于 EL 系统,默认值为:

- lz4,unzip,bzip2,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,sysstat,iotop,htop,rsync,tcpdump
- python3,python3-pip,socat,lrzsz,net-tools,ipvsadm,telnet,ca-certificates,openssl,keepalived,etcd,haproxy,chrony
- zlib,yum,audit,bind-utils,readline,vim-minimal,node_exporter,grubby,openssh-server,openssh-clients

对于 debian / ubuntu 节点,明确使用此默认值:

- lz4,unzip,bzip2,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,sysstat,iotop,htop,rsync,tcpdump
- python3,python3-pip,socat,lrzsz,net-tools,ipvsadm,telnet,ca-certificates,openssl,keepalived,etcd,haproxy,chrony
- zlib1g,acl,dnsutils,libreadline-dev,vim-tiny,node-exporter,openssh-server,openssh-client

NODE_TUNE

在节点上配置调优模板、功能、内核模块、sysctl 参数。

node_disable_firewall: true       # 禁用节点防火墙?默认为 true
node_disable_selinux: true        # 禁用节点 selinux?默认为 true
node_disable_numa: false          # 禁用节点 numa,需要重启
node_disable_swap: false          # 禁用节点交换分区,谨慎使用
node_static_network: true         # 重启后保留 DNS 解析器设置
node_disk_prefetch: false         # 在 HDD 上设置磁盘预取以提高性能
node_kernel_modules: [ softdog, ip_vs, ip_vs_rr, ip_vs_wrr, ip_vs_sh ]
node_hugepage_count: 0            # 2MB 大页数量,优先于比率
node_hugepage_ratio: 0            # 节点内存大页比率,0 禁用它(默认)
node_overcommit_ratio: 0          # 节点内存过量使用比率,0 禁用它(默认)
node_tune: oltp                   # 节点调优配置文件:none、oltp、olap、crit、tiny
node_sysctl_params: { }           # 除调优外的 k:v 格式 sysctl 参数

node_disable_firewall

名称:node_disable_firewall,类型:bool,级别:C

禁用节点防火墙?默认为 true

默认值为 true


node_disable_selinux

名称:node_disable_selinux,类型:bool,级别:C

禁用节点 selinux?默认为 true

默认值为 true


node_disable_numa

名称:node_disable_numa,类型:bool,级别:C

禁用节点 numa,需要重启

默认值为 false

布尔标志,默认不关闭。请注意,关闭 NUMA 需要重启机器才能生效!

如果您不知道如何设置 CPU 亲和性,建议关闭 NUMA。


node_disable_swap

名称:node_disable_swap,类型:bool,级别:C

禁用节点交换分区,谨慎使用

默认值为 false

不建议关闭 SWAP。但是,当您的节点用于 Kubernetes 部署时,应该禁用 SWAP。

如果有足够的内存并且数据库独占部署,可能会略微提高性能。


node_static_network

名称:node_static_network,类型:bool,级别:C

重启后保留 DNS 解析器设置,默认值为 true

启用静态网络意味着机器重启不会因 NIC 更改而覆盖您的 DNS Resolv 配置。建议在生产环境中启用。


node_disk_prefetch

名称:node_disk_prefetch,类型:bool,级别:C

在 HDD 上设置磁盘预取以提高性能

默认值为 false,使用 HDD 时考虑启用此功能。


node_kernel_modules

名称:node_kernel_modules,类型:string[],级别:C

要在此节点上启用的内核模块

默认值:

node_kernel_modules: [ softdog, ip_vs, ip_vs_rr, ip_vs_wrr, ip_vs_sh ]

由内核模块名称组成的数组,声明需要在节点上安装的内核模块。


node_hugepage_count

名称:node_hugepage_count,类型:int,级别:C

2MB 大页数量,优先于比率,默认为 0

优先于 node_hugepage_ratio。如果给出非零值,将写入 /etc/sysctl.d/hugepage.conf

如果 node_hugepage_countnode_hugepage_ratio 都为 0(默认),大页将完全禁用。

负值不起作用,高于节点内存 90% 的数字将上限到节点内存的 90%。

如果不为零,它应该略大于 pg_shared_buffer_ratio


node_hugepage_ratio

名称:node_hugepage_ratio,类型:float,级别:C

节点内存大页比率,0 禁用它(默认),有效范围:0 ~ 0.40

默认值:0,将设置 vm.nr_hugepages=0 并且根本不使用 HugePage。

此内存的百分比将分配为 HugePage,并为 PostgreSQL 保留。

如果不为零,它应该等于或略大于 pg_shared_buffer_ratio

例如,如果您为 postgres 共享缓冲区使用默认的 25% 内存,您可以将此值设置为 0.27 ~ 0.30,浪费的大页可以稍后使用 /pg/bin/pg-tune-hugepage 回收。


node_overcommit_ratio

名称:node_overcommit_ratio,类型:int,级别:C

节点内存过量使用比率,0 禁用它(默认)。这是一个从 0 到 100+ 的整数。

默认值:0,将设置 vm.overcommit_memory=0,否则将使用 vm.overcommit_memory=2,此值将用作 vm.overcommit_ratio

建议在专用 pgsql 节点上设置使用 vm.overcommit_ratio。例如 50 ~ 100。


node_tune

名称:node_tune,类型:enum,级别:C

节点调优配置文件:none、oltp、olap、crit、tiny

默认值:oltp

  • tiny:微型虚拟机(1 ~ 3 核,1 ~ 8 GB 内存)
  • oltp:优化延迟的常规 OLTP 模板
  • olap:优化吞吐量的常规 OLAP 模板
  • crit:核心金融业务模板,优化脏页数量

通常,数据库调优模板 pg_conf 应该与节点调优模板配对:node_tune


node_sysctl_params

名称:node_sysctl_params,类型:dict,级别:C

除调优外的 k:v 格式 sysctl 参数

默认值:{}

字典 K-V 结构,Key 是内核 sysctl 参数名称,Value 是参数值。

您也可以使用调优配置文件定义 sysctl 参数。


NODE_ADMIN

本节讨论管理员用户及其凭据。

node_data: /data                  # 节点主数据目录,默认为 `/data`
node_admin_enabled: true          # 在目标节点上创建管理员用户?
node_admin_uid: 88                # 节点管理员用户的 uid 和 gid
node_admin_username: dba          # 节点管理员用户名,默认为 `dba`
node_admin_ssh_exchange: true     # 在节点集群间交换管理员 SSH 密钥
node_admin_pk_current: true       # 将当前用户的 SSH 公钥添加到管理员 authorized_keys
node_admin_pk_list: []            # 要添加到管理员用户的 SSH 公钥

node_data

名称:node_data,类型:path,级别:C

节点主数据目录,默认为 /data

默认值:/data

如果指定,此路径将用作主数据磁盘挂载点。如果路径不存在,将创建目录并抛出警告。

数据目录由 root 拥有,模式为 0777


node_admin_enabled

名称:node_admin_enabled,类型:bool,级别:C

在目标节点上创建管理员用户?

默认值为 true

在每个节点上创建管理员用户(免密 sudo 和 ssh),默认创建名为 dba (uid=88) 的管理员用户,可以从元节点通过 SSH 免密访问环境中的其他节点并执行 sudo。


node_admin_uid

名称:node_admin_uid,类型:int,级别:C

节点管理员用户的 uid 和 gid

默认值:88


node_admin_username

名称:node_admin_username,类型:username,级别:C

节点管理员用户名,默认为 dba

默认值:dba


node_admin_ssh_exchange

名称:node_admin_ssh_exchange,类型:bool,级别:C

在节点集群间交换管理员 SSH 密钥

默认值为 true

启用时,Pigsty 将在 playbook 执行期间在成员之间交换 SSH 公钥,允许管理员 node_admin_username 从不同节点相互访问。


node_admin_pk_current

名称:node_admin_pk_current,类型:bool,级别:C

将当前用户的 SSH 公钥添加到管理员 authorized_keys

默认值为 true

启用时,在当前节点上,当前用户的 SSH 公钥(~/.ssh/id_rsa.pub)被复制到目标节点管理员用户的 authorized_keys

在生产环境中部署时,请务必注意此参数,它将当前执行命令的用户的默认公钥安装到所有机器的管理员用户。


node_admin_pk_list

名称:node_admin_pk_list,类型:string[],级别:C

要添加到管理员用户的 SSH 公钥

默认值:[]

数组的每个元素都是一个字符串,包含写入管理员用户 ~/.ssh/authorized_keys 的密钥,具有相应私钥的用户可以作为管理员用户登录。

在生产环境中部署时,请务必注意此参数,并且只将受信任的密钥添加到此列表。


node_aliases

名称:node_aliases,类型:dict,级别:C/I

要添加到管理员用户 shell 配置文件的额外别名

默认值:{}

您可以向其添加额外的 shell 别名,pigsty 将这些别名添加到目标节点上的 /etc/profile.d/node.alias.sh 文件:

node_aliases:
  g:   git
  d:   docker

这将生成:

alias g="git"
alias d="docker"

NODE_TIME

node_timezone: ''                 # 设置节点时区,空字符串跳过
node_ntp_enabled: true            # 启用 chronyd 时间同步服务?
node_ntp_servers:                 # `/etc/chrony.conf` 中的 NTP 服务器
  - pool pool.ntp.org iburst
node_crontab_overwrite: true      # 覆盖还是追加到 `/etc/crontab`?
node_crontab: [ ]                 # `/etc/crontab` 中的 crontab 条目

node_timezone

名称:node_timezone,类型:string,级别:C

设置节点时区,空字符串跳过

默认值为空字符串,不会更改默认时区(通常为 UTC)


node_ntp_enabled

名称:node_ntp_enabled,类型:bool,级别:C

启用 chronyd 时间同步服务?

默认值为 true,因此 Pigsty 将使用 node_ntp_servers 覆盖节点的 /etc/chrony.conf

如果您已经配置了 NTP 服务器,只需设置为 false 即可保持不变。


node_ntp_servers

名称:node_ntp_servers,类型:string[],级别:C

/etc/chrony.conf 中的 NTP 服务器,默认值:["pool pool.ntp.org iburst"]

只有当 node_ntp_enabled 为 true 时才生效。

您可以使用 ${admin_ip} 与管理节点上的 NTP 服务器同步时间,而不是公共 NTP 服务器。

node_ntp_servers: [ 'pool ${admin_ip} iburst' ]

node_crontab_overwrite

名称:node_crontab_overwrite,类型:bool,级别:C

覆盖还是追加到 /etc/crontab

默认值为 true,pigsty 将以覆盖模式渲染 node_crontab 中的记录,而不是追加到其中。


node_crontab

名称:node_crontab,类型:string[],级别:C

/etc/crontab 中的 crontab 条目

默认值:[]


NODE_VIP

您可以在一个节点集群之间绑定可选的 L2 VIP,默认情况下是禁用的。

L2 VIP 只能在同一 L2 LAN 中使用,这可能会对您的网络拓扑产生额外限制。

如果启用,您必须为每个节点集群手动分配 vip_addressvip_vrid

用户有责任确保地址 / vrid 在同一 LAN 中是唯一的

vip_enabled: false                # 在此节点集群上启用 VIP?
# vip_address:         [IDENTITY] # IPv4 格式的节点 VIP 地址,如果启用 VIP 则必需
# vip_vrid:            [IDENTITY] # 必需,整数,1-254,在同一 VLAN 中应唯一
vip_role: backup                  # 可选,`master/backup`,默认为 backup,用作初始角色
vip_preempt: false                # 可选,`true/false`,默认为 false,启用 VIP 抢占
vip_interface: eth0               # 节点 VIP 监听的网络接口,默认为 `eth0`
vip_dns_suffix: ''                # 节点 VIP DNS 名称后缀,默认为空字符串
vip_exporter_port: 9650           # keepalived 导出器监听端口,默认为 9650

vip_enabled

名称:vip_enabled,类型:bool,级别:C

在此节点集群上启用 VIP?默认值为 false,表示不为此节点集群创建 L2 VIP。

L2 VIP 只能在同一 L2 LAN 中使用,这可能会对您的网络拓扑产生额外限制。


vip_address

名称:vip_address,类型:ip,级别:C

IPv4 格式的节点 VIP 地址,如果节点 vip_enabled必需

无默认值。此参数必须明确分配并在您的 LAN 中唯一。


vip_vrid

名称:vip_vrid,类型:int,级别:C

整数,1-254,在同一 VLAN 中应唯一,如果节点 vip_enabled必需

无默认值。此参数必须明确分配并在您的 LAN 中唯一。


vip_role

名称:vip_role,类型:enum,级别:I

节点 VIP 角色,可以是 masterbackup,将用作初始 keepalived 状态。


vip_preempt

名称:vip_preempt,类型:bool,级别:C/I

可选,true/false,默认为 false,启用 VIP 抢占

默认值为 false,表示当备份具有比活跃主服务器更高的优先级时不会发生抢占。


vip_interface

名称:vip_interface,类型:string,级别:C/I

节点 VIP 监听的网络接口,默认为 eth0

它应该是节点的相同主要内网接口,即您在清单文件中使用的 IP 地址。

如果您的节点有不同的接口,您可以在实例变量上覆盖它。


vip_dns_suffix

名称:vip_dns_suffix,类型:string,级别:C/I

节点 VIP DNS 名称后缀,默认为空字符串。它将用作节点 VIP 的 DNS 名称。


vip_exporter_port

名称:vip_exporter_port,类型:port,级别:C/I

keepalived 导出器监听端口,默认为 9650。


HAPROXY

默认情况下,HAProxy 安装在每个节点上,以 NodePort 方式公开服务。

它由 PGSQL Service 使用。

haproxy_enabled: true             # 在此节点上启用 haproxy?
haproxy_clean: false              # 清理所有现有的 haproxy 配置?
haproxy_reload: true              # 配置后重新加载 haproxy?
haproxy_auth_enabled: true        # 为 haproxy 管理页面启用身份验证
haproxy_admin_username: admin     # haproxy 管理员用户名,默认为 `admin`
haproxy_admin_password: pigsty    # haproxy 管理员密码,默认为 `pigsty`
haproxy_exporter_port: 9101       # haproxy 管理/导出器端口,默认为 9101
haproxy_client_timeout: 24h       # 客户端连接超时,默认为 24h
haproxy_server_timeout: 24h       # 服务器端连接超时,默认为 24h
haproxy_services: []              # 要在节点上公开的 haproxy 服务列表

haproxy_enabled

名称:haproxy_enabled,类型:bool,级别:C

在此节点上启用 haproxy?

默认值为 true


haproxy_clean

名称:haproxy_clean,类型:bool,级别:G/C/A

清理所有现有的 haproxy 配置?

默认值为 false


haproxy_reload

名称:haproxy_reload,类型:bool,级别:A

配置后重新加载 haproxy?

默认值为 true,它将在配置更改后重新加载 haproxy。

如果您希望在应用之前检查,您可以使用 cli 参数关闭此功能并检查它。


haproxy_auth_enabled

名称:haproxy_auth_enabled,类型:bool,级别:G

为 haproxy 管理页面启用身份验证

默认值为 true,这将需要管理页面的 http 基本身份验证。

不建议禁用它,因为您的流量控制将被暴露。


haproxy_admin_username

名称:haproxy_admin_username,类型:username,级别:G

haproxy 管理员用户名,默认为 admin


haproxy_admin_password

名称:haproxy_admin_password,类型:password,级别:G

haproxy 管理员密码,默认为 pigsty

请在您的生产环境中更改它!


haproxy_exporter_port

名称:haproxy_exporter_port,类型:port,级别:C

haproxy 管理/导出器端口,默认为 9101


haproxy_client_timeout

名称:haproxy_client_timeout,类型:interval,级别:C

客户端连接超时,默认为 24h


haproxy_server_timeout

名称:haproxy_server_timeout,类型:interval,级别:C

服务器端连接超时,默认为 24h


haproxy_services

名称:haproxy_services,类型:service[],级别:C

要在节点上公开的 haproxy 服务列表,默认值:[]

每个元素都是一个服务定义,这是一个临时 haproxy 服务示例:

haproxy_services:                   # haproxy 服务列表

  # 公开 pg-test 只读副本
  - name: pg-test-ro                # [必需] 服务名称,唯一
    port: 5440                      # [必需] 服务端口,唯一
    ip: "*"                         # [可选] 服务监听地址,默认为 "*"
    protocol: tcp                   # [可选] 服务协议,默认为 'tcp'
    balance: leastconn              # [可选] 负载均衡算法,默认为 roundrobin(或 leastconn)
    maxconn: 20000                  # [可选] 最大允许前端连接,默认为 20000
    default: 'inter 3s fastinter 1s downinter 5s rise 3 fall 3 on-marked-down shutdown-sessions slowstart 30s maxconn 3000 maxqueue 128 weight 100'
    options:
      - option httpchk
      - option http-keep-alive
      - http-check send meth OPTIONS uri /read-only
      - http-check expect status 200
    servers:
      - { name: pg-test-1 ,ip: 10.10.10.11 , port: 5432 , options: check port 8008 , backup: true }
      - { name: pg-test-2 ,ip: 10.10.10.12 , port: 5432 , options: check port 8008 }
      - { name: pg-test-3 ,ip: 10.10.10.13 , port: 5432 , options: check port 8008 }

它将渲染到 /etc/haproxy/<service.name>.cfg 并在重新加载后生效。


NODE_EXPORTER

node_exporter_enabled: true       # 在此节点上设置 node_exporter?
node_exporter_port: 9100          # node exporter 监听端口,默认为 9100
node_exporter_options: '--no-collector.softnet --no-collector.nvme --collector.tcpstat --collector.processes'

node_exporter_enabled

名称:node_exporter_enabled,类型:bool,级别:C

在此节点上设置 node_exporter?默认值为 true


node_exporter_port

名称:node_exporter_port,类型:port,级别:C

node exporter 监听端口,默认为 9100


node_exporter_options

名称:node_exporter_options,类型:arg,级别:C

node_exporter 的额外服务器选项,默认值:--no-collector.softnet --no-collector.nvme --collector.tcpstat --collector.processes

默认情况下,Pigsty 启用 tcpstatprocesses 收集器并禁用 nvmesoftnet 指标收集器。


PROMTAIL

Promtail 将从其他模块收集日志,并将它们发送到 LOKI

  • INFRA:基础设施日志,仅在基础设施节点上收集。
    • nginx-access/var/log/nginx/access.log
    • nginx-error/var/log/nginx/error.log
    • grafana/var/log/grafana/grafana.log
  • NODES:主机节点日志,在所有节点上收集。
    • syslog/var/log/messages
    • dmesg/var/log/dmesg
    • cron/var/log/cron
  • PGSQL:PostgreSQL 日志,当节点使用 pg_cluster 定义时收集。
    • postgres/pg/log/postgres/*
    • patroni/pg/log/patroni.log
    • pgbouncer/pg/log/pgbouncer/pgbouncer.log
    • pgbackrest/pg/log/pgbackrest/*.log
  • REDIS:Redis 日志,当节点使用 redis_cluster 定义时收集。
    • redis/var/log/redis/*.log

日志目录可根据 pg_log_dirpatroni_log_dirpgbouncer_log_dirpgbackrest_log_dir 自定义

promtail_enabled: true            # 启用 promtail 日志收集器?
promtail_clean: false             # 初始化期间清除现有的 promtail 状态文件?
promtail_port: 9080               # promtail 监听端口,默认为 9080
promtail_positions: /var/log/positions.yaml # promtail 位置状态文件路径

promtail_enabled

名称:promtail_enabled,类型:bool,级别:C

启用 promtail 日志收集器?

默认值为 true


promtail_clean

名称:promtail_clean,类型:bool,级别:G/A

初始化期间清除现有的 promtail 状态文件?

默认值为 false,如果您选择清理,Pigsty 将删除由 promtail_positions 定义的现有状态文件,这意味着 Promtail 将重新收集当前节点上的所有日志并再次将它们发送到 Loki。


promtail_port

名称:promtail_port,类型:port,级别:C

promtail 监听端口,默认为 9080

默认值:9080


promtail_positions

名称:promtail_positions,类型:path,级别:C

promtail 位置状态文件路径

默认值:/var/log/positions.yaml

Promtail 记录所有日志的消费偏移量,定期写入由 promtail_positions 指定的文件。