我正在尝试配置 pgpool2 和 postgresql 9.1 来处理故障转移。
我目前正在运行流复制,并使用 pgpool2 进行只读负载平衡。
我的设置中有 2 台服务器,均运行 postgresql - 1 台主服务器和 1 台从服务器。主服务器还运行 pgpool2。
我的问题是如何配置此设置来处理故障转移?具体来说,如果主服务器崩溃,从服务器必须接管并运行 pgpool2。我能找到的大多数文档和示例都假设 pgpool2 在单独的服务器上运行,因此“永远不会”崩溃。
我可能用错了工具来解决问题。在我的生产设置中,我总共有 3 台相同的服务器,它们都位于独立的位置。设置的主要目标是实现高正常运行时间。因此故障转移应该是自动的,并且恢复故障节点应该只会导致最短的停机时间。我希望所有 3 个节点尽可能接近相同,并且能够在只有 1 或 2 个节点可用的情况下运行。如果可能的话,我想使用负载平衡来提高性能。
如果有人可以帮助我了解如何使用我当前的设置来执行此操作或建议不同的/更好的设置。
谢谢你!
答案1
正如您所评论的,pgpool 需要在与数据库集群完全不同的服务器上运行,否则您尝试完成的任务将永远无法完成。如果主数据库服务器发生故障,pgpool 基本上需要能够独立地故障转移到备份服务器。如果 pgpool 与主服务器一起发生故障,则不会发生这种情况。如果备份服务器发生故障,并且 pgpool 正在那里运行,则也不会发生这种情况。
大多数人使用某种 HA 监控基础设施(如心跳)来设置 pgool,这样当 pgpool 服务器崩溃时,可以自动启动备份。