Application Load Balancer con ECS Fargate
Sto cercando di configurare il bilanciamento del carico per Fargate ECS. A quanto mi risulta, esistono almeno due gruppi target. Un gruppo target viene creato insieme ad Application Load Balancer e un gruppo target viene creato insieme al servizio ECS.
I miei contenitori eseguono il servizio sulla porta TCP 5000. Desidero che il bilanciamento del carico esponga solo HTTPS sulla normale porta 443 e reindirizzi HTTP a HTTPS o, se è difficile, elimina HTTP.
Vedo che Listeners consente di specificare un sacco di cose. Tuttavia, sono confuso dal gruppo target creato con il servizio. It - il IPgruppo -type, ascolta sulla porta 80. Sia che seleziono HTTP o HTTPS durante la creazione / configurazione del servizio.
I miei contenitori non ricevono mai traffico. Ho abilitato la registrazione del bilanciamento del carico, sembra che il bilanciatore non capisca cosa voglio che faccia. Lì "forward" "-" "-" "-" "-" "-" "-"nel registro alla fine di ogni richiesta.
Sono corso aws elbv2 describe-target-groupsa prendere le definizioni.
{
"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"
}
]
}
Che cosa sto facendo di sbagliato? Come devo fare per configurare un bilanciatore del carico dell'applicazione per ECS Fargate per avere HTTPS all'esterno e instradare tutto alla PORTA del contenitore corretta?
Risposte
Sulla base dei commenti, gli screenshot.
Per prima cosa crea ALB
Puoi creare il tuo TG quando crei il tuo ALB (ALB si chiama dddd nel mio esempio), o in anticipo. Inoltre, ho chiamato il mio gruppo target my-tg-for-fargate . Ho usato la porta 80 (probabilmente avrai bisogno di 5000) poiché ho usato nginxdemos / hello come contenitore. Assicurati di creare il tipo di destinazione IP , non l'istanza. Farget non funzionerà con i TG di istanza, spiegando perché non puoi vederli nella console ECS quando crei il tuo servizio ECS.
Crea il servizio ECS Fargate
Quando crei il tuo servizio Fargate nella console ECS, avrai la possibilità di scegliere l' ALB esistente (nel mio caso dddd) e il gruppo target esistente (nel mio caso chiamato my-tg-for-fargate. Non è necessario creare un secondo tg :