У меня есть вариант использования, когда мне нужно настроить AWS Network Load Balancer, который прослушивает примерно 20 000 различных портов с высоким уровнем (30 000+). NLB должен находиться перед набором целевых узлов (экземпляров EC2) и направлять трафик с порта, который прослушивает NLB, на тот же порт в одном из экземпляров EC2 (все экземпляры EC2 будут прослушивать все порты). , так что циклический перебор между инстансами EC2 вполне удобен). Например, request->NLB:32355->{one of any instance}:32355
.
Я вижу, что могу создавать TargetGroups, которые позволяют мне указать набор экземпляров и порты, через которые они должны быть доступны. Однако мне непонятно, как я могу связать порт на балансировщике сетевой нагрузки с портом на одном из экземпляров. Например, мне нужен порт 32355 на NLB, чтобы его отправили на порт 32355 на любом из инстансов EC2, но только на этот порт, и то же самое должно произойти для всех остальных 19 999 портов, которые я прослушиваю.
Дальнейший контекст: это кластер Kubernetes с кучей узлов за NLB, у которых есть открытые порты NodePorts. Мне нужно связаться с этими NodePorts через NLB. Прежде чем появятся предложения о различных способах обработки этого на k8s: поверьте мне, мы все продумали, и вариант глобального порта LB->node является нашим лучшим выбором здесь.
Дополнительный вопрос: количество узлов, стоящих за NLB, является эластичным и может увеличиваться или уменьшаться в любое время. Есть ли динамический способ, с помощью тегов или чего-то еще, чтобы гарантировать, что TargetGroups содержит все узлы, которые мне нужны?