在 Ubuntu 上实现 pgAdmin 的负载均衡
核心思路
- pgAdmin 是 PostgreSQL 的管理与监控工具,本身不提供数据库连接的负载均衡能力。应在数据库前部署专用负载均衡器(如 HAProxy、Nginx),让 pgAdmin 连接到负载均衡器的虚拟地址/域名与端口,由负载均衡器将连接分发到后端 PostgreSQL 节点。若需要管理多台数据库,可在 pgAdmin 中为每个节点单独建“服务器”对象,或仅连接到负载均衡器统一接入。
方案一 HAProxy TCP 转发(推荐)
- 适用:面向 PostgreSQL 原生协议(TCP 5432) 的连接负载均衡与故障剔除。
- 安装与启用
- sudo apt update && sudo apt install -y haproxy
- sudo systemctl enable --now haproxy
- 配置示例 /etc/haproxy/haproxy.cfg(关键片段)
- global
- log /dev/log local0
- log /dev/log local1 notice
- daemon
- defaults
- log global
- mode tcp
- option tcplog
- timeout connect 5000ms
- timeout client 50000ms
- timeout server 50000ms
- frontend postgres_front
- bind *:5432
- default_backend postgres_back
- backend postgres_back
- balance roundrobin
- server pg1 192.168.1.101:5432 check inter 2000 rise 2 fall 3
- server pg2 192.168.1.102:5432 check inter 2000 rise 2 fall 3
- 说明
- 使用 TCP 模式 与 健康检查(inter 检查间隔、rise 判定恢复、fall 判定故障),可自动剔除异常节点。
- 保存后执行:sudo systemctl reload haproxy;验证:ss -lntp | grep 5432。
方案二 Nginx Stream 模块 TCP 转发(可选)
- 适用:已在环境中使用 Nginx,希望统一用 Nginx 做四层转发。
- 安装与启用
- sudo apt update && sudo apt install -y nginx
- sudo systemctl enable --now nginx
- 配置示例 /etc/nginx/nginx.conf(顶层加入 stream,与 http 同级)
- stream {
upstream postgres_backend {
server 192.168.1.101:5432;
server 192.168.1.102:5432;
}
server {
listen 5432;
proxy_pass postgres_backend;
proxy_timeout 1h;
proxy_connect_timeout 10s;
}
}
- 说明
- 需确保 Nginx 编译时包含 –with-stream;保存后执行:sudo systemctl reload nginx。
在 pgAdmin 中连接负载均衡器
- 访问 pgAdmin Web(默认 http://:5050),登录后:Servers → Create → Server。
- General:填写名称(如 “Load Balanced PostgreSQL”)。
- Connection:
- Host name/address:填入负载均衡器的 IP/域名(如 192.168.1.100 或 lb.example.com)。
- Port:5432(与负载均衡器监听端口一致)。
- Username/Password:使用具备访问权限的 PostgreSQL 账号凭据。
- 保存后,pgAdmin 通过该地址与端口连接,由负载均衡器分发到后端数据库节点。
关键注意事项与最佳实践
- 数据一致性与读写策略
- 负载均衡器仅分发连接,需确保后端 PostgreSQL 数据一致(如 流复制 搭建主从/集群)。写操作通常指向 主库,读操作可指向 从库;若需自动读写分离,建议在数据库前再叠加 Pgpool-II 等中间件,由中间件承担读写分离与连接管理,pgAdmin 仅连接中间件地址。
- 安全性
- 启用 SSL/TLS(客户端连接串设置 sslmode=require),并在负载均衡器或防火墙层限制来源 IP。
- 高可用
- 为负载均衡器本身配置 Keepalived VIP 漂移,避免单点故障(VIP 对外提供 5432 服务,后端 HAProxy/Nginx 双机热备)。
- 监控与验证
- 监控 连接数、延迟、复制延迟 等指标;在 HAProxy 状态页/日志中观察后端 UP/DOWN 与切换情况,确保故障节点能被及时剔除与恢复。