Application Load Balancer พร้อม ECS Fargate

Oct 18 2020

ฉันกำลังพยายามกำหนดค่าการจัดสรรภาระงานสำหรับ Fargate ECS ความเข้าใจของฉันคือมีกลุ่มเป้าหมายอย่างน้อยสองกลุ่ม กลุ่มเป้าหมายกลุ่มหนึ่งถูกสร้างขึ้นพร้อมกับ Application Load Balancer และกลุ่มเป้าหมายหนึ่งกลุ่มจะถูกสร้างขึ้นพร้อมกับบริการ ECS

คอนเทนเนอร์ของฉันกำลังเรียกใช้บริการบนพอร์ต TCP 5000 ฉันต้องการให้ตัวโหลดบาลานเซอร์แสดง HTTPS ผ่านพอร์ต 443 ปกติเท่านั้นและเปลี่ยนเส้นทาง HTTP ไปยัง HTTPS หรือหากทำได้ยากให้ปล่อย HTTP

ฉันเห็นว่าผู้ฟังอนุญาตให้ระบุสิ่งต่างๆมากมาย อย่างไรก็ตามฉันสับสนกับกลุ่มเป้าหมายที่สร้างขึ้นด้วยบริการ มัน - IPกลุ่ม -type ฟังพอร์ต 80 ไม่ว่าฉันจะเลือก HTTP หรือ HTTPS ในระหว่างการสร้าง / กำหนดค่าบริการ

ตู้คอนเทนเนอร์ของฉันไม่เคยมีคนสัญจรเลย ฉันเปิดใช้งานการบันทึกตัวจัดสรรภาระงานดูเหมือนว่าตัวปรับสมดุลไม่เข้าใจสิ่งที่ฉันต้องการให้ทำ มี"forward" "-" "-" "-" "-" "-" "-"ในบันทึกของทุกสิ้นการร้องขอ

ฉันวิ่งaws elbv2 describe-target-groupsไปหาคำจำกัดความ

{
  "TargetGroups": [
    {
        "TargetGroupArn": "arn:aws:elasticloadbalancing:us-east-1:505963211XXX:targetgroup/ecs-fargate-api-service-tg/1ebb89754b34d072",
        "TargetGroupName": "ecs-fargate-api-service-tg",
        "Protocol": "HTTPS",
        "Port": 80,
        "VpcId": "vpc-e623dd9b",
        "HealthCheckProtocol": "HTTPS",
        "HealthCheckPort": "traffic-port",
        "HealthCheckEnabled": true,
        "HealthCheckIntervalSeconds": 30,
        "HealthCheckTimeoutSeconds": 5,
        "HealthyThresholdCount": 5,
        "UnhealthyThresholdCount": 2,
        "HealthCheckPath": "/cookie-policy",
        "Matcher": {
            "HttpCode": "200"
        },
        "LoadBalancerArns": [
            "arn:aws:elasticloadbalancing:us-east-1:505963211XXX:loadbalancer/app/node-api-lb/f5e512a2678688f5"
        ],
        "TargetType": "ip"
    },
    {
        "TargetGroupArn": "arn:aws:elasticloadbalancing:us-east-1:505963211XXX:targetgroup/node-api-tg/7544b53ab1720e0d",
        "TargetGroupName": "node-api-tg",
        "Protocol": "HTTPS",
        "Port": 443,
        "VpcId": "vpc-e623dd9b",
        "HealthCheckProtocol": "HTTPS",
        "HealthCheckPort": "traffic-port",
        "HealthCheckEnabled": true,
        "HealthCheckIntervalSeconds": 300,
        "HealthCheckTimeoutSeconds": 5,
        "HealthyThresholdCount": 5,
        "UnhealthyThresholdCount": 2,
        "HealthCheckPath": "/cookie-policy",
        "Matcher": {
            "HttpCode": "200"
        },
        "LoadBalancerArns": [
            "arn:aws:elasticloadbalancing:us-east-1:505963211XXX:loadbalancer/app/node-api-lb/f5e512a2678688f5"
        ],
        "TargetType": "instance"
    }
  ]
}

ผมทำอะไรผิดหรือเปล่า? ฉันจะตั้งค่าตัวโหลดบาลานเซอร์แอปพลิเคชันให้ ECS Fargate มี HTTPS ที่ภายนอกและกำหนดเส้นทางทุกอย่างไปยัง PORT คอนเทนเนอร์ที่ถูกต้องได้อย่างไร

คำตอบ

1 Marcin Oct 18 2020 at 12:59

ตามความคิดเห็นภาพหน้าจอ

สร้าง ALB ก่อน

คุณสามารถสร้าง TG ของคุณเมื่อคุณสร้าง ALB ของคุณ (ALB เรียกว่าddddในตัวอย่างของฉัน) หรือล่วงหน้า นอกจากนี้ผมตั้งชื่อกลุ่มเป้าหมายของฉันของฉัน-tg สำหรับ fargate ฉันใช้พอร์ต 80 (คุณอาจต้องใช้ 5,000) เนื่องจากฉันใช้nginxdemos / helloเป็นคอนเทนเนอร์ของฉัน ตรวจสอบให้แน่ใจว่าได้สร้างประเภทเป้าหมาย IPไม่ใช่อินสแตนซ์ Farget จะไม่ทำงานกับอินสแตนซ์ TGs โดยอธิบายว่าเหตุใดคุณจึงไม่เห็นสิ่งเหล่านี้ในคอนโซล ECS เมื่อสร้างบริการ ECS ของคุณ

สร้างบริการ ECS Fargate

เมื่อคุณสร้างบริการ Fargate ในคอนโซล ECS คุณจะมีตัวเลือกให้เลือกALB ที่มีอยู่ (ในกรณีของฉันdddd) และกลุ่มเป้าหมายที่มีอยู่ (ในกรณีของฉันเรียกว่าmy-tg-for-fargateคุณไม่จำเป็นต้องสร้างtg ที่สอง :