PG高可用集群搭建—基于Pgpool-II-4.5.2(一)------规划及安装

一、前言

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.5.2版为例介绍搭建过程,PostgreSQL数据库采用最新的16.0,操作系统为Rocky Linux 9.4 (Blue Onyx)。构架图如下(图片转自Pgpool-II官网)

附Pgpool官方文档链接:pgpool-II 4.5.2 Documentation

Pgpool工作架构图


二、规划

2.1 主机及IP规划


2.2 PostgreSQL版本及配置规划



2.3 Pgpool-II版本及配置规划


2.4 相关脚本


三、 安装

对于postgreSQL的安装请参考官方文档,在此不再赘述,链接:PostgreSQL Downloads.

wget -O pgpool-II-4.5.2.tar.gz https://www.pgpool.net/mediawiki/download.php?f=pgpool-II-4.5.2.tar.gz
tar zxvf pgpool-II-4.5.2.tar.gz 
cd pgpool-II-4.5.2
dnf install libtool
autoreconf -fi
./configure --prefix=/usr/local/pgpool --with-openssl --with-pgsql=/usr/pgsql-16 # --with-pgsql是postgreSQL的安装根目录 make make install

# 如果后续要使用Pgpool-II的online recovery功能,则需要编译相关扩展 cd src/sql/pgpool-recovery
make 
make install
$ psql template1 
    CREATE EXTENSION pgpool_recovery;

调整 postgresql.conf, 将以下内容添加到 postgresql.conf 中。
    pgpool.pg_ctl = '/usr/pgsql-16/bin/pg_ctl'



评论

此博客中的热门博文

PG高可用集群搭建—基于Pgpool-II-4.5.2(二)------配置篇