ฉันมีอินสแตนซ์ 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 NLB api.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" {
ชื่อ = "prod-api-http"
vpc_id = var.vpc_id
target_type = "อินสแตนซ์"
โปรโตคอล = "TCP"
port = 80 <<------------------- หากเป็น 8080 หรือ 7777 จะล้มเหลว
}
ฉันจะตั้งค่าไฟล์ aws_lb_target_group
ที่มีพอร์ตที่แตกต่างจากผู้ฟัง?
บันทึก
ฉันต้องการเวลาแฝงที่ต่ำเป็นพิเศษและปริมาณงานสูงสุดที่เป็นไปได้ ไมโครวินาทีมีความสำคัญที่นี่ ซึ่งหมายความว่านักเทียบท่าและ ALB ไม่มีปัญหา (เวลาแฝงที่ทดสอบคือช่วงมิลลิวินาที)