Windows Server 上的 PostgreSQL 故障转移集群

Yod*_*ber 5 postgresql windows-server-2003 failover

我们正在寻找有关如何为我们的应用程序设置基本故障转移集群的建议:

  • 我们将使用4 台运行 Microsoft Windows Server 的机器(很可能是 2003 年)。
  • 所有四个都将始终运行我们的应用程序,它本质上是一个 Web 服务。
  • 负载平衡是“外包”的 - 其他人处理服务器之间的 Web 请求分配。
  • 在任何给定时间,只有台服务器会主动运行 PostgreSQL 服务器。另一台服务器(四台)也安装了数据库,但处于备用/被动状态。
  • DB 数据存储在共享存储上。没有在服务器之间复制数据。
    • 许多最终用户非常频繁地读取数据,并且读取的数据块相当小。
    • 写入的频率要低得多,用户更少,而且数据量非常大。

现在,如何配置 Microsoft Cluster Service 以始终仅保留数据库服务器的一个实例和应用程序的 4 个实例(每台服务器 1 个)?PostgreSQL 是否与 MSCS 完美集成?

更新:我还考虑使用日志传送在几个数据库服务器上复制数据,而不是将数据保存在共享存储上。这个选项有两个问题:

  • 日志传送只会确保我有第二台服务器来获取所有数据并准备好接管。如何实现实际的故障检测和故障转移切换?
  • 切换回:假设master出现故障,系统自动故障切换到slave,稍后master重新上线。我知道使用 WAL 传送这将需要再次重新配置日志传送,并且切换回远非无缝。是这样吗?

Mag*_*der 2

PostgreSQL 使用通用服务模式与 MSCS 配合良好。建议您也在共享驱动器上安装 PostgreSQL 二进制文件,并将服务指向那里 - 这样您就可以确保不会出现版本不匹配的情况。

Lars 有一个很好的观点,即不建议在同一台计算机上运行数据库和应用程序服务器。您可能需要考虑使用 2 台机器作为数据库,2 台机器作为应用程序服务器 - 或者至少让 MSCS 删除运行 PostgreSQL 的节点上的应用程序服务器(我不确定它是否可以做到这一点,但我想它应该)