【问题标题】:Load Balance / Fail-over for Self-host Windows Service自托管 Windows 服务的负载平衡/故障转移
【发布时间】:2015-09-08 05:15:53
【问题描述】:

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

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

由于该服务应该一直可用,有没有简单的方法来设置负载平衡,或为该 Windows 服务进行故障转移?

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

【问题讨论】:

    标签: .net windows wcf console-application


    【解决方案1】:

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

    您如何设置 HTTP 负载平衡完全取决于您的部署,并且可能会占用整个问题本身,但快速版本是您有一些 hardwaresoftware3rd party service 拦截所有请求http://machine1:60001,然后将连接定向到将托管请求的实际物理机器。

    【讨论】:

      【解决方案2】:

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

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

      你可以在msdn这里找到简单的实现:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-05
        • 2010-10-23
        • 2012-01-10
        • 1970-01-01
        • 2021-11-05
        • 2016-02-20
        相关资源
        最近更新 更多