主服务器和热备服务器体系结构

时间:2013-12-18 08:31:48

标签: sql-server-2008 iis architecture operating-system application-layer

我现在开始考虑为 Intranet 网络构建适当的架构,其中一个主服务器和一个辅助服务器我想作为热备用运行。 我对此的了解非常少,我正在寻找可以帮助我入门的指南和文章。

需要复制的服务器将运行以下命令:
- Windows Server 2008 R2操作系统
- MS SQL 2008 R2标准版 - IIS 7.0将运行在asp.net中构建的Web应用程序 - 几种后台服务,其中一些服务将数据写入数据库。这是内部编写但没有复制方法的.net应用程序
我的目标是将主服务器数据不断复制到辅助服务器,以便在出现故障时,Seconday服务器可以尽快开始充当主服务器。

我的问题是:
1.在这种情况下,推荐的硬件拓扑是什么?除了两台服务器机器之外,我还需要任何额外的硬件作为 DNS 服务器来解决到正确服务器的计数吗? 如果没有,如何用软件完成?
2.数据库复制 - 我知道我需要使用某种日志传送才能在数据库之间进行同步。有哪些限制和指导方针?我需要知道是否需要权衡良好的性能与数据库的最新复制。一篇好文章会有所帮助 3.考虑到重写服务应用程序以支持在某种“被动”模式下运行并在服务器之间传输状态数据可能是不可能的,应该在辅助机器上对这些服务做些什么?

1 个答案:

答案 0 :(得分:0)

我认为您采用了错误的方法,而不是使用热备用,您应该使用负载平衡和群集来提供可用性。

我的建议是在两台服务器上运行Web应用程序,并使用IP Load Balancer在两台服务器之间分配请求。如果其中一个服务器变得不可用,则用户请求将不再路由到该服务器,并且用户将不会真正注意到已发生中断。您应该尝试在公司基础架构中使用现有的负载均衡器。

如果您有两台以上的服务器,我还建议您查看Windows网络负载平衡(NLB),其中包含Windows Server中的一项功能,请在http://technet.microsoft.com/en-us/library/cc725691.aspx阅读有关NLB的更多信息。但由于在同一台服务器上不支持NLB和故障转移群集,如果您只有两台服务器,我不建议这样做。

对于数据库,我建议您使用2节点主动 - 被动数据库群集,而不是部署两个单独的SQL实例,并在它们之间进行复制。在群集配置中,SQL Server在单个服务器上运行,但如果该服务器出现问题,SQL Server会自动切换到其他服务器。在http://sql.starwindsoftware.com/sql-server-clustering-technology了解有关SQL Server群集的更多信息。

实现群集解决方案将需要两台服务器之间的某种共享磁盘,因为两台服务器都可以是活动实例,它们必须能够写入相同的磁盘。如果您的组织有可用的SAN,那么这是共享磁盘的首选。

但现在问题来自后台服务。如果它们无法修改,您只需要提供一些机制来在服务器发生故障时移动它们。如果监视服务器,您可以让技术人员启动一个脚本,该脚本在另一台服务器上启动服务。手动操作永远不可靠,但如果你不能重写它们,你没有太多选择。

如果您推荐两台服务器:

          HW IP Load Balancer
                  |
    -----------------------------
    |                           |
SERVER A                     SERVER B
ASP.NET web app              ASP.NET web app
SQL Server (active)          SQL Server (passive)
Bg services (not running)    Bg services (running)

我建议你有四台服务器:

        HW IP LB or Windows NLB
                  |
    -----------------------------
    |                           |
SERVER A                     SERVER B
ASP.NET web app              ASP.NET web app
    |                           |
    -----------------------------
                  |
    -----------------------------
    |                           |
SERVER C                     SERVER D
SQL Server (active)          SQL Server (passive)
Bg services (not running)    Bg services (running)