У меня развернуто несколько экземпляров EC2 со стандартной конфигурацией, состоящей из обратного прокси-сервера и набора шлюзов API. Шлюзы и обратные прокси-серверы используют HTTP/HTTPS и поэтому прослушивают 80/443. Очевидная проблема заключается в том, что существуют конфликты портов, если сервисы используют один и тот же экземпляр, поэтому я назначаю каждому уникальный (нестандартный) порт, например 8080 и 7777.
Есть ли способ с Terraform разместить эти сервисы на одних и тех же машинах и сопоставить порты через NLB. Например, здесь балансировщик сетевой нагрузки принимает TCP-трафик на 443 и перенаправляет на нестандартный порт.
https://api.domain.com --> (backend1.compute.internal:7777, backend2.compute.internal:7777)
https://web.domain.com --> (backend1.compute.internal:8080, backend2.compute.internal:8080)
Здесь у меня есть два экземпляра EC2, бэкенд1
и бэкэнд2
и 2 НЛБ api.domain.com
и web.domain.com
.
Я пытался и не смог переслать с aws_lb_listener
к aws_lb_target_group
используя разные порты. Например.
ресурс "aws_lb_listener" "api_ingress_http" {
load_balancer_arn = aws_lb.api_nlb.arn
протокол = "TCP"
порт = 80
default_action {
тип = "вперед"
target_group_arn = aws_lb_target_group.api_http.arn
}
}
ресурс "aws_lb_target_group" "api_http" {
имя = "продукт-апи-http"
vpc_id = var.vpc_id
target_type = "экземпляр"
протокол = "TCP"
port = 80 <<------------------- Если это 8080 или 7777, он не работает
}
Как настроить aws_lb_target_group
у которого другой порт от слушателя?
Запись
Мне нужна сверхнизкая задержка и максимально возможная пропускная способность, здесь важны микросекунды. Это означает, что о Docker и ALB не может быть и речи (тестируемая задержка составляет миллисекунды).