我们正在寻找有关如何为我们的应用程序设置基本故障转移集群的建议:
- 我们将使用4 台运行 Microsoft Windows Server 的机器(很可能是 2003 年)。
- 所有四个都将始终运行我们的应用程序,它本质上是一个 Web 服务。
- 负载平衡是“外包”的 - 其他人处理服务器之间的 Web 请求分配。
- 在任何给定时间,只有一台服务器会主动运行 PostgreSQL 服务器。另一台服务器(四台)也安装了数据库,但处于备用/被动状态。
- DB 数据存储在共享存储上。没有在服务器之间复制数据。
- 许多最终用户非常频繁地读取数据,并且读取的数据块相当小。
- 写入的频率要低得多,用户更少,而且数据量非常大。
现在,如何配置 Microsoft Cluster Service 以始终仅保留数据库服务器的一个实例和应用程序的 4 个实例(每台服务器 1 个)?PostgreSQL 是否与 MSCS 完美集成?
更新:我还考虑使用日志传送在几个数据库服务器上复制数据,而不是将数据保存在共享存储上。这个选项有两个问题:
- 日志传送只会确保我有第二台服务器来获取所有数据并准备好接管。如何实现实际的故障检测和故障转移切换?
- 切换回:假设master出现故障,系统自动故障切换到slave,稍后master重新上线。我知道使用 WAL 传送这将需要再次重新配置日志传送,并且切换回远非无缝。是这样吗?