반응형

하루를 삽질했다.... T-T

AWS ALB를 통해 통신을 하려면, 아래와 같이 여러 절차가 필요하다.

 

 

1. 코드 내에 health check를 위한 코드가 필요 하고,

app.listen(3001,function() {
console.log("** 1. web server open on port 3001");
})
app.get('/jane/health', async(req,res) => {
console.log("** health checking executed");
res.sendStatus(200);
});

 

2. 각 포트들이 맞아야 한다.

2-1. 코드 내 오픈된 port(위 3001)

2-2. 컨테이너를 생성할 때 설정한 서비스 내 컨테이너 포트(아래 3001),

2-3. LB의 대상그룹(target group) 포트(3001)

2-4. ECS의 서비스 > 보안그룹 내 포트 (3001)

타겟그룹 health check settings
2-3. 대상그룹(Target group)의 Port(3001)
2-4. 서비스의 보안그룹 내 포트 범위 설정

 

 

 

3. ECS task를 수행하는 Role에 LB를 위한 권한 설정 추가

(ElasticLoadBalancingFullAccess)

 

4. LB의 리스너도 경로가 타겟그룹에 맞게 설정되어 있는지 확인.

2-2. ECS의 서비스 세부 정보 내 대상그룹(3001)

 

이렇게 하면... healthy가 뜬다.... 흑흑

2-3. 대상그룹(Target group)의 Port(3001)

 

 

그럼 LB를 통해 통신이 되는지 확인해보자.

bastion에 들어가서 LB의 dns + path로 curl을 날려본다.

 

[ec2-user@bastion~]$ curl internal-alb-testestsetste.ap-northeast-2.elb.amazonaws.com/jane/health

OK

 

[ec2-user@bastion~]$ curl internal-alb-testestestset.ap-northeast-2.elb.amazonaws.com/jane

Database printed

[{"id":1,"data":"text1"},{"id":2,"data":"text2"}]

 

 

확인 완료!

반응형

+ Recent posts