2016-08-02 2 views
2

Я хочу разделить порт http/80 для двух разных веб-приложений (webpi/website) внутри кластера кластеров услуг, приложение должно иметь 2 разных имя хоста:«Ошибка HTTP 503. Услуга недоступна» при совместном использовании портов с WebListener в сервисе Fabric

mywebapi.com и mywebsite.com

если я запускать приложения из ткани (консольное приложение) все работает отлично:

Первая консоль приложение

var _webHost = new Microsoft.AspNetCore.Hosting.WebHostBuilder() 
    .UseWebListener().UseContentRoot(Directory.GetCurrentDirectory()) 
    .UseStartup<Startup>().UseUrls("http://myWebApi.com/").Build(); 

Второе консольное приложение:

var _webHost = new Microsoft.AspNetCore.Hosting.WebHostBuilder() 
    .UseWebListener().UseContentRoot(Directory.GetCurrentDirectory()) 
               .UseStartup<Startup>() 
               .UseUrls(
               "http://myWebSite.com/" 
               ) 
               .Build(); 

но если я запускать приложения внутри локальной ткани я получаю:

HTTP Error 503. The service is unavailable.

я установку правильной ACL с netsh и SetupEntryPoint(no Access Denied on open).

На микрософт http.sys разрешено использование явного хоста.

ответ

0

Убедитесь, что вы удалили любые конфигурации конечных точек HTTP для порта 80 в вашем ServiceManifest.xml, в противном случае Service Fabric переопределит ваши ACL, относящиеся к домену. См. Здесь для информации: host multiple public sites on service fabric

+0

Можете ли вы подтвердить, что мне также нужно добавить новое правило брандмауэра? Кажется, что ткань создает urlacl и правило брандмауэра для коннектора. Если я не создаю правило брандмауэра на локальном компьютере (вход в компьютерный кластер и перемещение с помощью браузера), сайт вверх и доступен, но из кластера порт 80 закрыт, возможно, потому что пробник на этом порту не работает. Команды: netsh advfirewall firewall добавить имя правила = «FabricWebSite 80» dir = in action = разрешить протокол = TCP localport = 80 netsh http add urlacl url = http: //myWebApi.com: 80/user = "NT AUTHORITY \ NETWORK SERVICE " – Marco

0

Почему бы не просто опубликовать оба порта не 80 и использовать балансировщик нагрузки по умолчанию, чтобы переназначить его?

+0

У вас есть документация по этому вопросу? Я читаю, что балансировщик нагрузки по умолчанию не« маршрутизирует по имени хоста » – Marco

+0

Не могу помочь, просто начиная себя на экране Azure, у него есть URL-адрес, который переназначен, он может быть привязан к домен по умолчанию. В долгосрочной перспективе мы намерены использовать шлюз .Core, который имеет много маршрутизации, которые можно настроить. – user1496062

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