我已将相同的自主Windows服务部署到2个不同的服务器。 (一个主要,一个备份) 基本上,此服务提供HTTP协议访问(例如http://machine1:60001/getdata/123)。
我已为消费者设置了配置,以便始终连接主要服务器(http://machine1:60001),但每当我们部署此服务时,这需要一些停机时间。
由于此服务应始终可用,是否有任何简单的方法可以为此Windows服务设置负载平衡或故障转移?
顺便说一下,对于自托管服务,它有一个接口:http://machine1:60001/amialive来决定该服务是否可用。我想用这个界面来判断它是否正常。
答案 0 :(得分:1)
在Load Balancing WCF上的MSDN文章中概述了您需要注意的几个问题(例如,如果您计划使用负载平衡而不仅仅是故障转移设置,则应禁用KeepAlive),您可以使用任何通用HTTP负载banlancing techneque。
如何设置HTTP负载均衡取决于您的部署,并且可能会占用整个问题,但快速版本是您有一些hardware,software或{{ 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