2.3. 设置 HAProxy 负载均衡器和 PostgreSQL 数据库
使用以下步骤设置 HAProxy 负载均衡器和 PostgreSQL 数据库。
前提条件
- 已安装 Podman 或 Docker CLI。
流程
在前两个系统(
q01和q02)上,安装 HAProxy 负载均衡器和 PostgreSQL 数据库。这会将 HAProxy 配置为在不同系统上运行的以下服务的接入点和负载均衡器:- Red Hat Quay (B 系统上的端口 80 和 443)
- Redis (B 系统上的端口 6379)
- RADOS (C 系统上的端口 7480)
在 SELinux 中打开所有 HAProxy 端口,并在防火墙中打开所选 HAProxy 端口:
# setsebool -P haproxy_connect_any=on # firewall-cmd --permanent --zone=public --add-port=6379/tcp --add-port=7480/tcp success # firewall-cmd --reload success
将
/etc/haproxy/haproxy.cfg配置为指向提供 Red Hat Quay、Red Hat Quay、Redis 和 Ceph RADOS 服务的系统和端口。以下是默认值和添加了 frontend 和 backend 设置的示例:#--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode tcp log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend fe_http *:80 default_backend be_http frontend fe_https *:443 default_backend be_https frontend fe_redis *:6379 default_backend be_redis frontend fe_rdgw *:7480 default_backend be_rdgw backend be_http balance roundrobin server quay01 quay01:80 check server quay02 quay02:80 check server quay03 quay03:80 check backend be_https balance roundrobin server quay01 quay01:443 check server quay02 quay02:443 check server quay03 quay03:443 check backend be_rdgw balance roundrobin server ceph01 ceph01:7480 check server ceph02 ceph02:7480 check server ceph03 ceph03:7480 check backend be_redis server quay01 quay01:6379 check inter 1s server quay02 quay02:6379 check inter 1s server quay03 quay03:6379 check inter 1s在新的
haproxy.cfg文件就位后,输入以下命令重启 HAProxy 服务:# systemctl restart haproxy
输入以下命令为 PostgreSQL 数据库创建一个文件夹:
$ mkdir -p /var/lib/pgsql/data
为
/var/lib/pgsql/data文件夹设置以下权限:$ chmod 777 /var/lib/pgsql/data
输入以下命令启动 PostgreSQL 数据库:
$ sudo podman run -d --name postgresql_database \ -v /var/lib/pgsql/data:/var/lib/pgsql/data:Z \ -e POSTGRESQL_USER=quayuser -e POSTGRESQL_PASSWORD=quaypass \ -e POSTGRESQL_DATABASE=quaydb -p 5432:5432 \ registry.redhat.io/rhel8/postgresql-13:1-109注意容器中的数据将保存在主机系统的
/var/lib/pgsql/data目录中。输入以下命令列出可用的扩展:
$ sudo podman exec -it postgresql_database /bin/bash -c 'echo "SELECT * FROM pg_available_extensions" | /opt/rh/rh-postgresql96/root/usr/bin/psql'
输出示例
name | default_version | installed_version | comment -----------+-----------------+-------------------+---------------------------------------- adminpack | 1.0 | | administrative functions for PostgreSQL ...
输入以下命令来创建
pg_trgm扩展:$ sudo podman exec -it postgresql_database /bin/bash -c 'echo "CREATE EXTENSION IF NOT EXISTS pg_trgm;" | /opt/rh/rh-postgresql96/root/usr/bin/psql -d quaydb'
输入以下命令确认
pg_trgm已创建:$ sudo podman exec -it postgresql_database /bin/bash -c 'echo "SELECT * FROM pg_extension" | /opt/rh/rh-postgresql96/root/usr/bin/psql'
输出示例
extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition ---------+----------+--------------+----------------+------------+-----------+-------------- plpgsql | 10 | 11 | f | 1.0 | | pg_trgm | 10 | 2200 | t | 1.3 | | (2 rows)
更改 Postgres 用户
quayuser的权限,并授予其超级用户角色,授予用户对数据库的不受限制的访问权限:$ sudo podman exec -it postgresql_database /bin/bash -c 'echo "ALTER USER quayuser WITH SUPERUSER;" | /opt/rh/rh-postgresql96/root/usr/bin/psql'
输出示例
ALTER ROLE
如果您的系统中活跃了 firewalld 服务,请运行以下命令使 PostgreSQL 端口通过防火墙可用:
# firewall-cmd --permanent --zone=trusted --add-port=5432/tcp
# firewall-cmd --reload
可选。如果您没有安装
postgresCLI 软件包,请输入以下命令安装它:# yum install postgresql -y
使用
psql命令测试与 PostgreSQL 数据库的连接。注意要验证您可以远程访问该服务,请在远程系统中运行以下命令:
# psql -h localhost quaydb quayuser
输出示例
Password for user test: psql (9.2.23, server 9.6.5) WARNING: psql version 9.2, server version 9.6. Some psql features might not work. Type "help" for help. test=> \q