Windows Server上的PostgreSQL故障转移群集

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

  • 我们将使用4台运行Microsoft Windows Server的机器(很可能是2003)。
  • 所有四个将始终运行我们的应用程序,这本质上是一个Web服务。
  • 负载均衡是“外包” – 其他人负责处理服务器之间的Web请求分配。
  • 在任何时候,只有台服务器会主动运行PostgreSQL服务器。 另一台(四台)服务器也安装了数据库,但处于待机/被动状态。
  • DB数据存储在共享存储上 。 不在服务器之间复制数据。
    • 读取是由许多最终用户非常频繁地完成的,而且数据量很小。
    • 写入的次数less得多,用户less,数据量也非常大。

现在,如何configurationMicrosoft群集服务只保留数据库服务器的一个实例和应用程序的4个实例(每个服务器1个)? PostgreSQL和MSCS整合在一起吗?

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

  • 日志传送只能确保我有第二台服务器获取所有数据并准备好接pipe。 我如何实现实际的故障检测和故障切换
  • 切回:假设主站发生故障,系统自动故障切换到从站,之后主站恢复联机。 据我所知,随着WAL航运,这将需要再次重新configuration日志传送,而切换回来是远远不够的。 是这样吗?

使用通用服务模式,PostgreSQL可以正常使用MSCS。 build议您在共享驱动器上安装PostgreSQL二进制文件,并在那里指定服务 – 这样您就可以确保不会出现版本不匹配的情况。

Lars有一个好处就是不build议在同一台机器上运行db和appserver。 你可能会考虑使用2台机器作为数据库,2台作为应用服务器 – 或者至less让MSCS取下运行PostgreSQL的节点上的应用服务器(我不确定是否可以这样做,但是我会想象这应该)