2

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

需要复制的服务器将运行以下内容:
- Windows Server 2008 R2 OS
- MS SQL 2008 R2 Std
- IIS 7.0 将运行在 asp.net 中构建的 Web 应用程序
- 多个后台服务,其中一些将数据写入数据库。这是在内部编写但没有复制方法的 .net 应用程序。

我的目标是让主服务器数据不断复制到辅助服务器,以便在发生故障时辅助服务器可以尽快开始充当主服务器。

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

4

1 回答 1

0

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

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

如果您有两个以上可用的服务器,我还建议您查看 Windows Server 中包含的一项功能 Windows 网络负载平衡 (NLB),请在http://technet.microsoft.com/en-us/上阅读有关 NLB 的更多信息库/cc725691.aspx。但是由于 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)
于 2014-01-17T22:11:43.003 回答