我希望建立一个尽可能冗余的架构,以便仅使用 3 台服务器(仅 5U 机架空间)为以数据为中心的 Web 应用程序提供服务。在这两种设置中,哪一种最理想?每种设置各有哪些优缺点?
选项1:
- 2 个 Web 服务器 + 1 个数据库服务器。Web 服务器将具有中等功能,并由负载平衡器提供流量,而数据库服务器将是一台非常强大的机器,具有尽可能多的板载冗余(电源、热插拔硬盘等)。
选项 2:
- 3 台相同的服务器,每台都运行 IIS 和 SQL Server。它们都比选项 1 的 Web 服务器更强大,每台都具有 RAID 5/10 设置、大量 RAM、8-16 个内核等。不过,我不确定它们是否具有热插拔驱动器或电源等功能。
我喜欢选项 1 的简单性,但不喜欢数据库服务器成为重大故障点。选项 2 似乎解决了数据库问题,但我确信将数据库镜像到 3 个实例并与 IIS 一起运行会有一些注意事项。
有什么想法吗?提前致谢。
答案1
如果您的目标是高可用性 (HA),那么您确实应该有一个单独的站点用于灾难恢复。如果您的机架断电会发生什么?您的应用程序将离线。对于数据库服务器来说,数据库镜像是一种很好的、便宜的解决方案。您还可以考虑双重复制或甚至复制 SAN(更昂贵),以便您也可以复制 Web 服务器。
对于本地 HA,您可以在计算机 A 和 B 上设置负载平衡的 Web 服务器。然后在计算机 B 和 C 上设置 SQL Server 故障转移群集,其中 B 为被动节点,C 为主动节点。这意味着计算机 A 和 B 将为 Web 请求提供服务,并将这些请求传递给计算机 C 上的数据库服务器。如果计算机 C 死机,数据库将故障转移到计算机 B,从而为您提供冗余,但可能会影响性能。如果计算机 A 死机,则计算机 B 将接管。如果计算机 B 死机,则计算机 A 将照常为 Web 请求提供服务,而计算机 C 将照常为数据库请求提供服务。即使有两台机器停机(只要它们都不是 Web 服务器),您的应用程序仍将运行,但性能会受到很大影响。
我喜欢 phoebus 关于使用虚拟机的建议,但是您确实需要使用虚拟机测试性能,因为它可能是一个限制因素。不过,我不会集群虚拟机,我宁愿依靠 Vmotion 进行故障转移。为了提高性能,我也会在每个主机上只使用 1 个虚拟机 - 在我看来,在每个主机上创建超过 1 个虚拟机没有任何好处。不过,请注意虚拟机的局限性 - RAM 和 CPU 减少。您还需要一个经验丰富的人来完全优化配置它。例如,我发现在某些情况下,通过将虚拟机的 vCPU 数量减少到 1,性能可以提高。
需要进行大量测试和基准测试才能找到最佳解决方案,但我的直觉是使用负载平衡的 Web 服务器和 SQL Server 群集。确保您的磁盘阵列可以配置为共享磁盘。