我的公司在一台装有 IIS、SQL Server 和第三方 Windows 服务(用 C# 编写,源代码可供修改)的服务器上托管一个网站。
我们购买了一台新的相同的服务器,其组成为:1x 四核、12GB RAM、4x160GB SATA Raid 5、Windows Server 2008 R2 数据中心、公共 IP。
我们的目标是使所有网页和第三方 Windows 服务处于高可用性状态。
在对如何配置故障转移群集和 Hyper-V 进行一些实验室测试之后,我们对“最好的“解决方案是,通过”最好的“意味着可维护并且能够正确处理物理服务器故障。
关于如何配置这两台服务器,有什么建议吗?
我们不需要所有的配置步骤,只需要一个关于正确方向的提示。
更新:
- 目前没有外部 SAN。
- 上述服务(SQL、IIS、自定义 Windows 服务)将需要最多的资源。
可能会有 Exchange 服务器,但目前这并不重要。 - 目前没有配置域控制器。
有些因素是缺失的,但我们不知道哪些因素比其他因素更重要,以及我们应该遵循哪些步骤。
更新2:
- 我们写下了我们认为可以满足我们需求的粗略想法。您可以找到 pdf这里。
- 问题现在有悬赏。我知道这类事情背后有很多 IT 专业知识,奖励正确的建议是可以理解的。
- 我们的想法基于以下假设(如果发现任何错误,请纠正):
- 您需要一个域来创建 Windows 故障转移群集
- 您无法在 Windows 故障转移群集上安装 Exchange
- 域控制器Domain controller是单点故障
虚拟机似乎解决了所有这些问题,但它们也消耗了大量的资源。
有没有更简单的故障转移配置,使用两台物理服务器来仅对 SQL 实例进行故障转移?
网页是无状态的,而 C# Windows 服务主要在 SQL 数据库上运行,我猜可以使用 NLB 来配置它们?
如果需要的话,请随时通过对此问题发表评论来询问更多信息。
答案1
所有这些服务都在一个系统上运行吗?我不知道系统的负载是多少,但听起来实现主动-主动设置会很困难。
我首先想到的是只对 Web 部分使用 NLB。将一个系统设置为主系统,另一个系统在第一个系统发生故障时接管。使用 SAFETY FULL 镜像您的数据库,以便从属系统在主系统执行相同操作之前在其日志中发送查询被强化的确认。这可确保您的数据在其中一个系统死机时保持同步,假设您的应用程序可以处理这种情况,因为它会增加一些延迟。数据库故障转移也可以通过镜像自动进行。
如果您依赖 IIS 进行应用程序会话,则主动-主动将无法工作,因为每台服务器都不知道另一台服务器上的会话。
编辑:一些资源的链接:
配置 NLB http://support.microsoft.com/kb/323437
配置数据库镜像 http://technet.microsoft.com/en-us/library/cc917680.aspx
答案2
听起来你的想法是对的。我猜你把所有东西都放在了外部 SAN 上,对吧?
答案3
我的假设是你正在谈论没有 COOP 的 HA。
以下建议将为您提供 HA 和 COOP,利用行业领导者。
一些建议:
(1)迁移到 VMware 而不是 Hyper-V。
(2)使用 V2P 软件将物理操作系统迁移到虚拟操作系统
(3)将 SQL 服务器迁移到专用虚拟机,并迁移到主动-主动模式
(4)使用 Netapp 抽象存储
(5)为您的 COOP 站点购买额外的 Netapp + x86 服务器,或 2 个
结果:
您应该拥有抽象的 RAID6 存储,可在本地和远程使用。Netapps 应该正在复制
您应该有多个 VM 运行您的 Web 服务器(IIS 群集)和 C# 应用程序
您应该有多个 VM 运行您的数据库
注意:
如果您的数据库对性能非常敏感,请考虑将其保持物理状态。
答案4
了解 VMware FT 技术:http://www.vmware.com/products/fault-tolerance/overview.html