Tôi có một số phiên bản EC2 được triển khai với cấu hình tiêu chuẩn bao gồm proxy ngược và nhiều loại cổng API. Cả cổng và proxy ngược đều sử dụng HTTP/HTTPS và vì vậy hãy lắng nghe 80/443. Vấn đề rõ ràng ở đây là có xung đột cổng nếu các dịch vụ chia sẻ cùng một phiên bản, vì vậy tôi chỉ định mỗi cổng (không chuẩn) duy nhất, ví dụ 8080 và 7777.
Có cách nào để Terraform lưu trữ các dịch vụ này trên cùng một máy và ánh xạ các cổng thông qua NLB không. Ví dụ ở đây, bộ cân bằng tải mạng chấp nhận lưu lượng TCP trên 443 và chuyển tiếp tới một cổng không chuẩn.
https://api.domain.com --> (backend1.compute.internal:7777, backend2.compute.internal:7777)
https://web.domain.com --> (backend1.compute.internal:8080, backend2.compute.internal:8080)
Ở đây tôi có hai phiên bản EC2, phụ trợ1
và phụ trợ2
và 2 NLB api.domain.com
và web.domain.com
.
Tôi đã thử và không thể chuyển tiếp từ một aws_lb_listener
đến một aws_lb_target_group
sử dụng các cổng khác nhau. Ví dụ.
tài nguyên "aws_lb_listener" "api_ingress_http" {
load_balancer_arn = aws_lb.api_nlb.arn
giao thức = "TCP"
cổng = 80
Hành động mặc định {
gõ = "chuyển tiếp"
target_group_arn = aws_lb_target_group.api_http.arn
}
}
tài nguyên "aws_lb_target_group" "api_http" {
tên = "prod-api-http"
vpc_id = var.vpc_id
target_type = "ví dụ"
giao thức = "TCP"
port = 80 <<------------------- Nếu đây là 8080 hoặc 7777 thì không thành công
}
Làm cách nào để thiết lập một aws_lb_target_group
có một cổng khác với người nghe?
Ghi chú
Tôi cần độ trễ cực thấp và thông lượng cao nhất có thể, micro giây quan trọng ở đây. Điều này có nghĩa là Docker và ALB nằm ngoài câu hỏi (độ trễ được kiểm tra là phạm vi mili giây).