自主Windows服务的负载平衡/故障转移

时间:2015-09-08 05:15:53

标签: .net windows wcf console-application

我已将相同的自主Windows服务部署到2个不同的服务器。 (一个主要,一个备份) 基本上,此服务提供HTTP协议访问(例如http://machine1:60001/getdata/123)。

我已为消费者设置了配置,以便始终连接主要服务器(http://machine1:60001),但每当我们部署此服务时,这需要一些停机时间。

由于此服务应始终可用,是否有任何简单的方法可以为此Windows服务设置负载平衡或故障转移?

顺便说一下,对于自托管服务,它有一个接口:http://machine1:60001/amialive来决定该服务是否可用。我想用这个界面来判断它是否正常。

2 个答案:

答案 0 :(得分:1)

Load Balancing WCF上的MSDN文章中概述了您需要注意的几个问题(例如,如果您计划使用负载平衡而不仅仅是故障转移设置,则应禁用KeepAlive),您可以使用任何通用HTTP负载banlancing techneque。

如何设置HTTP负载均衡取决于您的部署,并且可能会占用整个问题,但快速版本是您有一些hardwaresoftware或{{ 3}}拦截3rd party service的所有请求,然后将连接指向将托管请求的实际物理机器。

答案 1 :(得分:1)

经过几天的调查,我发现了一个WCF内置功能:WCF路由系统。 (System.ServiceModel.Routing.IRequestReplyRouter)

基本上,它可以将所有WCF请求从最终客户端路由到目标服务。实际上,它既可以作为客户端,也可以作为WCF服务。终端客户端连接到此(作为WCF服务),同时连接到目标服务(作为客户端)。您可以通过app.config获取信息,其中包括客户端配置和服务配置。

您可以在msdn:

中找到简单的实现

https://msdn.microsoft.com/en-us/library/ee667246(v=vs.110).aspx