我在 IIS 上部署了 WCF 服务,并使用 SQL Server 2008 作为后端。
我的问题是:如何在 IIS 和 SQL Server 上创建集群(负载平衡/故障转移)以及在执行此操作之前需要记住哪些事项?(例如,我是否必须将会话从内存中移动到 SQL Server 等)
另外,如何确保两个SQL服务器始终拥有镜像数据,并且两个SQL服务器是否实时共享锁(行、页、表)信息?
这是我第一次谈这个。这就是所谓的网络农业吗?
我猜 IIS 和 SQL 位于不同的服务器上:
IIS:您可以使用 Microsoft NLB 功能在 2 个或更多服务器之间分散负载。它们可以是 Windows 的网络版本。它包含在 Windows 中。您将拥有一个客户端将连接到的虚拟 IP。服务器将“共享”此IP并将客户端传播到不同的服务器。组播/单播取决于网络、网卡数量以及服务器内部通信是否正常。NLB 不支持应用程序,如果关闭 IIS,如果您有亲和力,用户将会丢失。如果服务器从 IP 角度来看已关闭,NLB 就会删除该服务器。您必须按照此处的说明更改 IIS 元数据库(负载平衡器功能): http://technet.microsoft.com/en-us/library/cc757659 (WS.10).aspx 从许可证的角度来看,它包含在 Windows 中,不再需要任何费用。
从 WCF 的角度来看:客户端将连接到 X Web 服务器之一。当这台服务器工作时(通过亲和力),您可以将它们维护在同一台服务器上。关联性基于客户端 IP 和虚拟 IP 之间的哈希值。如果一台服务器出现故障,客户端将被调度到其他服务器。如果您使用 http 会话/身份验证,则必须将会话存储在服务器外部,例如数据库中。否则,当服务器出现故障时,客户端会话将会丢失。
SQL:您有不同的选择:使用SQL机制来复制数据库,或使用Microsoft MSCS(集群)。最后一项是Windows企业版和外部共享存储,这意味着成本很高(但仍然是SQL标准版)。使用 SQL 纯层,您可以镜像您的数据库。每个服务器都有一个本地存储,并且主服务器将事务动态发送到备用服务器(同步或异步)。当您的 Web 服务器连接时,服务器会通过 SQL 本机客户端和/或 ADO.Net 告诉他,在出现问题时有备用服务器可用。因此,如果出现问题,您的网络服务器会自动切换到备用服务器。这一切都适用于标准 SQL 版本。数据库需要处于完全恢复模式。它是针对每个数据库的,因此如果您的 WCF 使用多个数据库,并且只有一个数据库损坏,您将会遇到问题,因为一个数据库现在在备用服务器上处于活动状态,但所有其他数据库仍在主服务器上。
更多信息请访问: http://technet.microsoft.com/en-us/library/cc917680.aspx