이 글에서는 alb의 로드밸런싱 역할보다는 ecs를 통해 ec2로 컨테이너를 배포할때 health check를 어떤식으로 하게 되는지는지와 이때에 각각의 서비스의 역할이 무엇인지 위주로 살펴보도록 하자.
클러스터 생성
ecs를 통해 클러스터를 생성시에, 아래와 같이 Auto Scaling 그룹을 선택할 수 있게 된다. 오토스케일링 그룹을 통해서 ecs를 통해 배포할 인프라를 결정하게 된다. AutoScaling그룹에서 CloudFormation 스택을 통해 배포할 인프라가 잡혀 있으면, ecs에도 해당 인프라를 배포대상 인프라로 잡게 된다.
서비스 생성
그 다음, 만들어진 클러스터에서 서비스 생성을 하여, 배포할 작업정의 패밀리를 선택하게 되면 alb 선택란이 활성화 된다. alb와 대상그룹을 연동시키려면 미리 alb와 대상그룹(target group)을 만들어두자.
대상그룹, alb 생성
대상그룹을 생성할때는 "/v1/api/"와 같이 어떤 api를 통해 health check하면 되는지만 유의해서 등록하자. alb를 등록할때에는 alb의 Listeners에 대상그룹을 등록해주기만 하면 해당 대상그룹을 목록으로하여 alb가 health체크를 수행하게 된다.
ecs 서비스를 통해 컨테이너를 배포/관리 할 때에 alb와 연동을 시키는 주된 이유는, alb를 통해 컨테이너에 health체크를 하게 함으로서, 컨테이너가 죽어있는 경우에 ecs를 통해 자동으로 재배포 하도록 하면, 컨테이너가 죽을 것에 대한 모니터링이나 걱정이 줄어들게 되기 때문이다.
다시 한번 ecs, alb, 대상그룹의 순서와 역할을 짚어보자.
- ecs가 autoscaling그룹을 통해 잡혀 있는 ec2 인스턴스로 컨테이너를 배포
- ecs 서비스에 등록되어 있는 target그룹에 instance와 port정보를 등록
- 배포 후 alb는 listeners에 등록돼 있는 대상그룹 목록에 한하여 health check를 시도
(대상그룹에 health check api 및 instance, port정보가 등록이 돼 있기에 해당 정보를 통해 alb가 health check를 시도) - 만약 대상그룹의 컨테이너가 모두 healthy 하다면, 정상
- unhealthy하다면 alb는 ecs에게 해당 사실을 알려 기존의 컨테이너를 draining시키고 ecs가 다시 컨테이너를 재배포
'프로그래밍 > devops' 카테고리의 다른 글
private VPC outbound 인터넷 사용을 위한 nat구성 (0) | 2023.02.28 |
---|---|
AWS NLB를 활용한 private VPC 구성 (0) | 2023.02.24 |
git conflict 해결 - 명령어와 github UI (0) | 2023.01.29 |
git merge, rebase, squash 차이 (0) | 2023.01.29 |
헤깔리는 git 명령어 정리 (0) | 2023.01.29 |