我们的电子商务网站目前在两台服务器上运行:
- SQL 服务器:Windows Server 2003 Standard x86 上的 2005 x 86,配备单个双核处理器和 4 GB 内存
- IIS 服务器:Windows Server 2008 Web 版 x64,配备双四核超线程处理器和 32 GB 内存
我们的收入稳步增长,以至于我们需要部署具有故障转移机制的冗余服务器,以免出现任何停机时间。
由于 SQL 服务器与 Web 服务器相比功能太弱,因此我的想法是购买:
- 2 x SQL Server 2008 R2 Web 版 x64 单处理器许可证
- 2 个 Windows Server 2008 R2 Web 版许可证
- 1 台全新物理双四核 32 GB 服务器
- 1 个 F5 负载均衡器
我需要 Windows Server 2008 R2 Web Edition 许可证,以便可以在这两台服务器上的同一个机器上运行 SQL 和 IIS。
我们的想法是将其作为主动/被动故障转移群集运行,如果我们购买了额外的 SQL 许可,则可以将其升级为主动/主动群集。F5 负载平衡器将充当监控两台服务器的设备,如果当前活动的服务器停止响应,则故障转移到使用另一台服务器。需要明确的是,这不是 Windows 群集,而只是使用负载平衡器在两台计算机之间进行故障转移,这样您现在就拥有了一个一般意义上的群集。
这真的是实现我需要的最佳方式吗?有没有办法利用旧服务器 2003 SQL 服务器作为将 http 请求传送到适当的活动服务器并在发生问题时进行故障转移的设备?有没有第三方集群软件可以帮助我以更简单的方式实现这一点?
答案1
故障转移群集和网络负载平衡群集之间存在很大差异。对于 IIS,您需要实现 NLB 群集。两者都将始终处于活动状态。对于 SQL,您需要实现故障转移群集。实现您所暗示的可用性级别并不像投入一些硬件和安装操作系统那么简单。
故障转移群集将需要某种共享存储,如直接连接的 SAS 或 SAN(我更喜欢 iSCSI)。所有这些都可以在虚拟环境中实现,方法是使用 Hyper-V 群集 2 个运行 2008R2(企业版或更高版本)的服务器(至少 4 个网卡。2 个用于 SAN,1 个用于 NLB,1 个用于其他通信)。这些将连接到 SAN 交换机,然后 SAN 交换机又连接到 SAN。然后,两者都将连接到前端交换机(NLB 和其他)。然后,您可以将 NLB 群集创建为虚拟机,将 SQL 故障转移群集创建为虚拟机。
现在要添加一些基础设施。您需要域控制器(2 个物理盒)和一台备份服务器。总而言之,您需要花费 15 万美元及以上,以及真正了解自己在做什么的人。实现高可用性并不便宜。
哦,别忘了冗余电源和冷却。制定灾难恢复 (DR) 和业务连续性 (BC) 计划。
刚刚想到了一个替代方案。让您的网站托管在 99.99% 的服务水平协议 (SLA) 下。确保它是本地的,并参观一下数据中心。考虑到人力成本,从长远来看,这可能更便宜。
答案2
不要购买任何东西。你无论如何都不能购买 - 网络版仅供租用。签订 SPLA 合同。
购买的许可证不可用于托管,并且一般来说比 SPLA 许可证贵得多。
无需负载平衡器。使用 NLB(网络负载平衡),Windows 的一部分。它将非常快速地处理故障转移(注意:100% 正常运行时间很难实现 - 5 秒通常可以接受)。
使用 3 个服务运行 SQL(2 个标准,1 个快速)。镜像,使用快速作为见证 - Web 不允许良好的故障转移。
使用 NLB 在主动/主动配置中运行 Web 服务器。