Pgpool-II实现高可用+读写分离+负载均衡(一)---- 规划及安装

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件。提供了连接池、复制、负载均衡、限制过多连接、看门狗、查询缓存等功能。

一、Pgpool-II简介

Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件提供了以下功能:


  • 连接池

Pgpool-II保存到PostgreSQL服务器的连接,并在具有相同属性(即用户名、数据库、协议版本)的新连接进入时重新使用它们。它减少了连接开销,并提高了系统的整体吞吐量。

  • 复制

Pgpool-II可以管理多个PostgreSQL服务器。使用复制功能可在2个或更多物理磁盘上创建实时备份,以便在磁盘出现故障时无需停服即可继续服务。

  • 负载均衡

如果数据库有多副本,则在任何服务器上执行SELECT查询都将返回相同的结果。Pgpool-II利用复制功能,通过在多个服务器之间分配SELECT查询来减少每台PostgreSQL服务器上的负载,从而提高系统的整体吞吐量。查询性能随PostgreSQL服务器数量的增加而成比例提高。负载均衡在有许多用户同时执行多个查询的情况下工作得最好。

  • 限制过多的连接

与PostgreSQL的并发连接的最大数量是有限制的,连接过多后会被拒绝。但是,设置最大连接数会增加资源消耗并影响系统性能。Pgpool-II对最大连接数也有限制,但额外的连接将被排队,而不是立即返回错误。

  • 看门狗

WatchDog可以协调多个Pgpool-II,创建一个健壮的集群系统,避免单点故障或脑裂。WatchDog可以对其他pgpool-II节点执行健康检查,以检测PgPoll-II的故障。如果主用Pgpool-II关闭,备用Pgpool-II可以升级为主用,并接管虚拟IP。

  • 查询缓存

查询缓存允许保存SELECT语句及其结果。如果出现相同的查询,则Pgpool-II将从缓存中返回值。由于不涉及SQL解析或访问PostgreSQL,因此在内存缓存中使用非常快。另一方面,在某些情况下,它可能比正常路径慢,因为它增加了存储缓存数据的一些开销。

Pgpool-II使用PostgreSQL的后端和前端协议,并在后端和前端之间转发消息。因此,数据库应用程序(前端)认为Pgpool-II是实际的PostgreSQL服务器,而服务器(后端)将Pgpool-II视为其客户端之一。因为Pgpool-II对服务器和客户端都是透明的,所以现有的数据库应用程序几乎可以在不更改其源代码的情况下与Pgpool-II一起使用。

下面以最新的Pgpool-II 4.4.4版为例介绍搭建过程,PostgreSQL数据库采用最新的16.0,操作系统为Rocky Linux 9.2 (Blue Onyx)。构架图如下(图片转自Pgpool-II官网)

二、安装规划

2.1 主机名及IP地址

主机名

IP地址 虚拟IP
server1 192.168.0.1 192.168.0.5
server2 192.168.0.2
server3 192.168.0.3

2.2 PostgreSQL版本及相关配置

项目

内容

说明

PostgreSQL版本 16.0 -

端口

5432 -
$PGDATA /data/pgsql16/data -

归档模式

on 归档日志目录:/data/pgsql16/archive
Replication Slots 开启 -

2.3 PgPool-II版本及配置

项目

内容

说明

Pgpool-II版本 4.4.4 -

端口

9999 Pgpool-II连接端口
9898 PCP进程连接端口
9000 watchdog连接端口
9694 接收心跳信号的UDP端口

配置文件

/home/postgres/pgpool/etc/pgpool.conf Pgpool-II配置文件
Pgpool-II启动用户 postgres (Pgpool-II 4.1及后续版本) Pgpool-II 4.0及之前版本需要用root用户启动
运行方式 流复制模式 -
Watchdog on 健康检查方法: heartbeat

2.4 相关脚本

功能描述

脚本名

说明

故障转移

/home/postgres/pgpool/etc/failover.sh

通过failover_command调用此脚本执行故障转移

/home/postgres/pgpool/etc/follow_primary.sh

完成故障转换后通过follow_primary_command调用此脚本同步对新主节点和从节点进行同步。

在线恢复

/home/postgres/pgpool/etc/recovery_1st_stage

通过

recovery_1st_stage_command执行此脚本恢复指定的从节点

/home/postgres/pgpool/etc/pgpool_remote_start

通过

recovery_1st_stage_command执行此脚本启动从节点

Watchdog

/home/postgres/pgpool/etc/escalation.sh

通过wd_escalation_command执行此脚本在Pgpool-II节点间切换浮动IP

三、安装

在进行Pgpool-II安装配置前,请先在三个节点上安装好PostgreSQL,PostgreSQL安装方法请参考 PostgreSQL源码安装

这里使用源码安装的方法安装Pgpool-II

wget https://www.pgpool.net/mediawiki/download.php?f=pgpool-II-4.4.4.tar.gz
# wget下载后文件名是'download.php?f=pgpool-II-4.4.4.tar.gz',需要改名或者wget时带上-O参数指定文件名mv'download.php?f=pgpool-II-4.4.4.tar.gz' pgpool-II-4.4.4.tar.gz
tar zxvf pgpool-II-4.4.4.tar.gz
cd pgpool-II-4.4.4
# 一定要加上--with-openssl,否则后续使用Pgpool验证密码时会出错# 这里将Pgpool安装到/home/postgres/pgpool目录下./configure --prefix=/home/postgres/pgpool --with-opensslmakemake install
# 如果后续要使用Pgpool-II的online recovery功能,则需要编译相关扩展cd src/sql/pgpool-recovery
makemake install
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
存储 缓存 运维
解密一致性哈希算法:实现高可用和负载均衡的秘诀
解密一致性哈希算法:实现高可用和负载均衡的秘诀
134 0
|
3月前
|
Kubernetes 负载均衡 监控
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
|
4月前
|
负载均衡 应用服务中间件 Linux
Nginx安装Windows、Linux | 正向代理、反向代理、负载均衡
Nginx安装Windows、Linux | 正向代理、反向代理、负载均衡
90 0
|
4月前
|
tengine Kubernetes Cloud Native
Tengine-Ingress 高性能高可用的云原生网关
Tengine-Ingress 高性能高可用的云原生网关
|
4月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Docker安装Nginx,并实现负载均衡教程。】
通过按照上述步骤,你就可以使用Docker安装Nginx并实现负载均衡。请确保在创建Nginx配置文件时定义了正确的负载均衡策略,并根据需要进行适当的配置和调整。
121 0
|
5月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
180 1
|
5月前
|
负载均衡 关系型数据库 PostgreSQL
Pgpool-II实现高可用+读写分离+负载均衡(八)---- 维护工具
Pgpool提供了一些维护工具,用于日常观察Pgpool运行状态、上线、下线节点等操作。主要有:pcp_stop_pgpool,pcp_node_count,pcp_node_info,pcp_health_check_stats,pcp_proc_count,pcp_proc_info,pcp_detach_node,pcp_attach_node,pcp_recovery_node,pcp_promote_node,pcp_pool_status,pcp_watchdog_info,pcp_reload_config
182 0
|
5月前
|
负载均衡 前端开发 网络协议
Keepalived+HAProxy 搭建高可用负载均衡(二)
Keepalived+HAProxy 搭建高可用负载均衡
|
10天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
28 0
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0