3.3. 设置 HAProxy 负载均衡器和 PostgreSQL 数据库


使用以下步骤设置 HAProxy 负载均衡器和 PostgreSQL 数据库。

前提条件

  • 已安装 Podman 或 Docker CLI。

流程

  1. 在前两个系统上,q01q02,安装 HAProxy 负载均衡器和 PostgreSQL 数据库。这会将 HAProxy 配置为在其他系统上运行的以下服务的访问点和负载均衡器:

    • Red Hat Quay ( B 系统上的端口 80 和 443)
    • Redis ( B 系统中的端口 6379)
    • RADOS (C 系统上的端口 7480)
  1. 打开 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
    Copy to Clipboard Toggle word wrap
  1. 配置 /etc/haproxy/haproxy.cfg,以指向提供 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
    Copy to Clipboard Toggle word wrap

    新的 haproxy.cfg 文件就位后,请输入以下命令重启 HAProxy 服务:

    # systemctl restart haproxy
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令为 PostgreSQL 数据库创建文件夹:

    $ mkdir -p /var/lib/pgsql/data
    Copy to Clipboard Toggle word wrap
  3. /var/lib/pgsql/data 文件夹设置以下权限:

    $ chmod 777 /var/lib/pgsql/data
    Copy to Clipboard Toggle word wrap
  4. 输入以下命令启动 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
    Copy to Clipboard Toggle word wrap
    注意

    容器的数据将存储在主机系统上的 /var/lib/pgsql/data 目录中。

  5. 输入以下命令列出可用的扩展:

    $ sudo podman exec -it postgresql_database /bin/bash -c 'echo "SELECT * FROM pg_available_extensions" | /opt/rh/rh-postgresql96/root/usr/bin/psql'
    Copy to Clipboard Toggle word wrap

    输出示例

       name    | default_version | installed_version |           comment
    -----------+-----------------+-------------------+----------------------------------------
     adminpack | 1.0             |                   | administrative functions for PostgreSQL
    ...
    Copy to Clipboard Toggle word wrap

  6. 输入以下命令创建 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'
    Copy to Clipboard Toggle word wrap
  7. 输入以下命令确认 pg_trgm 已创建:

    $ sudo podman exec -it postgresql_database /bin/bash -c 'echo "SELECT * FROM pg_extension" | /opt/rh/rh-postgresql96/root/usr/bin/psql'
    Copy to Clipboard Toggle word wrap

    输出示例

     extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
    ---------+----------+--------------+----------------+------------+-----------+--------------
     plpgsql |       10 |           11 | f              | 1.0        |           |
     pg_trgm |       10 |         2200 | t              | 1.3        |           |
    (2 rows)
    Copy to Clipboard Toggle word wrap

  8. 更改 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'
    Copy to Clipboard Toggle word wrap

    输出示例

    ALTER ROLE
    Copy to Clipboard Toggle word wrap

  9. 如果您的系统中有一个 firewalld 服务,请运行以下命令使 PostgreSQL 端口可以通过防火墙使用:

    # firewall-cmd --permanent --zone=trusted --add-port=5432/tcp
    Copy to Clipboard Toggle word wrap
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  10. 可选。如果您没有安装 postgres CLI 软件包,请输入以下命令安装它:

    # yum install postgresql -y
    Copy to Clipboard Toggle word wrap
  11. 使用 psql 命令测试到 PostgreSQL 数据库的连接。

    注意

    要验证您可以远程访问该服务,请在远程系统中运行以下命令:

    # psql -h localhost quaydb quayuser
    Copy to Clipboard Toggle word wrap

    输出示例

    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
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat