具有pgpool架构的Postgres


9

下面是一个示例pgpool架构:

在此处输入图片说明

这意味着您只需要在单个服务器上安装pgpool。这是真的?当我查看配置时,我还看到您在其中配置了后端pgpool.conf。因此它进一步暗示了这一点。但是,这并不能解释为什么我也在后端服务器上看到pgpool。

查看文档时,我还会看到:

如果您使用的是PostgreSQL 8.0或更高版本,则强烈建议在所有可由pgpool-II访问的PostgreSQL上安装pgpool_regclass函数,因为它在pgpool-II内部使用。

所以我不确定该怎么想;最好的做法是在所有后端上或仅在专用服务器上都使用pgpool?


如果要实现高可用性,则可能需要在至少2个postgresql服务器(均在不同的包装盒上)前面放置两个pgpool服务器
Neil McGuigan 2016年

Answers:


10

通常,您不会在后端服务器上安装Pgpool。您在图片中看到的是最常见的配置。Pgpool是一个独立的服务器,基本上位于数据库的前面。两个Postgres服务器通常配置有流复制。一个是主人,另一个是奴隶。

这使Pgpool可以在两个(或多个)数据库之间平衡所有读取查询。任何涉及写操作的查询都将被路由到主服务器,而主服务器又将复制到从服务器。

正如@Neil McGuigan所说,您还可以拥有多个Pgpool服务器以实现更好的高可用性。从技术上讲,您可以在此配置下将Pgpool安装在数据库服务器上,但这将是不正确的做法。运行多个Pgpool服务器是一个更为复杂的配置。如果这是您第一次使用Pgpool,我将首先使用一台Pgpool服务器,然后再使用其中的两台。

在这两种配置中,您的应用服务器都认为它只是在连接到单个Postgres数据库。

关于pgpool_regclass,这实际上应该是一个单独的问题,来自Pgpool常见问题解答

如果您使用的是PostgreSQL 8.0或更高版本,则强烈建议在所有可由pgpool-II访问的PostgreSQL上安装pgpool_regclass函数,因为它在pgpool-II内部使用。否则,在不同架构中处理重复的表名可能会引起麻烦(临时表不是问题)。

如果您使用的是PostgreSQL 9.4.0或更高版本以及pgpool-II 3.3.4或更高版本,3.4.0或更高版本,则不需要安装pgpool_regclass,因为PostgreSQL 9.4具有内置的pgpool_regclass,例如函数“ to_regclass”。

如果需要此功能,只需在Postgres主服务器上运行一些SQL代码即可添加Pgpool使用的功能。

使用regclass,您还需要执行其他步骤(我正在考虑insert_lock)。如果从源代码进行编译(通常大多数发行版的Pgpool版本实际上已经过时),则还必须编译Postgres库。

如果从源代码编译,则必须进入.../pgpool-II-3.X.X/src/sql/pgpool-regclass文件夹并执行./configure; make

将pgpool-regclass.so文件复制到Postgres扩展目录中。在我的Ubuntu 14.04服务器上(仅使用Postgres 9.3软件包安装),它位于:/usr/lib/postgresql/9.3/lib。请记住对所有 Postgres服务器这样做。

完成后,即可pgpool-regclass.sql在主服务器上运行。这只是将pgpool_regclass函数映射到您复制的库。


1

与其他所有内容一样,您可以通过多种方式完成高可用性部署。在这里,我将根据我的经验(我自己的HA实现)提出一些建议:

  1. 最好有多个pgpool2实例,而不是一个。原因很明显:单个pgpool2是单点故障。由于pgpool引入了看门狗功能,因此很容易实现。
  2. 通常,将pgpool2实例放置在单独的计算机上比在PostgreSQL后端和pgpool2之间共享同一台计算机要好一些。但是,即使将它们与PostgreSQL在同一服务器上运行,也没有明显的缺点。(在我的HA实现中,每台机器都运行一个PostgreSQL实例和一个pgpool2实例。)

最后,我将推荐此分步教程,它将带您从头开始(安装PostgreSQL服务器...)以完成高可用性实现。提到的教程描述了我使用的实现。

希望对您有所帮助。

更新:谢谢@Moshe Katz-链接确实改变了。现在在这里更新,在原始帖子中也。


2
您所指向的网站itenlight.com/blog/2016/05/18/…似乎已关闭。你可以看看吗?
user6807024

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.