NODES配置
Pigsty提供了完整的主机置备与监控功能,执行 nodes.yml 剧本即可将对应节点配置为对应状态,并纳入Pigsty监控系统。
- NODE_IDENTITY : 节点身份参数与主机名
- NODE_DNS : 节点域名解析,配置静态DNS记录与动态解析
- NODE_PACKAGE : 节点软件源与软件包
- NODE_TUNE : 节点功能特性与参数调优
- NODE_ADMIN : 节点管理员
- NODE_TIME : 节点时区/NTP/定时任务
- DOCKER : 节点Docker管理
- NODE_EXPORTER : 节点指标暴露器
- PROMTAIL : 节点日志收集组件
NODE_IDENTITY
节点身份参数
meta_node
表示此节点为元节点, 类型:bool
,层级:C,默认值为:false
在配置清单中,meta
分组下的节点默认带有此标记。带有此标记的节点会在节点软件包安装时进行额外的配置: 安装node_packages_meta指定的RPM软件包,并安装node_packages_meta_pip指定的Python软件包。
nodename
指定节点名, 类型:string
,层级:I,默认值为空。
该选项可为节点显式指定名称,只在节点实例层次定义才有意义。使用默认空值或空字符串意味着不为节点指定名称,直接使用现有的 Hostname 作为节点名。
节点名nodename
将在Pigsty监控系统中,用作节点实例的名称(ins
标签)。此外,如果 nodename_overwrite 为真,节点名还会用作HOSTNAME。
备注:若启用pg_hostname 选项,则Pigsty会在初始化节点时,借用当前节点上一一对应PG实例的身份参数,如pg-test-1
,作为节点名。
node_cluster
节点集群名,类型:string
,层级:C,默认值为:"nodes"
。
该选项可为节点显式指定一个集群名称,通常在节点集群层次定义才有意义。使用默认空值将直接使用固定值nodes
作为节点集群标识。
节点集群名node_cluster
将在Pigsty监控系统中,用作节点集群的标签(cls
)。
备注:若启用pg_hostname 选项,则Pigsty会在初始化节点时,借用当前节点上一一对应PG集群的身份参数,如pg-test
,作为节点集群名。
nodename_overwrite
是否用节点名覆盖机器HOSTNAME, 类型:bool
,层级:C,默认值为:true
布尔类型,默认为真,为真时,非空的节点名 nodename 将覆盖节点的当前主机名称。
如果 nodename 参数未定义,为空或为空字符串,则不会对主机名进行修改。
nodename_exchange
是否在剧本节点间交换主机名, 类型:bool
,层级:C,默认值为:false
启用此参数时,同一组执行 nodes.yml 剧本的节点之间,会相互交换节点名称,写入/etc/hosts
中。
NODE_DNS
Pigsty会为节点配置静态DNS解析记录与动态DNS服务器。
如果您的节点供应商已经为您配置了DNS服务器,您可以将 node_dns_method 设置为 none
跳过DNS设置。
node_etc_hosts
写入节点的静态DNS解析, 类型:string[]
,层级:C/I,默认值为空数组 []
。
node_etc_hosts 是一个数组,每一个元素都是形如ip domain_name
的字符串,代表一条DNS解析记录,每一条记录都会在机器节点初始化时写入/etc/hosts
中。
如果用户希望在全局配置基础设施地址,则可以使用 node_etc_hosts_default 参数,使用本参数添加集群/实例特定的静态DNS记录。
node_etc_hosts_default
默认写入所有节点的静态DNS记录, 类型:string[]
,层级:G,,默认值为Pigsty管理节点的域名解析记录:
node_etc_hosts_default: # static dns records in /etc/hosts
- 10.10.10.10 meta pigsty c.pigsty g.pigsty l.pigsty p.pigsty a.pigsty cli.pigsty lab.pigsty api.pigsty
您应当确保向/etc/hosts
中写入10.10.10.10 pigsty yum.pigsty
这样的DNS记录,确保在DNS Nameserver启动之前便可以采用域名的方式访问本地yum源。
如果用户希望为单个集群与实例配置特定的静态DNS解析,则可以使用 node_etc_hosts 参数。
node_dns_method
如何配置DNS服务器?, 类型:enum
,层级:C,默认值为:"add"
机器节点默认的动态DNS服务器的配置方式,有三种模式:
add
:将 node_dns_servers 中的记录追加至/etc/resolv.conf
,并保留已有DNS服务器。(默认)overwrite
:使用将 node_dns_servers 中的记录覆盖/etc/resolv.conf
none
:跳过DNS服务器配置,如果您的环境中已经配置有DNS服务器,则可以跳过。
node_dns_servers
配置动态DNS服务器列表, 类型:string[]
,层级:C,默认值为 10.10.10.10
Pigsty默认会添加元节点作为DNS Server,元节点上的DNSMASQ会响应环境中的DNS请求。
node_dns_servers: # dynamic nameserver in /etc/resolv.conf
- 10.10.10.10
node_dns_options
如果 node_dns_method 配置为add
或overwrite
,则本配置项中的记录会被追加或覆盖至/etc/resolv.conf
中。具体格式请参考Linux文档关于/etc/resolv.conf
的说明
Pigsty默认添加的解析选项为:
- options single-request-reopen timeout:1 rotate
- domain service.consul
NODE_PACKAGE
Pigsty会为纳入管理的节点配置Yum源,并安装软件包。
node_repo_method
节点使用Yum源的方式, 类型:enum
,层级:C,默认值为:"local"
机器节点Yum软件源的配置方式,有三种模式:
local
:使用元节点上的本地Yum源,默认行为,推荐使用此方式。public
:直接使用互联网源安装,将repo_upstream
中的公共repo写入/etc/yum.repos.d/
none
:不对本地源进行配置与修改。
node_repo_remove
是否移除节点已有Yum源, 类型:bool
,层级:C,默认值为:true
如何处理节点上原有YUM源?如果启用,则Pigsty会移除 节点上/etc/yum.repos.d
中原有的配置文件,并备份至/etc/yum.repos.d/backup
node_repo_local_urls
本地源的URL地址, 类型:url[]
,层级:C,默认值为:
如果 node_repo_method 配置为local
,则这里列出的Repo文件URL会被下载至/etc/yum.repos.d
中
这里是一个Repo File URL 构成的数组,Pigsty默认会将元节点上的本地Yum源加入机器的源配置中。
node_repo_local_urls:
- http://yum.pigsty/pigsty.repo
node_packages
节点安装的软件列表, 类型:string[]
,层级:C,默认值为空列表:[]
通过yum安装的额外软件包列表,每个数组元素为软件包名称,您可以在每一个元素中都指定一个逗号分隔的软件列表,软件包会依次安装。
默认在全局所有节点上安装的软件包通过参数 node_packages_default 进行配置,本参数可用于配置集群/节点特定的软件包。
node_packages_default与node_packages 类似,前者通常是全局统一配置,而 node_packages 则是针对具体节点进行例外处理。 例如,您可以为运行PG的节点安装额外的工具包。该变量通常在集群级别进行覆盖定义。
node_packages_default
节点安装软件列表, 类型:string[]
,层级:C,默认值为:
node_packages_meta: # packages for meta nodes only
- grafana,prometheus2,alertmanager,loki,nginx_exporter,blackbox_exporter,pushgateway,redis,postgresql14
- nginx,ansible,pgbadger,python-psycopg2,dnsmasq,polysh,coreutils,diffutils
软件包列表为数组,但每个元素可以包含由逗号分隔的多个软件包,Pigsty默认安装的软件包列表如下:
node_packages_meta
元节点所需的软件列表, 类型:string[]
,层级:G,默认值为:
node_packages_meta: # packages for meta nodes only
- grafana,prometheus2,alertmanager,loki,nginx_exporter,blackbox_exporter,pushgateway,redis,postgresql14
- nginx,ansible,pgbadger,python-psycopg2,dnsmasq,polysh,coreutils,diffutils
与node_packages_default类似,但node_packages_meta中列出的软件包只会在元节点上安装,通常在元节点上使用的基础设施软件需要在此指定
node_packages_meta_pip
元节点上通过pip3安装的软件包, 类型:string
,层级:G,默认值为:"jupyterlab"
软件包会下载至{{ nginx_home }}/{{ repo_name }}/python
目录后统一安装。
目前默认会安装jupyterlab
,提供完整的Python运行时环境。
NODE_TUNE
主机节点特性、内核模块与调优模板
node_disable_firewall
关闭节点防火墙, 类型:bool
,层级:C,默认值为:true
,请保持关闭。
node_disable_selinux
关闭节点SELINUX, 类型:bool
,层级:C,默认值为:true
,请保持关闭。
node_disable_numa
关闭节点NUMA, 类型:bool
,层级:C,默认值为:false
布尔标记,是否关闭NUMA,默认不关闭。注意,关闭NUMA需要重启机器后方可生效!
如果您不清楚如何绑核,在生产环境使用数据库时建议关闭NUMA。
node_disable_swap
关闭节点SWAP, 类型:bool
,层级:C,默认值为:false
通常情况下不建议关闭SWAP,如果您有足够的内存,且数据库采用独占式部署,则可以关闭SWAP提高性能。
当您的节点用于部署Kubernetes时,应当禁用SWAP。
node_static_network
是否使用静态DNS服务器, 类型:bool
,层级:C,默认值为:true
,默认启用。
启用静态网络,意味着您的DNS Resolv配置不会因为机器重启与网卡变动被覆盖。建议启用。
node_disk_prefetch
是否启用磁盘预读, 类型:bool
,层级:C,默认值为:false
,默认不启用。
针对HDD部署的实例可以优化吞吐量,使用HDD时建议启用。
node_kernel_modules
启用的内核模块, 类型:string[]
,层级:C,默认值为:
由内核模块名称组成的数组,声明了需要在节点上安装的内核模块,Pigsty默认会启用以下内核模块:
node_kernel_modules: [ softdog, ip_vs, ip_vs_rr, ip_vs_rr, ip_vs_wrr, ip_vs_sh ]
node_tune
节点调优模式, 类型:enum
,层级:C,默认值为:"tiny"
针对机器进行调优的预制方案,基于tuned
服务。有四种预制模式:
tiny
:微型虚拟机oltp
:常规OLTP模板,优化延迟olap
:常规OLAP模板,优化吞吐量crit
:核心金融业务模板,优化脏页数量
通常,数据库的调优模板 pg_conf应当与机器调优模板配套,详情请参考定制PGSQL模版。
node_sysctl_params
操作系统内核参数, 类型:dict
,层级:C,默认值为空字典。字典KV结构,Key为内核sysctl
参数名,Value为参数值。
NODE_ADMIN
主机节点管理用户
node_data_dir
节点的数据盘挂载路径, 类型:path
,层级:C,默认值为:/data
如果指定,则该路径将作为节点的主数据库盘,如果该目录不存在,则该目录会被创建并抛出提示信息。
默认情况下,该目录属主为root
,模式为0777
。
node_admin_enabled
是否创建管理员用户, 类型:bool
,层级:G,默认值为:true
是否在每个节点上创建管理员用户(免密sudo与ssh),默认会创建名为dba (uid=88)
的管理用户,可以从元节点上通过SSH免密访问环境中的其他节点并执行免密sudo。
node_admin_uid
管理员用户UID, 类型:int
,层级:G,默认值为:88
,手工分配时请注意UID命名空间冲突。
node_admin_username
管理员用户名, 类型:string
,层级:G,默认值为:"dba"
node_admin_ssh_exchange
在实例间交换节点管理员SSH密钥, 类型:bool
,层级:C,默认值为:true
启用时,Pigsty会在执行剧本时,在成员间交换SSH公钥,允许管理员 node_admin_username 从不同节点上相互访问。
node_admin_pk_current
是否将当前节点&用户的公钥加入管理员账户, 类型:bool
,层级:A,默认值为:true
启用时,将当前节点上,当前用户的SSH公钥(~/.ssh/id_rsa.pub
)会被拷贝至目标节点管理员用户的authorized_keys
中。
生产环境部署时,请务必注意此参数,此参数会将当前执行命令用户的默认公钥安装至所有机器的管理用户上。
node_admin_pk_list
可登陆管理员的公钥列表, 类型:key[]
,层级:C,默认值为空数组,Demo中有vagrant
用户默认的公钥。
数组,每一个元素为字符串,内容为写入到管理员用户~/.ssh/authorized_keys
中的密钥,持有对应私钥的用户可以以管理员身份登录。
生产环境部署时,请务必注意此参数,仅将信任的密钥加入此列表中。
NODE_TIME
节点时区与时间同步。
如果您的节点已经配置有NTP服务器,则可以配置 node_ntp_enabled 为 false
,跳过NTP服务的设置。
node_timezone
NTP时区设置, 类型:string
,层级:C,默认值为空。
在Demo中,默认使用的时区为"Asia/Hong_Kong"
,请根据您的实际情况调整。(请不要使用Asia/Shanghai
时区,该时区缩写 CST 会导致一系列日志时区解析问题)
如果选择 false
,或者留空,则Pigsty不会修改该节点的时区配置。
node_ntp_enabled
是否配置NTP服务?, 类型:bool
,层级:C,默认值为:true
为真时,Pigsty会覆盖节点的/etc/ntp.conf
或 /etc/chrony.conf
,填入 node_ntp_servers 指定的NTP服务器。
如果您的服务器节点已经配置好有NTP服务器,则建议关闭,使用原有NTP服务器。
node_ntp_service
NTP服务类型:ntp
或 chrony
, 类型:enum
,层级:C,默认值为:"ntp"
指明系统使用的NTP服务类型,默认使用 ntp
作为时间服务:
ntp
:传统NTP服务chrony
:CentOS 7/8默认使用的时间服务
只有当 node_ntp_enabled 为真时生效。
node_ntp_servers
NTP服务器列表, 类型:string[]
,层级:C,默认值为:
- pool cn.pool.ntp.org iburst
- pool pool.ntp.org iburst
- pool time.pool.aliyun.com iburst
- server 10.10.10.10 iburst
只有当 node_ntp_enabled 为真时生效。
node_crontab_overwrite
是否覆盖节点的Crontab, 类型:bool
,层级:C/I,默认值为true
。
如果启用,node_crontab 中的记录会整体覆盖 /etc/crontab
而不是追加写入。
node_crontab
节点定时任务列表, 类型:string[]
,层级:C/I,默认值为空数组[]
。
在此列表的每的一个元素都是一条记录,写入 /etc/crontab
中,例如:
00 01 * * * postgres /pg/bin/pg-backup 2>>/pg/log/backup.log
DOCKER
Pigsty默认在所有元节点上启用Docker,而普通节点不启用。
docker_enabled
是否在当前节点启用Docker?类型:bool
,层级:C
,默认值为false
,但元节点默认为true
。
docker_cgroups_driver
Docker使用的CGroup驱动,类型:string
,层级:C
,默认为systemd
。
docker_registry_mirrors
Docker使用的镜像仓库地址,类型:string[]
,层级:C
,默认为空,即直接使用 DockerHub。
docker_image_cache
本地的Docker镜像离线缓存包,类型:path
,层级:C
,默认为:/www/pigsty/docker.tar.lz4
如果存在时,配置Docker时会自动加载至本地Docker中。
NODE_EXPORTER
NodeExporter用于从主机上收集监控指标数据。
node_exporter_enabled
启用节点指标收集器, 类型:bool
,层级:C,默认值为:true
node_exporter_port
节点指标暴露端口, 类型:int
,层级:C,默认值为:9100
node_exporter_options
节点指标采集选项, 类型:string
,层级:C/I,默认值为:"--no-collector.softnet --no-collector.nvme --collector.ntp --collector.tcpstat --collector.processes"
Pigsty默认会启用ntp
, tcpstat
, processes
三个额外的指标收集器,禁用 softnet
, nvme
两个默认的指标收集器。
PROMTAIL
主机日志收集组件,与Loki基础设施配置配套使用。
promtail_enabled
是否启用Promtail日志收集服务, 类型:bool
,层级:C,默认值为:true
布尔类型,是否在当前节点启用Promtail日志收集服务?默认启用。
启用 promtail 后,Pigsty会根据配置清单中的定义,生成Promtail的配置文件,抓取下列日志并发送至由loki_endpoint指定的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/data/log/*.csv
patroni
:/pg/log/patroni.log
pgbouncer
:/var/log/pgbouncer/pgbouncer.log
REDIS
: Redis日志,当节点定义有redis_cluster
时收集。redis
:/var/log/redis/*.log
promtail_clean
是否在安装promtail时移除已有状态信息, 类型:bool
,层级:C/A,默认值为:false
默认不会清理,当您选择清理时,Pigsty会在部署Promtail时移除现有状态文件 promtail_positions,这意味着Promtail会重新收集当前节点上的所有日志并发送至Loki。
promtail_port
promtail使用的默认端口, 类型:int
,层级:G,默认值为:9080
promtail_options
promtail命令行参数, 类型:string
,层级:C/I,默认值为:"-config.file=/etc/promtail.yml -config.expand-env=true"
运行promtail二进制程序时传入的额外命令行参数,默认值为'-config.file=/etc/promtail.yml -config.expand-env=true'
。
已有参数用于指定配置文件路径,并在配置文件中展开环境变量,不建议修改。
promtail_positions
promtail状态文件路径, 类型:string
,层级:C,默认值为:"/var/log/positions.yaml"
Promtail记录了所有日志的消费偏移量,定期写入promtail_positions 指定的文件中。
最后修改 2022-05-27: init commit (1e3e284)