4

Мы пытаемся перенести нашу платформу с классического хоста IIS на архитектуру микросервиса сервисной сети. Таким образом, мы узнали, что ткань службы живет в наборе виртуальных машин и использует балансировщик нагрузки для связи с внешним миром.Azure Несколько публичных IP-адресов в наборе виртуальных машин с помощью диспетчера ресурсов

Проблема, с которой мы сталкиваемся сейчас, заключается в том, что у нас есть разные точки доступа к нашему приложению. Как один для браузера, один для мобильного приложения. Оба используют стандартный порт https, но это разные приложения.

В iis мы могли использовать заголовки хостов для прямого трафика к тому или иному приложению. Но с сервисной тканью мы не можем. Самый простой способ для нас - это несколько публичных IP-адресов. С этим мы могли бы справиться с dns. Мы рассмотрели пару решений без успеха.

  1. Балансировщик нагрузки с несколькими публичными IP-адресами. Проблема: похоже, что это работает только с облачными службами, и нам нужно работать с новым ресурсом Resource Manager World там, кажется, не возможно иметь несколько публичных IP-адресов.

  2. Несколько общественных балансировщиков нагрузки. Проблема: Масштабные наборы допускают только для типа балансировки нагрузки для балансировки нагрузки.

  3. Application Gateway. Кажется, не поддерживает множественное сопоставление заголовков публичных IP-адресов или хостов.

  4. Путь картирования. Проблема: у нас одинаковый путь в разных приложениях.

Мои вопросы:

Есть ли решение использовать несколько IP-адресов, и сопоставить трафик внутри к различным портам?

Есть ли возможность использовать сопоставление заголовков хостов с тканью обслуживания?

Любое предложение, как я могу решить свою проблему?

+0

В соответствии с этим документом возможно: «Конфигурация IP-интерфейса переднего плана - балансировщик нагрузки может включать в себя один или несколько IP-адресов переднего конца, иначе называемых виртуальными IP-адресами (VIP). Эти IP-адреса служат в качестве входа для трафика «. https://azure.microsoft.com/en-us/documentation/articles/load-balancer-arm/ – itaysk

ответ

1

Для развертывания кластера Service Fabric с несколькими IP-адресами можно использовать шаблоны ARM. Вы просто должны изменить шаблон немного:

  • Создать несколько ресурсов IP-адресов (например, с помощью copy) - убедитесь, что вы рассмотреть все ресурсы, используя IP и изменить их соответствующим образом
  • В балансировки нагрузки :
    • добавить несколько frontendIPConfigurations, каждый привязан к своему собственному IP
    • Добавить loadBalancingRules для каждого порта, который вы хотите перенаправить к виртуальным машинам из конфигурации IP конкретных фронтэнда
    • Добавить зонды

Как для отображения заголовка узла, это обрабатывается Windows API, HTTP-сервера (см this article). Все, что вам нужно сделать, это использовать определенное имя хоста (или даже путь URL) при настройке URL-адреса прослушивателя HTTP (в OWIN/ASP.NET Core).

2

Piling on some Service Ткань-специфическая информация для ответа Eli: Да, вы можете сделать все это и использовать собственный веб-сервер на основе http.sys для размещения нескольких сайтов с использованием разных имен хостов на одном VIP, например как Katana или WebListener в ASP.NET Core 1.

Часть, которая в настоящее время отсутствует в Service Fabric - это способ настройки имени хоста в определении конечной точки в ServiceManifest.xml. Сервисные услуги Fabric работают по умолчанию в Windows, что означает, что у службы не будет доступа для создания URL-адреса ACL для URL-адреса, к которому он хочет открыть конечную точку. Чтобы помочь в этом, когда вы указываете конечную точку HTTP в определении конечной точки в ServiceManifest.xml, Service Fabric автоматически создает для вас ACL URL. Но в настоящее время нет места для указания имени хоста, поэтому Service Fabric использует «+», что является сильным шаблоном, который соответствует всем.

На данный момент это просто неудобство, потому что вам нужно создать setup entry point с вашей службой, чтобы runs under elevated privileges запускал netsh для настройки URL-адреса ACL вручную.

Мы планируем добавить поле имени хоста в ServiceManifest.xml, чтобы сделать это проще.

Смежные вопросы