温馨提示×

centos pgadmin集群配置步骤

小樊
48
2025-10-26 04:08:03
栏目: 智能运维

CentOS下pgAdmin集群配置步骤(含PostgreSQL高可用基础)

一、前置准备:安装PostgreSQL数据库集群

pgAdmin是PostgreSQL的图形化管理工具,需先搭建PostgreSQL数据库集群(主从复制+Patroni)作为后端,确保数据高可用。

1. 安装PostgreSQL官方Yum存储库

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2. 安装PostgreSQL服务器(以15版本为例)

sudo yum install -y postgresql15-server postgresql15-devel

3. 初始化数据库并启动服务

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb  # 初始化数据库集群
sudo systemctl enable --now postgresql-15         # 开机启动并立即启动服务

4. 配置PostgreSQL主从复制

主节点配置(修改postgresql.conf

sudo vim /var/lib/pgsql/15/data/postgresql.conf

取消注释并修改以下参数:

listen_addresses = '*'                  # 允许所有IP连接
wal_level = replica                     # 启用WAL日志归档
max_replication_slots = 5               # 最大复制槽数
hot_standby = on                        # 允许备库处于热备状态

主节点配置(修改pg_hba.conf

sudo vim /var/lib/pgsql/15/data/pg_hba.conf

在文件末尾添加以下行,允许从节点复制连接:

host    replication     replicator     <从节点IP>/32            md5
host    all             all            0.0.0.0/0                md5

重启主节点服务

sudo systemctl restart postgresql-15

5. 安装Patroni(集群管理工具)

Patroni用于管理PostgreSQL主从切换,结合etcd实现集群状态同步。

sudo yum install -y python3-pip
sudo pip3 install patroni[etcd]

6. 配置Patroni(主节点)

创建Patroni配置文件/etc/patroni.yml

scope: postgres_cluster
name: node1
restapi:
  listen: 0.0.0.0:8008
  connect_address: <主节点IP>:8008
etcd:
  hosts:
    - "<主节点IP>:2379"
    - "<从节点IP>:2379"
postgresql:
  use_pg_rewind: true
  parameters:
    wal_level: replica
    hot_standby: on
    max_replication_slots: 5
  recovery_conf:
    restore_command: 'cp /var/lib/pgsql/15/wal_archive/%f %p'

7. 启动Patroni服务

sudo patroni /etc/patroni.yml

通过curl http://<主节点IP>:8008/patroni验证集群状态,确认主节点已启动。

8. 配置从节点

在从节点重复步骤1-3,安装PostgreSQL和Patroni,修改postgresql.conf中的hot_standbyon,并创建/etc/patroni.yml(修改namenode2connect_address为从节点IP),启动Patroni服务。Patroni会自动将节点加入集群并同步数据。

二、安装pgAdmin(Web版,适合集群管理)

pgAdmin Web版支持多用户远程管理,需配合Web服务器(如Apache)部署。

1. 安装pgAdmin Web组件

sudo yum install -y pgadmin4-web

2. 初始化pgAdmin配置

运行初始化脚本,设置管理员邮箱(用于找回密码)和初始密码:

sudo /usr/pgadmin4/bin/pgadmin4-web-setup.sh

按提示输入管理员邮箱(如admin@yourdomain.com)和密码(如PgAdminAdmin@123)。

3. 启动pgAdmin服务

初始化完成后,pgAdmin会自动启动。如需手动控制:

sudo systemctl start pgadmin4  # 启动服务
sudo systemctl enable pgadmin4 # 开机自启动

4. 配置Web服务器(Apache)

pgAdmin依赖Apache提供HTTP服务,修改配置文件/etc/httpd/conf.d/pgadmin4.conf

sudo vim /etc/httpd/conf.d/pgadmin4.conf

确认以下设置(若需远程访问):

Listen 80
ServerName pgadmin.yourdomain.com

重启Apache服务:

sudo systemctl restart httpd

5. 配置防火墙

开放HTTP(80端口)和PostgreSQL(5432端口):

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

6. 访问pgAdmin Web界面

打开浏览器,输入服务器IP或域名(如http://pgadmin.yourdomain.com),使用管理员邮箱和密码登录。

三、配置pgAdmin连接PostgreSQL集群

登录pgAdmin后,添加PostgreSQL集群节点:

  1. 点击左侧导航栏的“+”号→“Servers”→“Create”→“Server”。
  2. 在“General”标签页输入服务器名称(如My PostgreSQL Cluster)。
  3. 在“Connection”标签页填写:
    • Host:Patroni集群的etcd地址(如<主节点IP>,Patroni会自动处理主从切换);
    • Port:5432(默认端口);
    • Username:之前创建的pgadmin用户(如pgadmin);
    • Password:pgadmin用户的密码(如YourStrongPassword123!”)。
  4. 点击“Save”保存配置,即可连接并管理PostgreSQL集群。

四、pgAdmin高可用部署(可选)

若需pgAdmin自身高可用,可通过以下方式实现:

1. 使用Docker部署多个pgAdmin实例

# 拉取pgAdmin镜像
docker pull dpage/pgadmin4

# 启动3个pgAdmin容器
docker run -d --name pgadmin1 -p 8080:80 -e "PGADMIN_DEFAULT_EMAIL=admin1@example.com" -e "PGADMIN_DEFAULT_PASSWORD=123456" dpage/pgadmin4
docker run -d --name pgadmin2 -p 8081:80 -e "PGADMIN_DEFAULT_EMAIL=admin1@example.com" -e "PGADMIN_DEFAULT_PASSWORD=123456" dpage/pgadmin4
docker run -d --name pgadmin3 -p 8082:80 -e "PGADMIN_DEFAULT_EMAIL=admin1@example.com" -e "PGADMIN_DEFAULT_PASSWORD=123456" dpage/pgadmin4

2. 配置负载均衡器(Nginx)

创建Nginx配置文件/etc/nginx/conf.d/pgadmin.conf

upstream pgadmin {
    server localhost:8080;
    server localhost:8081;
    server localhost:8082;
}

server {
    listen 80;
    server_name pgadmin.yourdomain.com;

    location / {
        proxy_pass http://pgadmin;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

重启Nginx服务:

sudo systemctl restart nginx

通过http://pgadmin.yourdomain.com访问pgAdmin,Nginx会自动分发请求到多个实例。

注意事项

  • 安全性:生产环境中,建议关闭PostgreSQL的远程连接(修改postgresql.conf中的listen_addresseslocalhost),并通过SSH隧道访问;配置SSL加密(生成证书并在pgAdmin和PostgreSQL中配置)。
  • SELinux:若系统启用SELinux,需允许Apache访问PostgreSQL:
    sudo setsebool -P httpd_can_network_connect_db 1
    
  • 版本兼容:确保pgAdmin版本与PostgreSQL版本兼容(如pgAdmin 4.26+支持PostgreSQL 15)。
  • 数据持久化:Docker部署时,需将pgAdmin数据目录挂载到宿主机或共享存储(如GlusterFS),避免数据丢失。

0