Patroni环境变量配置详解
概述
Patroni是一个用于管理PostgreSQL高可用集群的工具,它支持通过环境变量来覆盖配置文件中的参数设置。这种方式在容器化部署和自动化运维场景中特别有用,可以避免频繁修改配置文件。
全局配置变量
Patroni提供了一些全局性的环境变量配置:
- PATRONI_CONFIGURATION:允许通过单个环境变量设置完整的Patroni配置,使用JSON格式。如果设置了此变量,其他环境变量将被忽略。
- PATRONI_NAME:当前Patroni实例运行的节点名称,必须在集群中保持唯一。
- PATRONI_NAMESPACE:配置存储中的路径,Patroni将在此路径下保存集群信息,默认值为"/service"。
- PATRONI_SCOPE:集群名称,用于区分不同的Patroni集群。
日志配置
Patroni提供了丰富的日志配置选项:
-
日志格式与级别
- PATRONI_LOG_TYPE:支持plain(纯文本)和json两种格式
- PATRONI_LOG_LEVEL:设置日志级别(DEBUG, INFO, WARNING等)
- PATRONI_LOG_TRACEBACK_LEVEL:设置显示堆栈跟踪的日志级别
-
日志输出控制
- PATRONI_LOG_DIR:指定日志目录
- PATRONI_LOG_FILE_NUM:保留的日志文件数量
- PATRONI_LOG_FILE_SIZE:单个日志文件大小限制(字节)
-
高级日志配置
- PATRONI_LOG_LOGGERS:按模块设置日志级别
- PATRONI_LOG_DEDUPLICATE_HEARTBEAT_LOGS:是否去重心跳日志
分布式协调服务配置
Patroni支持多种分布式协调服务,每种服务都有特定的环境变量配置:
Consul配置
- PATRONI_CONSUL_HOST:Consul代理地址
- PATRONI_CONSUL_URL:Consul代理URL
- PATRONI_CONSUL_TOKEN:ACL令牌
- PATRONI_CONSUL_REGISTER_SERVICE:是否注册服务
Etcd配置
- PATRONI_ETCD_URL:etcd服务URL
- PATRONI_ETCD_HOSTS:etcd端点列表
- PATRONI_ETCD_CACERT:CA证书路径
- PATRONI_ETCD_CERT:客户端证书路径
ZooKeeper配置
- PATRONI_ZOOKEEPER_HOSTS:ZooKeeper集群成员列表
- PATRONI_ZOOKEEPER_USE_SSL:是否使用SSL
- PATRONI_ZOOKEEPER_SET_ACLS:设置ZNode ACL
Kubernetes集成
在Kubernetes环境中运行Patroni时,可以使用以下配置:
- PATRONI_KUBERNETES_NAMESPACE:Pod所在的命名空间
- PATRONI_KUBERNETES_LABELS:用于查找集群相关对象的标签
- PATRONI_KUBERNETES_USE_ENDPOINTS:是否使用Endpoints代替ConfigMaps
- PATRONI_KUBERNETES_POD_IP:Pod的IP地址
PostgreSQL相关配置
Patroni管理PostgreSQL实例的相关配置:
-
连接配置
- PATRONI_POSTGRESQL_LISTEN:PostgreSQL监听地址
- PATRONI_POSTGRESQL_CONNECT_ADDRESS:外部访问地址
- PATRONI_POSTGRESQL_PROXY_ADDRESS:连接池访问地址
-
目录与二进制文件
- PATRONI_POSTGRESQL_DATA_DIR:数据目录
- PATRONI_POSTGRESQL_BIN_DIR:PostgreSQL二进制文件目录
- PATRONI_POSTGRESQL_BIN_PG_CTL:自定义pg_ctl命令名称
最佳实践
-
生产环境建议:
- 为关键组件(如etcd)配置TLS证书
- 设置适当的日志级别和日志轮转策略
- 为Kubernetes环境配置适当的标签和命名空间
-
调试建议:
- 调试时可设置PATRONI_LOG_LEVEL=DEBUG
- 设置PATRONI_LOG_TRACEBACK_LEVEL=DEBUG以获取详细错误信息
-
安全建议:
- 不要将敏感信息(如密码)直接放在环境变量中
- 使用Kubernetes Secrets或类似机制管理敏感数据
通过合理配置这些环境变量,可以灵活地管理Patroni集群,适应各种部署环境和运维需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考