暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PgPool 与 EFM 集成实现应用程序高可用性

新智锦绣 2025-02-21
131

点击蓝字关注我们


本文提供了配置 EFM 与 PgPool 集成以实现应用程序高可用性的信息和示例。PgPool 将以 Watchdog 模式管理 VIP,EDB 支持的架构至少需要三个 PgPool 节点,而 EFM 处理流式复制并执行 PCP 命令以在每个 PgPool 节点上附加或分离 Postgres 后端节点。


配置要求


在配置 EFM 和 PgPool 之间的集成之前,请确保您已设置 PgPool 节点、在每个 EFM 节点上安装了 PCP 命令,并在所有 PgPool 节点上配置了Watchdog模式。

EDB 支持的架构至少需要三个 EFM 节点和三个 PgPool 节点,每个 EFM 和 PgPool 节点位于不同的主机上。


PgPool设置


PgPool 节点必须在 EFM 节点之前配置。如果先配置 EFM,则在您重新启动服务以应用新的 PgPool 集成设置后,它将无法启动,因为 EFM 将无法正确执行 PCP 命令,从而导致在journalctl里出现以下错误。

例子:

    efm : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/edb/efm-4.9/bin/efm_pgpool_functions watchdog etc/edb/efm-4.9/testcluster.properties

    为了使该架构正常工作,必须禁用 Postgres 后端上的 PgPool 健康检查和故障转移操作,因为这些可能与 EFM 健康检查相冲突,并可能导致后端被错误分离。

      health_check_period = 0
      failover_command = ''
      failback_command = ''
      failover_on_backend_error = off
      failover_on_backend_shutdown = off

      即使禁用健康检查,仍然可以通过正确配置以下设置来启用流复制检查:

      sr_check_period、sr_check_user、sr_check_password和sr_check_database。

      建议将以下参数设置为较低的值,例如10秒(默认为5分钟),以便允许PgPool快速检测新的主服务器并重置连接:

        search_primary_node_timeout = 10


        EFM 设置


        EFM 必须能够在没有密码的情况下运行 PCP 命令。确保.pcppass文件存在且具有0600权限(最好位于 OS 用户的主目录中)并且由运行实例的用户拥有(通常postgres用于 PostgreSQL或enterprisedb用于EPAS)。

        然后,配置以下设置:

        • pgpool.enable:启用PCP命令和PgPool集成;

        • pcp.user:在pip.conf文件中配置的PCP用户;

        • pcp.host:PgPool设置中配置的VIP delegate_ip;

        • pcp.port:PgPool设置中配置的端口号pcp_port;

        • pcp.pass.file:文件在 EFM 主机上的完整路径.pcppass。此文件应该可由 OS 用户postgres或enterprisedb访问;

        • pgpool.bin:PCP 命令所在的目录,通常在/usr/bin/(用于 PCP 包安装)或/usr/edb/pgpool4.5/bin/(如果与 EFM 共享同一主机,则用于 EDB PgPool 安装)。

        例:

          pgpool.enable=true
          pcp.user=pcpuser
          pcp.host=192.168.1.249
          pcp.port=9898
          pcp.pass.file=/var/lib/edb/.pcppass
          pgpool.bin=/usr/bin/

          以下列表显示了 EFM 使用的所有 PCP 命令:

          • pcp_node_count

          • pcp_node_info

          • pcp_attach_node

          • pcp_detach_node

          • pcp_watchdog_info

          一旦发生故障转移或切换,主节点应在efm cluster-status和SHOW POOL_NODES的输出中正确反映。


          切换示例


          1.在 EFM 中检查集群状态,并验证该节点192.168.1.100当前是否为主节点。

             /usr/edb/efm-4.9/bin/efm cluster-status efm
            Cluster Status: efm

              Agent Type  Address              DB       VIP
              ----------------------------------------------------------------
              Primary     192.168.1.100        UP        
              Standby     192.168.1.101        UP        
              Standby     192.168.1.102        UP        

            Allowed node host list:
              192.168.1.101 192.168.1.100 192.168.1.102

            Membership coordinator: 192.168.1.101

            Standby priority host list:
              192.168.1.101 192.168.1.102

            Promote Status:

              DB Type     Address              WAL Received LSN   WAL Replayed LSN   Info
              ---------------------------------------------------------------------------
              Primary     192.168.1.100                           0/60379A0          
              Standby     192.168.1.101        0/60379A0          0/60379A0          
              Standby     192.168.1.102        0/60379A0          0/60379A0          

              Standby database(s) in sync with primary. It is safe to promote.


            2.检查使用 VIP 作为主机的 PgPool 节点,并确认192.168.1.100是主节点,如 EFM 中所示。

               psql -p 9999 -h 192.168.1.249 -U enterprisedb -d postgres -c 'SHOW POOL_NODES;'

              node_id |   hostname    | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change  
              ---------+---------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
               0       | 192.168.1.100 | 5444 | up     | unknown   | 0.333333  | primary | unknown | 0          | false             | 0                 |                   |                        | 2024-11-13 09:39:13
               1       | 192.168.1.101 | 5444 | up     | unknown   | 0.333333  | standby | unknown | 0          | true              | 0                 |                   |                        | 2024-11-13 09:39:13
               2       | 192.168.1.102 | 5444 | up     | unknown   | 0.333333  | standby | unknown | 0          | false             | 0                 |                   |                        | 2024-11-13 09:39:13
              (3 rows)


              3.执行 EFM 切换。

                 /usr/edb/efm-4.9/bin/efm promote efm -switchover

                Promote/switchover command accepted by local agent. Proceeding with promotion and will recon


                4.切换完成后,再次检查 EFM 集群以确认192.168.1.101现在是主节点。

                   /usr/edb/efm-4.9/bin/efm cluster-status efm
                  Cluster Status: efm

                    Agent Type  Address              DB       VIP
                    ----------------------------------------------------------------
                    Standby     192.168.1.100        UP        
                    Primary     192.168.1.101        UP        
                    Standby     192.168.1.102        UP        

                  Allowed node host list:
                    192.168.1.101 192.168.1.100 192.168.1.102

                  Membership coordinator: 192.168.1.101

                  Standby priority host list:
                    192.168.1.100 192.168.1.102

                  Promote Status:

                    DB Type     Address              WAL Received LSN   WAL Replayed LSN   Info
                    ---------------------------------------------------------------------------
                    Primary     192.168.1.101                           0/6037B68          
                    Standby     192.168.1.100        0/6037B68          0/6037B68          
                    Standby     192.168.1.102        0/6037B68          0/6037B68          

                    Standby database(s) in sync with primary. It is safe to promote.


                  5.再次检查 PgPool 以确认主节点现在反映了 EFM 集群中更新后的主节点,即192.168.1.101。

                     psql -p 9999 -h 192.168.1.249 -U enterprisedb -d postgres -c 'SHOW POOL_NODES;'
                     node_id |   hostname    | port | status | pg_status | lb_weight |  role   | pg_role | select_cnt | load_balance_node | replication_delay | replication_state | replication_sync_state | last_status_change  
                    ---------+---------------+------+--------+-----------+-----------+---------+---------+------------+-------------------+-------------------+-------------------+------------------------+---------------------
                     0       | 192.168.1.100 | 5444 | up     | unknown   | 0.333333  | standby | unknown | 0          | false             | 0                 |                   |                        | 2024-11-13 10:30:16
                     1       | 192.168.1.101 | 5444 | up     | unknown   | 0.333333  | primary | unknown | 0          | false             | 0                 |                   |                        | 2024-11-13 10:30:16
                     2       | 192.168.1.102 | 5444 | up     | unknown   | 0.333333  | standby | unknown | 0          | true              | 0                 |                   |                        | 2024-11-13 09:39:13
                    (3 rows)

                    如果所有配置正确,Watchdog 集群中的所有 PgPool 节点都将反映与 EFM 集群相同的主节点。


                    关于公司

                    感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。


                    欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!

                    Elastic 微信群

                    EDB 微信群


                    发现“分享”“赞”了吗,戳我看看吧



                    文章转载自新智锦绣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论