NODES配置


    节点身份参数

    表示此节点为元节点, 类型:bool,层级:C,默认值为:false

    在配置清单中,meta分组下的节点默认带有此标记。带有此标记的节点会在节点软件包安装时进行额外的配置: 安装指定的RPM软件包,并安装node_packages_meta_pip指定的Python软件包。

    nodename

    指定节点名, 类型:string,层级:I,默认值为空。

    该选项可为节点显式指定名称,只在节点实例层次定义才有意义。使用默认空值或空字符串意味着不为节点指定名称,直接使用现有的 Hostname 作为节点名。

    节点名nodename将在Pigsty监控系统中,用作节点实例的名称(ins标签)。此外,如果 nodename_overwrite 为真,节点名还会用作HOSTNAME。

    备注:若启用 选项,则Pigsty会在初始化节点时,借用当前节点上一一对应PG实例的身份参数,如pg-test-1,作为节点名。

    node_cluster

    节点集群名,类型:string,层级:C,默认值为:"nodes"

    该选项可为节点显式指定一个集群名称,通常在节点集群层次定义才有意义。使用默认空值将直接使用固定值nodes作为节点集群标识。

    节点集群名node_cluster将在Pigsty监控系统中,用作节点集群的标签(cls)。

    备注:若启用 选项,则Pigsty会在初始化节点时,借用当前节点上一一对应PG集群的身份参数,如pg-test,作为节点集群名。

    nodename_overwrite

    是否用节点名覆盖机器HOSTNAME, 类型:bool,层级:C,默认值为:true

    布尔类型,默认为真,为真时,非空的节点名 将覆盖节点的当前主机名称。

    如果 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中。

    如果用户希望在全局配置基础设施地址,则可以使用 参数,使用本参数添加集群/实例特定的静态DNS记录。

    node_etc_hosts_default

    默认写入所有节点的静态DNS记录, 类型:string[],层级:G,,默认值为Pigsty管理节点的域名解析记录:

    您应当确保向/etc/hosts中写入10.10.10.10 pigsty yum.pigsty这样的DNS记录,确保在DNS Nameserver启动之前便可以采用域名的方式访问本地yum源。

    如果用户希望为单个集群与实例配置特定的静态DNS解析,则可以使用 参数。

    node_dns_method

    如何配置DNS服务器?, 类型:enum,层级:C,默认值为:"add"

    机器节点默认的动态DNS服务器的配置方式,有三种模式:

    • add:将 中的记录追加至/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请求。

    1. node_dns_servers: # dynamic nameserver in /etc/resolv.conf

    node_dns_options

    如果 配置为addoverwrite,则本配置项中的记录会被追加或覆盖至/etc/resolv.conf中。具体格式请参考Linux文档关于/etc/resolv.conf的说明

    Pigsty默认添加的解析选项为:

    1. - options single-request-reopen timeout:1 rotate
    2. - 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_packages

    节点安装的软件列表, 类型:string[],层级:C,默认值为空列表:[]

    通过yum安装的额外软件包列表,每个数组元素为软件包名称,您可以在每一个元素中都指定一个逗号分隔的软件列表,软件包会依次安装。

    默认在全局所有节点上安装的软件包通过参数 node_packages_default 进行配置,本参数可用于配置集群/节点特定的软件包。

    node_packages 类似,前者通常是全局统一配置,而 则是针对具体节点进行例外处理。 例如,您可以为运行PG的节点安装额外的工具包。该变量通常在集群级别进行覆盖定义。

    node_packages_default

    1. node_packages_meta: # packages for meta nodes only
    2. - grafana,prometheus2,alertmanager,loki,nginx_exporter,blackbox_exporter,pushgateway,redis,postgresql14
    3. - nginx,ansible,pgbadger,python-psycopg2,dnsmasq,polysh,coreutils,diffutils

    软件包列表为数组,但每个元素可以包含由逗号分隔的多个软件包,Pigsty默认安装的软件包列表如下:

    node_packages_meta

    元节点所需的软件列表, 类型:string[],层级:G,默认值为:

    1. node_packages_meta: # packages for meta nodes only
    2. - grafana,prometheus2,alertmanager,loki,nginx_exporter,blackbox_exporter,pushgateway,redis,postgresql14
    3. - nginx,ansible,pgbadger,python-psycopg2,dnsmasq,polysh,coreutils,diffutils

    node_packages_default类似,但中列出的软件包只会在元节点上安装,通常在元节点上使用的基础设施软件需要在此指定

    node_packages_meta_pip

    元节点上通过pip3安装的软件包, 类型:string,层级:G,默认值为:"jupyterlab"

    软件包会下载至/{{ repo_name }}/python目录后统一安装。

    目前默认会安装jupyterlab,提供完整的Python运行时环境。


    主机节点特性、内核模块与调优模板

    关闭节点防火墙, 类型: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_tune

    节点调优模式, 类型:enum,层级:C,默认值为:"tiny"

    针对机器进行调优的预制方案,基于tuned服务。有四种预制模式:

    • tiny:微型虚拟机
    • oltp:常规OLTP模板,优化延迟
    • olap:常规OLAP模板,优化吞吐量
    • crit:核心金融业务模板,优化脏页数量

    通常,数据库的调优模板 pg_conf应当与机器调优模板配套,详情请参考。

    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_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

    节点时区与时间同步。

    node_timezone

    NTP时区设置, 类型:,层级:C,默认值为空。

    在Demo中,默认使用的时区为"Asia/Hong_Kong",请根据您的实际情况调整。(请不要使用Asia/Shanghai时区,该时区缩写 CST 会导致一系列日志时区解析问题)

    如果选择 false,或者留空,则Pigsty不会修改该节点的时区配置。

    是否配置NTP服务?, 类型:bool,层级:C,默认值为:true

    为真时,Pigsty会覆盖节点的/etc/ntp.conf/etc/chrony.conf,填入 指定的NTP服务器。

    如果您的服务器节点已经配置好有NTP服务器,则建议关闭,使用原有NTP服务器。

    node_ntp_service

    NTP服务类型:ntpchrony, 类型:enum,层级:C,默认值为:"ntp"

    指明系统使用的NTP服务类型,默认使用 ntp 作为时间服务:

    • ntp:传统NTP服务
    • chrony:CentOS 7/8默认使用的时间服务

    只有当 为真时生效。

    node_ntp_servers

    NTP服务器列表, 类型:string[],层级:C,默认值为:

    1. - pool cn.pool.ntp.org iburst
    2. - pool pool.ntp.org iburst
    3. - pool time.pool.aliyun.com iburst
    4. - server 10.10.10.10 iburst

    只有当 为真时生效。

    node_crontab_overwrite

    是否覆盖节点的Crontab, 类型:bool,层级:C/I,默认值为true

    如果启用, 中的记录会整体覆盖 /etc/crontab 而不是追加写入。

    node_crontab

    节点定时任务列表, 类型:string[],层级:C/I,默认值为空数组[]

    在此列表的每的一个元素都是一条记录,写入 /etc/crontab中,例如:

    1. 00 01 * * * postgres /pg/bin/pg-backup 2>>/pg/log/backup.log

    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

    主机日志收集组件,与基础设施配置配套使用。

    promtail_enabled

    是否启用Promtail日志收集服务, 类型:bool,层级:C,默认值为:true

    布尔类型,是否在当前节点启用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 指定的文件中。