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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 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
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
160 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
1月前
|
Kubernetes 负载均衡 网络协议
k8s学习--负载均衡器matelLB的详细解释与安装
k8s学习--负载均衡器matelLB的详细解释与安装
114 0
|
4月前
|
负载均衡 NoSQL 应用服务中间件
搭建高可用及负载均衡的Redis
【7月更文挑战第10天】
142 1
|
4月前
|
负载均衡 安全 Cloud Native
云上负载均衡:构建高可用、高性能的网络应用架构
与云原生技术深度融合:随着云原生技术的普及和发展未来的云上负载均衡将更加紧密地与云原生技术相结合。例如与Kubernetes等容器编排平台集成实现自动化的服务发现和路由管理;与Serverless架构结合提供无缝的流量接入和请求处理能力。 安全性能提升:面对日益严峻的网络安全威胁云上负载均衡将更加注重安全性能的提升。通过引入加密传输、访问控制、DDoS防护等安全措施确保网络流量的安全性和隐私性;同时还将建立完善的安全监控和应急响应机制以应对各种安全事件和突发事件。 支持多协议和多场景:未来的云上负载均衡将支持更多种类的网络协议和应用场景以满足不同用户和业务的需求。例如支持HTTP/2、
243 0
|
4月前
|
负载均衡 算法 Java
实现高可用和可扩展的负载均衡系统的Java方法
实现高可用和可扩展的负载均衡系统的Java方法
|
6月前
|
Kubernetes 负载均衡 应用服务中间件
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
|
5月前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
6月前
|
负载均衡 关系型数据库 分布式数据库
【PolarDB开源】PolarDB读写分离实践:优化读取性能与负载均衡策略
【5月更文挑战第26天】PolarDB是云原生关系型数据库,通过读写分离优化性能和扩展性。它设置主节点处理写操作,从节点处理读操作,异步复制保证数据一致性。优化读取性能的策略包括增加从节点数量、使用只读实例和智能分配读请求。负载均衡策略涉及基于权重、连接数和地理位置的分配。实践示例中,电商网站通过主从架构、只读实例和负载均衡策略提升商品查询效率。PolarDB的读写分离与负载均衡为企业应对大数据和高并发提供了有效解决方案。
242 0
|
5月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
122 2
|
4月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
94 1
下一篇
无影云桌面