centos

centos pgadmin集群部署指南

小樊
48
2025-09-24 10:46:03
栏目: 智能运维

CentOS上pgAdmin集群部署指南

一、前置准备

在开始部署前,请确保:

  1. CentOS系统已更新至最新版本(sudo yum update -y);
  2. 已准备好至少2台服务器(用于pgAdmin多实例部署,实现高可用);
  3. 每台服务器已安装PostgreSQL数据库(作为pgAdmin管理的后端集群,参考PostgreSQL集群部署文档);
  4. 确保服务器之间网络互通,防火墙允许相关端口通信(如5432、80/443)。

二、安装pgAdmin

1. 通过YUM安装(推荐)

pgAdmin官方提供了CentOS的YUM仓库,安装步骤如下:

# 添加pgAdmin官方YUM仓库
sudo rpm -i https://download.pgadmin.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat.repo

# 安装pgAdmin(选择适合CentOS版本的包,如el7/el8)
sudo yum install -y pgadmin4

# 启动pgAdmin服务并设置开机自启
sudo systemctl start pgadmin4
sudo systemctl enable pgadmin4

2. 验证安装

安装完成后,通过浏览器访问http://<服务器IP>:5050(默认端口5050),若出现pgAdmin登录页面,则说明安装成功。

三、配置pgAdmin高可用集群

1. 部署多个pgAdmin实例

在每台服务器上重复上述安装步骤,确保所有实例运行相同版本的pgAdmin。安装完成后,每个实例会自动创建默认配置文件(位于/var/lib/pgadmin/config_local.py)。

2. 配置负载均衡器(核心组件)

使用Nginx作为负载均衡器,将客户端请求分发到多个pgAdmin实例,提升可用性和性能。

(1)安装Nginx

sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

(2)配置Nginx反向代理

编辑Nginx配置文件(/etc/nginx/nginx.conf),添加以下内容:

http {
    upstream pgadmin_cluster {
        server <pgadmin1_IP>:5050;  # 替换为第一台pgAdmin服务器IP
        server <pgadmin2_IP>:5050;  # 替换为第二台pgAdmin服务器IP
        # 可根据需要添加更多实例
    }

    server {
        listen 80;
        server_name pgadmin.yourdomain.com;  # 替换为你的域名或IP

        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;
        }
    }
}

保存后重启Nginx:

sudo systemctl restart nginx

3. 配置pgAdmin实例同步

为确保所有pgAdmin实例的用户、服务器配置一致,需启用pgAdmin配置同步

# 编辑pgAdmin主配置文件(/etc/pgadmin/config_systemd.py)
sudo vim /etc/pgadmin/config_systemd.py

添加以下内容(替换为你的邮件服务器信息):

# 配置邮件服务器(用于发送账户验证邮件)
MAIL_SERVER = 'smtp.yourdomain.com'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USERNAME = 'your_email@yourdomain.com'
MAIL_PASSWORD = 'your_email_password'

# 配置同步存储(使用数据库存储配置)
STORAGE_TYPE = 'sqlalchemy'
SQLALCHEMY_DATABASE_URI = 'postgresql://pgadmin_user:your_password@<PostgreSQL_Server_IP>/pgadmin'

重启pgAdmin服务使配置生效:

sudo systemctl restart pgadmin4

4. 配置高可用存储(可选但推荐)

为避免单点故障导致数据丢失,建议将pgAdmin的数据目录挂载到高可用文件系统(如GlusterFS、Ceph):

# 示例:使用GlusterFS挂载(需提前部署GlusterFS集群)
sudo yum install -y glusterfs-client
sudo mkdir -p /mnt/pgadmin_data
sudo mount -t glusterfs <glusterfs_server1_IP>:/pgadmin_volume /mnt/pgadmin_data
# 将pgAdmin数据目录指向挂载点
sudo sed -i 's|/var/lib/pgadmin|/mnt/pgadmin_data|g' /etc/pgadmin/config_systemd.py
sudo systemctl restart pgadmin4

四、配置PostgreSQL集群连接

pgAdmin的核心功能是管理PostgreSQL数据库集群,需先配置pgAdmin与PostgreSQL集群的连接:

  1. 登录pgAdmin Web界面(通过Nginx访问的地址);
  2. 点击左侧“Servers”→右键选择“Create”→“Server”;
  3. 在“General”标签页输入服务器名称(如“PostgreSQL_Cluster”);
  4. 在“Connection”标签页填写以下信息:
    • Host:PostgreSQL集群的主节点IP地址;
    • Port:PostgreSQL监听端口(默认5432);
    • Username:PostgreSQL超级用户(如“postgres”);
    • Password:超级用户密码;
  5. 点击“Save”保存配置,若连接成功,左侧“Servers”下会显示该服务器节点。

五、安全加固

1. 配置SSL加密

为避免数据传输被窃取,建议为pgAdmin和PostgreSQL配置SSL:

(1)pgAdmin配置SSL

编辑Nginx配置文件,添加SSL证书:

server {
    listen 443 ssl;
    server_name pgadmin.yourdomain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    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;
    }
}

# 重定向HTTP到HTTPS
server {
    listen 80;
    server_name pgadmin.yourdomain.com;
    return 301 https://$host$request_uri;
}

重启Nginx:

sudo systemctl restart nginx

(2)PostgreSQL配置SSL

参考PostgreSQL官方文档配置SSL,生成证书并修改postgresql.conf

ssl = on
ssl_cert_file = '/path/to/server.crt'
ssl_key_file = '/path/to/server.key'

2. 防火墙配置

允许Nginx(80/443)和PostgreSQL(5432)端口通过防火墙:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp
sudo firewall-cmd --reload

3. 访问控制

六、监控与维护

  1. 监控pgAdmin状态:使用systemctl status pgadmin4查看服务运行状态,通过Nginx的access.logerror.log监控访问情况;
  2. 备份pgAdmin数据:定期备份/var/lib/pgadmin目录(或高可用存储挂载点),确保数据可恢复;
  3. 监控PostgreSQL集群:使用pg_stat_replication视图监控主从复制状态,使用repmgr工具监控节点健康状态。

通过以上步骤,即可在CentOS上完成pgAdmin集群部署,实现高可用性和负载均衡,有效管理PostgreSQL数据库集群。

0
看了该问题的人还看了