2015-09-08 3 views
0

Я развернул одну и ту же службу Windows с одним хостом на 2 разных серверах. (Одна основная, одна резервная копия) В основном, эта услуга обеспечивает доступ к протоколу HTTP (например, http://machine1:60001/getdata/123).Баланс загрузки/сбой для службы самообслуживания Windows

Я установил конфигурацию для потребителей, чтобы постоянно подключать первичный (http://machine1:60001), но для разворачивания этой службы требуется некоторое время простоя.

Поскольку эта услуга должна быть доступна все время, есть ли простой способ установить баланс нагрузки или выполнить сбой для этой службы Windows?

Кстати, для службы самообслуживания у нее есть интерфейс: http://machine1:60001/amialive, чтобы решить, доступна ли услуга. И я хочу использовать этот интерфейс, чтобы решить, все ли в порядке.

ответ

1

. Помимо некоторых проблем, о которых вам следует знать, изложены в статье MSDN на странице Load Balancing WCF (например, вы должны отключить KeepAlive, если вы планируете использовать балансировку нагрузки, а не только настройки перехода на другой ресурс), вы можете использовать любые общие Технология загрузки HTTP-трафика.

Как настроить HTTP балансировки нагрузки все зависит от развертывания и, вероятно, может занять сам по себе весь вопрос, но быстрая версия у вас есть какая-то частичка hardware, software или 3rd party service, который перехватывает все запросы на http://machine1:60001, которые затем направляет соединение на фактическую физическую машину, на которой будет размещаться запрос.

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