Patroni环境变量配置详解:全方位掌握高可用PostgreSQL集群管理
概述
Patroni作为PostgreSQL高可用解决方案的核心组件,提供了丰富的环境变量配置选项。这些环境变量能够覆盖配置文件中的参数设置,为运维人员提供了更灵活的部署方式。本文将全面解析Patroni支持的环境变量,帮助您更好地理解和运用这一强大工具。
全局配置变量
Patroni提供了一组影响整个系统行为的全局环境变量:
- PATRONI_CONFIGURATION:允许通过JSON格式的字符串直接设置完整的Patroni配置。当使用此变量时,其他所有环境变量都将被忽略
- PATRONI_NAME:指定当前Patroni实例运行的节点名称,必须在集群中保持唯一
- PATRONI_NAMESPACE:定义配置存储中的路径,Patroni将在此路径下保存集群信息,默认为"/service"
- PATRONI_SCOPE:设置集群名称,用于区分不同的PostgreSQL集群
日志系统配置
Patroni的日志系统提供了细粒度的控制选项:
-
日志格式与级别
PATRONI_LOG_TYPE
:支持plain(纯文本)和json两种格式,使用json格式需要安装jsonlogger扩展PATRONI_LOG_LEVEL
:设置日志级别,默认为INFOPATRONI_LOG_TRACEBACK_LEVEL
:控制回溯信息的显示级别,默认为ERROR
-
日志输出控制
PATRONI_LOG_FORMAT
:自定义日志格式字符串,支持LogRecord属性PATRONI_LOG_DATEFORMAT
:设置日期时间格式PATRONI_LOG_STATIC_FIELDS
:仅JSON格式有效,可添加静态字段到日志中
-
日志文件管理
PATRONI_LOG_DIR
:指定日志目录,需确保目录存在且可写PATRONI_LOG_FILE_NUM
:保留的日志文件数量PATRONI_LOG_FILE_SIZE
:触发日志轮换的文件大小(字节)
分布式协调服务配置
Patroni支持多种分布式协调服务,每种服务都有特定的环境变量:
Consul配置
- 连接参数:
PATRONI_CONSUL_HOST
,PATRONI_CONSUL_URL
,PATRONI_CONSUL_PORT
- 安全认证:
PATRONI_CONSUL_TOKEN
,PATRONI_CONSUL_CACERT
,PATRONI_CONSUL_CERT
,PATRONI_CONSUL_KEY
- 服务注册:
PATRONI_CONSUL_REGISTER_SERVICE
,PATRONI_CONSUL_SERVICE_TAGS
Etcd配置
- 连接参数:
PATRONI_ETCD_URL
,PATRONI_ETCD_HOSTS
,PATRONI_ETCD_PROXY
- 安全认证:
PATRONI_ETCD_USERNAME
,PATRONI_ETCD_PASSWORD
,PATRONI_ETCD_CACERT
- 服务发现:
PATRONI_ETCD_SRV
,PATRONI_ETCD_SRV_SUFFIX
ZooKeeper配置
- 连接参数:
PATRONI_ZOOKEEPER_HOSTS
- SSL配置:
PATRONI_ZOOKEEPER_USE_SSL
,PATRONI_ZOOKEEPER_CACERT
- 访问控制:
PATRONI_ZOOKEEPER_SET_ACLS
,PATRONI_ZOOKEEPER_AUTH_DATA
Kubernetes集成配置
在Kubernetes环境中运行Patroni时,以下变量特别重要:
- 服务发现:
PATRONI_KUBERNETES_BYPASS_API_SERVICE
,PATRONI_KUBERNETES_NAMESPACE
- 标签管理:
PATRONI_KUBERNETES_LABELS
,PATRONI_KUBERNETES_SCOPE_LABEL
- 角色标识:
PATRONI_KUBERNETES_ROLE_LABEL
,PATRONI_KUBERNETES_LEADER_LABEL_VALUE
- 端点配置:
PATRONI_KUBERNETES_USE_ENDPOINTS
,PATRONI_KUBERNETES_POD_IP
PostgreSQL相关配置
这些变量控制Patroni如何管理PostgreSQL实例:
-
连接设置
PATRONI_POSTGRESQL_LISTEN
:PostgreSQL监听地址PATRONI_POSTGRESQL_CONNECT_ADDRESS
:其他节点访问PostgreSQL的地址PATRONI_POSTGRESQL_PROXY_ADDRESS
:连接池(如pgbouncer)地址
-
目录与二进制文件
PATRONI_POSTGRESQL_DATA_DIR
:PostgreSQL数据目录PATRONI_POSTGRESQL_BIN_DIR
:PostgreSQL二进制文件路径- 可单独指定各二进制文件名称:
PATRONI_POSTGRESQL_BIN_PG_CTL
等
-
复制配置
PATRONI_REPLICATION_USERNAME
:复制用户名PATRONI_REPLICATION_PASSWORD
:复制密码PATRONI_REPLICATION_SSLMODE
:复制连接的SSL模式
最佳实践建议
- 安全配置:对于生产环境,务必配置SSL/TLS相关参数,如
PATRONI_ETCD_CACERT
等 - 日志管理:建议使用JSON格式日志并配置适当的日志轮换策略
- Kubernetes集成:合理设置标签和命名空间,确保多集群环境隔离
- 连接池配置:通过
PATRONI_POSTGRESQL_PROXY_ADDRESS
暴露连接池地址
通过合理配置这些环境变量,您可以充分发挥Patroni的管理能力,构建稳定可靠的PostgreSQL高可用集群。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考