最合适的高可用解决方案

Ale*_*ini 2 windows-server-2008 cluster hyper-v high-availability

我的公司在带有 IIS、SQL Server 和 3rd 方 Windows 服务(用 C# 编写,源代码可用于修改)的服务器中托管一个网站。

我们购买了一台新的相同服务器,由:1x Quad Core、12GB RAM、4x160GB SATA Raid 5、Windows Server 2008 R2 数据中心、公共 IP 组成。

我们的目标是将所有网页和第 3 方 Windows 服务置于高可用性状态。

在对如何配置故障转移群集和 Hyper-V 进行了一些实验室测试后,我们对“最佳”解决方案是什么深表怀疑,“最佳”意味着可维护并能够正确处理物理服务器故障。

关于我们应该如何配置两台服务器的任何建议?
我们不需要所有的配置步骤,只需提示正确的方向即可。

更新

  • 目前没有外部 SAN。
  • 提到的服务(SQL、IIS、自定义 Windows 服务)将需要最多的资源。
    可能会有 Exchange 服务器出现,但目前这并不重要。
  • 目前没有配置域控制器。

缺少元素,但我们不知道哪些元素比其他元素更重要,哪些是我们应该遵循的步骤。

更新2

  • 我们写下了我们认为适合我们需求的粗略想法。您可以在此处找到 pdf 。
  • 问题现在有奖。我知道这种东西背后有很多 IT 专业精神,奖励正确的建议是可以理解的。
  • 我们的想法基于这些假设(如果您发现它们有误,请纠正其中的任何一个):
    • 您需要一个域来创建 Windows 故障转移群集
    • 您无法在 Windows 故障转移群集上安装 Exchange
    • 域控制器单点故障

虚拟机似乎解决了所有这些问题,但它们也使用了大量资源。

难道没有更简单的故障转移配置,使用两台物理服务器来对 SQL 实例进行故障转移吗?
网页是无状态的,C# windows 服务主要在 SQL 数据库上运行,我想可以使用 NLB 配置它们吗?

如果您需要,请随时通过对此问题发表评论来询问更多信息。

sin*_*ing 5

所有这些服务都在一个系统上运行吗?我不知道系统上的负载是多少,但听起来实现主动-主动设置会很困难。

我想到的第一件事就是将 NLB 用于 Web 部分。将一个系统设置为主要系统,如果第一个系统出现故障,则将另一个系统接管。使用 SAFETY FULL 镜像您的数据库,以便在主体执行相同操作之前,从属服务器在其日志中发送正在强化的查询的确认。这确保您的数据在死亡时保持同步,假设您的应用程序可以处理此问题,因为它会增加一些延迟。数据库故障转移也可以通过镜像自动进行。

如果您的应用程序会话依赖于 IIS,则主动-主动无论如何都不会起作用,因为每台服务器都不知道另一台服务器上的会话。

编辑:链接到一些资源:

配置 NLB http://support.microsoft.com/kb/323437

配置数据库镜像 http://technet.microsoft.com/en-us/library/cc917680.aspx