Может ли сервер IIS в .NET Core развертывать серверы Kestrel на нескольких хостах?

Я знаю, что с .NET Core, когда вы «публикуете» в IIS, он работает как обратный прокси-сервер, маршрутизируя сообщения на серверы Kestrel, и гарантирует, что они останутся живыми. Тем не менее, я не видел нигде определенного, все эти серверы Kestrel развернуты на том же хосте, что и сервер IIS, или сервер IIS может быть на одном хосте и развертывать серверы Kestrel на отдельных и отдельных хостах с их собственными IP-адресами?

Если нет, то какова стратегия развертывания в производстве? Каждая виртуальная машина должна иметь свои собственные IIS, развертывая 1-n Пустелей? Тогда вам понадобится отдельный, например, балансировщик нагрузки F5 поверх серверов IIS?

Спасибо за любой вклад в этом 🙂

2 ответа

  1. Конечно, вы можете использовать Kestrel для самостоятельного размещения без IIS (просто удалите UseIISIntegrationи прослушивайте на IP-адресе без замыкания на себя), но это не должно быть интернет-приложением (оно еще не готово к этому). Но вы должны настроить IIS вручную для маршрутизации / балансировки запроса к ips / services позади. «Автоматическое обнаружение служб» не предусмотрено. Кроме того, вы должны будете управлять жизненным циклом самостоятельно (т. е. приложение больше не будет останавливаться/перезапускаться IIS).

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

    Таким образом, если вы работаете с микросервисами, вам придется использовать какую-то вещь, как ZooKeeper из мира java (в основном хранилище ключевых значений, где каждый веб-сервис регистрируется там с ним, и вы используете значения для широковещательной передачи/маршрутизации запросов) или etcd, возможно, даже redis.

    Возможно, взгляните на Service Fabric, он также может использоваться в помещениях (что-то в этом роде ).