Как запустить несколько экземпляров размещенной службы OWIN в кластере разработки?

Я прошел учебник по хостингу OWIN и все заработало, но когда я изменил значение InstanceCount на -1, кажется, что каждый экземпляр службы пытается прослушивать порт 80 в методе OpenAync, когда он вызывает WebApp.Start .

Я предполагал, что Service Fabric будет динамически управлять портами по мере запуска служб, чтобы избежать конфликтов портов, но, похоже, этого не происходит.


person rjdevereux    schedule 20.05.2015    source источник


Ответы (1)


InstanceCount, равный -1, имеет смысл только для служб без отслеживания состояния, работающих в кластере с несколькими компьютерами. В этом случае каждый узел работает на своем собственном компьютере, поэтому у вас нет конфликтов портов, и вы можете настроить балансировщик нагрузки Azure для циклического перебора трафика через компьютеры, на которых размещены эти экземпляры.

В локальном кластере все узлы находятся на одной машине, поэтому, если они попытаются использовать общий префикс HTTP, они действительно будут конфликтовать. Чтобы избежать этого, просто установите InstanceCount для своих служб без сохранения состояния на 1 для локальных развертываний.

Все это требуется только в тех случаях, когда вы хотите общаться со своими службами, используя предопределенный порт. Если вы не укажете порт в манифесте службы, платформа автоматически назначит его при запуске службы. Однако тогда клиенты должны динамически обнаруживать ваши конечные точки с помощью API-интерфейсов разрешения имен платформы, что часто нежелательно.

В результате общий шаблон заключается в том, что внешний интерфейс вашего приложения без сохранения состояния прослушивает предопределенный порт, который затем выполняет преобразование имен для ретрансляции запросов другим службам. Эти службы второго уровня могут прослушивать порт, динамически назначаемый платформой.

person Sean McKenna    schedule 21.05.2015