Patroni集群新增节点后pg_hba.conf认证失败问题求助
解决Patroni新增节点连接Leader时的pg_hba认证错误
从你提供的日志和配置来看,核心问题是新增节点(10.150.33.112)尝试连接Leader(10.150.33.13)时,Leader的pg_hba.conf里没有对应的允许条目——尽管你已经在Patroni配置中添加了该规则。下面是几个针对性的排查和解决思路:
1. 验证Leader节点的pg_hba.conf是否已同步Patroni配置
Patroni会自动管理PostgreSQL的pg_hba.conf,但偶尔可能出现配置未同步的情况:
- 登录到Leader节点(nsdb03/10.150.33.13),找到PostgreSQL的pg_hba.conf文件(常见路径如
/var/lib/postgresql/<你的PG版本>/main/pg_hba.conf,或根据你的部署调整)。 - 检查文件中是否存在这条规则:
host replication repl 10.150.33.112/24 md5。 - 如果没有,执行
patronictl reload <你的集群名称>触发Patroni同步配置,或者重启Leader节点的Patroni服务:systemctl restart patroni。
2. 确认Patroni配置的正确性与加载状态
- 检查新增节点(10.150.33.112)上的Patroni配置文件权限:确保Patroni运行用户(通常是
patroni)有读取该配置的权限,避免因权限问题导致配置未被加载。 - 仔细核对Patroni配置中的pg_hba条目:确认112节点的IP和掩码(
10.150.33.112/24)没有拼写错误,比如是否把112写成了其他数字。
3. 检查Leader节点的PostgreSQL监听配置
如果Leader的PostgreSQL没有监听10.150.33.13这个IP,即使pg_hba允许也会出现连接问题:
- 查看Leader节点的postgresql.conf中的
listen_addresses参数,确认它包含10.150.33.13或设置为*(允许所有IP监听)。 - 如果需要调整,可以在Patroni配置的
postgresql.parameters中添加listen_addresses: '*',然后重新加载配置。
4. 验证Repl用户的权限
确保repl用户拥有正确的复制权限:
- 在Leader节点执行SQL查询:
SELECT rolname, rolreplication FROM pg_roles WHERE rolname='repl'; - 确认返回的
rolreplication值为true,如果不是,执行ALTER ROLE repl WITH REPLICATION;赋予权限。
5. 排查网络与防火墙干扰
虽然日志明确是pg_hba认证错误,但还是可以快速验证网络连通性:
- 在新增节点执行
nc -zv 10.150.33.13 5432或telnet 10.150.33.13 5432,确认5432端口是否能正常访问,避免因防火墙规则阻断连接导致的间接认证报错。
内容的提问来源于stack exchange,提问作者Larry G. Wapnitsky
相关产品推荐
相关产品推荐

