/ / Load Balance / Fail-over dla samoistnej usługi Windows - .net, windows, wcf, aplikacja konsolowa

Load Balance / Fail-over dla samoistnej usługi Windows - .net, windows, wcf, aplikacja konsolowa

Zainstalowałem tę samą usługę Windows-Host na dwa różne serwery. (Jedna główna, jedna kopia zapasowa) Zasadniczo ta usługa zapewnia dostęp do protokołu HTTP (np. http://machine1:60001/getdata/123).

Ustawiłem konfigurację dla konsumentów, aby zawsze podłączać tę pierwszą (http://machine1:60001), ale wymaga to czasu, kiedy wdrażamy tę usługę.

Ponieważ ta usługa powinna być dostępna przez cały czas, czy istnieje prosty sposób na ustawienie równowagi obciążenia lub awarię dla tej usługi systemu Windows?

Nawiasem mówiąc, dla usługi self-host, ma interfejs: http://machine1:60001/amialive aby zdecydować, czy usługa jest dostępna. I chcę użyć tego interfejsu, aby zdecydować, czy jest OK.

Odpowiedzi:

1 dla odpowiedzi № 1

Inne niż te, o których musisz wiedzieć, są opisane w artykule MSDN na temat Równoważenie obciążenia WCF (na przykład należy wyłączyć KeepAlive, jeśli planowane jest używanie równoważenia obciążenia, a nie tylko konfiguracji trybu awaryjnego), można użyć dowolnej ogólnej technologii banlancingu obciążenia HTTP.

Sposób skonfigurowania równoważenia obciążenia HTTP zależy od wdrożenia i prawdopodobnie może zająć całe pytanie, ale w wersji szybkiej jest jakiś fragment sprzęt komputerowy, oprogramowanie, lub Usługa zewnętrzna który przechwytuje wszystkie żądania http://machine1:60001 który następnie kieruje połączenie do rzeczywistej maszyny fizycznej, która będzie hostować żądanie.


1 dla odpowiedzi nr 2

Po kilku dniach badania znalazłem wbudowaną funkcję WCF: system routingu WCF. (System.ServiceModel.Routing.IRequestReplyRouter)

Zasadniczo może on kierować wszystkie żądania WCFkoniec usługi klienta do miejsca docelowego. W rzeczywistości działa zarówno jako klient, jak i usługa WCF. Klient końcowy łączy się z tym (jako usługa WCF), a jednocześnie łączy się z usługami docelowymi (jako klient). Możesz uzyskać informacje poprzez app.config, który obejmuje zarówno konfigurację klienta, jak i konfigurację usługi.

Możesz znaleźć prostą implementację tutaj w msdn:

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