温馨提示×

centos上pgadmin如何实现高可用

小樊
35
2025-12-13 17:50:13
栏目: 智能运维

总体思路CentOS 上让 pgAdmin 4 具备高可用,通常采用“多实例 + 负载均衡 + 共享或外部化配置存储”的架构:部署多个 pgAdmin 实例,前置 Nginx/HAProxy 统一入口并做健康检查与自动摘除;将用户配置、会话与存储目录放到外部共享存储(如 GlusterFS/Ceph)或外部数据库,保证故障切换时数据一致;同时配套 PostgreSQL 高可用(如 Patroni/repmgr)与 TLS/监控/备份,避免数据库不可用导致管理中断。

部署架构与组件

  • 前端入口:使用 Nginx/HAProxy 作为反向代理与负载均衡,配置健康检查与会话保持,对外暴露 80/443
  • 应用层:至少 2–3 个 pgAdmin 实例 分布在不同节点,版本保持一致,统一通过负载均衡访问。
  • 数据层:将 pgAdmin 的配置与存储目录(如 /var/lib/pgadmin4)放到 GlusterFS/Ceph 等共享存储,或使用外部数据库承载配置,避免单点。
  • 被管数据库:为 PostgreSQL 配置 流复制/Patroni/repmgr 等高可用,减少因数据库故障引发的间接不可用。
  • 安全与可观测:启用 TLS/强口令,配合 Prometheus+Grafana 监控实例健康与资源使用,并定期备份。

在 CentOS 上的落地步骤

  • 安装 pgAdmin 4(服务器模式,示例为 CentOS 7/8
    • 安装 EPEL 与 PostgreSQL 官方源,执行:sudo yum install -y epel-release;sudo dnf/yum install -y pgadmin4(或 pgadmin4-web)。
    • 启用服务器模式并初始化:编辑 /usr/lib/python/site-packages/pgadmin4-web/config_distro.py*,设置 SERVER_MODE = True,指定 LOG_FILE、SQLITE_PATH、SESSION_DB_PATH、STORAGE_DIR 等目录;运行初始化脚本(如 python3 /usr/lib/python*/site-packages/pgadmin4-web/setup.py)创建管理员账户。
    • 如使用容器:docker run -d --name pgadmin -p 5050:80 -e “PGADMIN_DEFAULT_EMAIL=admin@example.com” -e “PGADMIN_DEFAULT_PASSWORD=StrongPass” -v /data/pgadmin:/var/lib/pgadmin dpage/pgadmin4。
  • 部署多个实例
    • 在多个节点重复上述安装与初始化步骤,保持版本与目录结构一致;如需统一配置,优先采用外部化存储或外部数据库。
  • 配置负载均衡(Nginx 示例)
    • 安装:sudo yum install -y nginx;配置 /etc/nginx/nginx.conf:定义 upstream 指向各实例(IP:5050 或容器端口),在 server 块 proxy_pass 到 upstream,并设置 Host/X-Real-IP/X-Forwarded-For/X-Forwarded-Proto 等头;启用被动健康检查(max_fails/fail_timeout)或主动健康检查模块。
  • 配置共享存储或外部配置库(二选一或组合)
    • 共享存储:将 /var/lib/pgadmin4 挂载到 GlusterFS/CephFS,各实例共用同一数据视图。
    • 外部数据库:将 pgAdmin 配置存到外部 PostgreSQL,在 pgAdmin 配置中设置数据库连接串(SQLAlchemy),避免本地 SQLite 成为单点。
  • 安全与网络
    • 开放 80/443(或 5050→80 的映射),在负载均衡器或节点上启用 TLS/证书;限制管理网段访问,使用强密码与最小权限。

关键配置与运维要点

  • 健康检查与自动摘除:Nginx 配置示例
    • upstream backend { server 10.0.0.11:5050 max_fails=3 fail_timeout=30s; server 10.0.0.12:5050 max_fails=3 fail_timeout=30s; };location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }。
  • 会话与配置一致性:优先使用共享存储或外部数据库;若使用容器,务必将 /var/lib/pgadmin 挂载为卷,保证升级与迁移不丢数据。
  • 日志与排障:统一收集 /var/log/pgadmin4/*.log;在负载均衡器与实例层面监控 5xx/超时,出现连续失败时优先摘除异常实例并回滚版本。
  • 备份与恢复:定期备份共享存储或外部配置库;容器场景同时备份挂载卷数据与环境变量(邮箱、密码等)。

可选方案对比

方案 架构要点 优点 注意事项
Nginx/HAProxy + 多实例 + 共享存储 多实例前置负载均衡;/var/lib/pgadmin4 挂载 GlusterFS/CephFS 实现应用层高可用与快速切换;成本低 需维护共享存储的一致性与容量;会话粘滞或外部会话存储可提升体验
Kubernetes 部署 Deployment 多副本 + Service/Ingress 暴露;持久卷 PV 承载数据 弹性扩缩容、自愈、滚动升级;云原生友好 需 K8s 与存储栈投入;资源开销相对更高
容器 + 外部数据库配置 多容器实例;配置存外部 PostgreSQL 避免本地 SQLite 单点;配置统一易备份 需保障外部数据库高可用与网络连通性

0