Я не думаю, что ограничение эфемерного порта будет для вас проблемой, скорее всего, вы будете использовать все ресурсы сервера (ЦП + память) даже до того, как будете использовать половину этих портов.
Для выполнениято, что вам нужно, возможно, но это потребует от вас создания сценария или приложения, которое будет отвечать за создание и управление конфигурацией для развернутых экземпляров службы.
Я бы не использовал встроенный обратный прокси-сервер,оно очень ограничено, и для того, что вы хотите, просто добавьте дополнительную конфигурацию без какой-либо выгоды.
В данный момент я вижу traefik как наиболее подходящее решение.Traefik позволяет вам направлять определенные домены к определенным службам, и это именно то, что вам нужно.
Поскольку вы будете использовать несколько доменов, потребуется динамическая конфигурация, которая не предоставляется "из коробки", поэтомуЯ предложил вам создать отдельное приложение для развертывания этих экземпляров.Шаги очень высокого уровня будут:
- Вы определяете свою службу с правилами по умолчанию traefik, как показано здесь
- Из вашего менеджера приложений вы развертываете новыйименованная служба этой службы для нового клиента
- После развертывания экземпляра вы настраиваете его на прослушивание в определенном домене, устанавливая для правила
traefik.frontend.rule=Host:tenant1.myapp.com
правильное имя клиента
Возможно, вам придется добавить некоторые дополнительные конфигурации, но это приведет вас к правильному пути.
Что касается кластерной архитектуры, вы можете сделать это разными способами, для начала, я бы порекомендовал вам сделать это простым,Тип узла FrontEnd, содержащий сервисы traefik, и другой тип узла BackEnd для ваших сервисов, оттуда вы можете решить, как правильно планировать кластер, уже есть много SO-ответов о том, как определить кластер.
См. Дополнительную информацию по следующим ссылкам:
https://blog.techfabric.io/using-traefik-reverse-proxy-for-securing-microservices-on-azure-service-fabric/
https://docs.traefik.io/configuration/backends/servicefabric/