首页主机资讯centos pgadmin集群部署方法

centos pgadmin集群部署方法

时间2026-01-17 21:46:04发布访客分类主机资讯浏览347
导读:总体架构与前提 目标是在 CentOS 上部署多实例的 pgAdmin 4,通过 Nginx 做反向代理与负载均衡,实现对外统一入口与高可用;pgAdmin 管理的后端是 PostgreSQL 高可用集群(推荐 Patroni + etc...

总体架构与前提

  • 目标是在 CentOS 上部署多实例的 pgAdmin 4,通过 Nginx 做反向代理与负载均衡,实现对外统一入口与高可用;pgAdmin 管理的后端是 PostgreSQL 高可用集群(推荐 Patroni + etcd)。pgAdmin 默认监听 5050 端口(RPM 包常见),也可使用 pgadmin4-web + Apache 方案。为消除单点,pgAdmin 的用户配置与会话需做共享或外部化存储。

部署 PostgreSQL 高可用集群

  • 安装 PostgreSQL 官方仓库与软件(以 15 为例):
    • sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{ rhel} )-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    • sudo yum install -y postgresql15-server postgresql15-devel
    • sudo /usr/pgsql-15/bin/postgresql-15-setup initdb & & sudo systemctl enable --now postgresql-15
  • 主库基础配置(postgresql.conf):
    • listen_addresses = ‘*’
    • wal_level = replica
    • max_replication_slots = 5
    • hot_standby = on
  • 主库认证(pg_hba.conf):
    • host replication replicator < 从节点IP> /32 md5
    • host all all 0.0.0.0/0 md5
  • 安装 Patroni(每个节点):sudo yum install -y python3-pip & & sudo pip3 install patroni[etcd]
  • Patroni 配置示例(/etc/patroni.yml,节选):
    • scope: postgres_cluster
    • name: node1
    • restapi: { listen: 0.0.0.0:8008, connect_address: < 主节点IP> :8008 }
    • etcd: { hosts: [“< 节点1IP> :2379”,“< 节点2IP> :2379”] }
    • postgresql:
      • use_pg_rewind: true
      • parameters: { wal_level: replica, hot_standby: on, max_replication_slots: 5 }
  • 启动与验证:
    • 主从节点分别执行:sudo patroni /etc/patroni.yml
    • 验证:curl http://< 节点IP> :8008/patroni 查看角色与状态。

部署多实例 pgAdmin

  • 安装 pgAdmin(每个实例节点,二选一):
    • RPM 方式(常见默认端口 5050):
      • 添加仓库:sudo rpm -i https://download.pgadmin.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat.repo
      • 安装:sudo yum install -y pgadmin4
      • 启动:sudo systemctl start pgadmin4 & & sudo systemctl enable pgadmin4
    • Web 方式(pgadmin4-web + Apache):
      • 安装:sudo yum install -y pgadmin4-web
      • 初始化:sudo /usr/pgadmin4/bin/pgadmin4-web-setup.sh(设置管理员邮箱与密码)
      • 配置 Apache:编辑 /etc/httpd/conf.d/pgadmin4.conf(如需远程访问,将 Listen/ServerName 调整为 0.0.0.0 或域名)
      • 启动:sudo systemctl restart httpd & & sudo systemctl enable httpd
  • 访问测试:
    • RPM 方式:http://< 实例IP> :5050
    • Web 方式:http://< 域名或IP> /
  • 防火墙放行:
    • sudo firewall-cmd --permanent --add-service=http
    • sudo firewall-cmd --permanent --add-port=5432/tcp
    • sudo firewall-cmd --reload。

配置高可用访问与配置同步

  • Nginx 反向代理与负载均衡(对外统一入口,示例域名 pgadmin.yourdomain.com):
    • 安装:sudo yum install -y nginx & & sudo systemctl enable --now nginx
    • /etc/nginx/nginx.conf 关键片段:
      • upstream pgadmin_cluster { server < pg1_IP> :5050; server < pg2_IP> :5050; }
      • server { listen 80; server_name pgadmin.yourdomain.com;
        • location / { proxy_pass http://pgadmin_cluster; 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; } }
    • 重启:sudo systemctl restart nginx
  • pgAdmin 配置同步与共享(消除实例间数据不一致与单点):
    • 方式 A(推荐):将用户配置存入外部数据库(SQLAlchemy)
      • 编辑 pgAdmin 配置(常见路径如:/var/lib/pgadmin/config_local.py 或 /etc/pgadmin/config_systemd.py)
      • 设置:STORAGE_TYPE = ‘sqlalchemy’
      • 设置:SQLALCHEMY_DATABASE_URI = ‘postgresql://pgadmin_user:StrongPass@< PG_HOST> /pgadmin’
      • 在目标 PostgreSQL 创建库与用户并授权:CREATE DATABASE pgadmin; CREATE USER pgadmin WITH PASSWORD ‘StrongPass’; GRANT ALL PRIVILEGES ON DATABASE pgadmin TO pgadmin;
      • 重启 pgAdmin 使配置生效
    • 方式 B(可选):共享文件系统(如 GlusterFS/Ceph)挂载到 pgAdmin 数据目录(/var/lib/pgadmin),保证多实例看到同一份配置与文件存储。

在 pgAdmin 中添加 PostgreSQL 集群

  • 登录 pgAdmin(通过 Nginx 域名或实例 IP:5050),左侧 Servers → Create → Server:
    • General:Name(如:PostgreSQL_Cluster)
    • Connection:
      • Host:填入 Patroni 的 VIP 或当前主库 IP
      • Port:5432
      • Username/Password:使用具备管理员权限的数据库用户(如 postgres 或专用管理账号)
    • 保存后验证连接;建议将主从节点分别添加为服务器对象,便于维护与故障切换观测。

安全与运维要点

  • 加密传输:
    • 对外启用 HTTPS(Nginx 配置 TLS 证书),对内建议启用 SSL 直连数据库(PostgreSQL 配置 ssl=on、证书与客户端验证)。
  • 访问控制:
    • 通过 firewalld 仅开放必要端口(HTTP/HTTPS、数据库端口仅对 pgAdmin 网段开放),并限制数据库 pg_hba.conf 的来源网段与认证方式。
  • 备份与恢复:
    • 定期备份 pgAdmin 的外部配置库(如 pgadmin 数据库)与元数据;验证恢复流程。
  • 监控与故障演练:
    • 利用 Patroni REST API 与 pgAdmin 的服务器状态功能巡检主从角色、复制延迟与连接健康度,定期演练故障切换。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos pgadmin集群部署方法
本文地址: https://pptw.com/jishu/783376.html
centos pgadmin性能调优建议 CentOS dropped能报警吗

游客 回复需填写必要信息