ELB란?
두 개 이상의 AZ에 EC2나 컨테이너, IP 주소 등으로 여러 대상에 걸쳐 수신되는 트래픽을 분산하는 서비스
- 접속 부하에 맞게 자동적으로 리소스의 확장/축소를 수행
- ALB의 경우, 지속적으로 IP 주소가 바뀌며 IP 고정이 불가능하여 항상 도메인 기반으로 사용
- LB(Load Balancer)가 등록된 대상의 상태를 모니터링 한다 -> 정상적 상태인 대상으로 트래픽 라우팅
ELB 구성 요소
Listener
- 프로토콜과 포트를 기반으로 요청을 받아 타켓으로 전달
Target Group
- ELB가 분산을 할 때 어디로 분산할 것이냐를 모은 그룹들
Security Group
- 방화벽과 같이 특정 프로토콜 / 포트만 허용하도록 하는 기능
Health Check
- 직접 트래픽을 발생시켜 인스턴스가 살아있는지 (정상적인지) 체크
Connection Time Out
- 일정 시간동안 통신이 없을 때 커넥션을 삭제할 것인지 설정하는 기능
어떻게 적용하는가?
외부로부터 ELB로 들어오는 요청을 EC2로 전달하여 처리
- Health Check 를 통해 Instance 정상여부 체크
- 특정 포트로만 들어올 수 있도록 허용
⚙️과정⚙️
[로드밸런싱] ➡️ [대상 그룹] ➡️ [대상 그룹 생성]
✅ 인스턴스 로 설정
✅ 대상 그룹 이름은 본인이 원하는 이름으로 설정 (나머지는 기본 설정되어 있는대로 하기)
✅ 상태 검사
- 필자는 SpringBoot 프로젝트 기반이기 때문에
- /actuator/health 로 설정
✅ 대상 등록
사용 가능한 인스턴스에서 본인이 사용할 EC2 인스턴스를 체크하면 된다.
✅ 선택한 인스턴스를 위한 포트 에는 본인의 프로젝트 포트를 사용하면 된다
- 나의 경우에는 테스트 용이기 때문에 80번 포트를 사용했다.
✅ [아래에 보류 중인 것으로 포함] 체크하기
이후 완료 버튼 클릭 후 대상 그룹 생성 완료!
등록된 대상 정보를 확인할 수 있다.
로드밸런서 생성
[로드밸런싱] ➡️ [로드 밸런서] ➡️ [로드 밸런서 생성]
✅ ALB 선택
✅ 로드 밸런서 이름 설정 (나머지는 기본 설정으로)
✅ 네트워크 매핑
- 만약 EC2 가 없는 AZ만 설정하고 타켓 그룹을 고르면 제대로 트래픽이 이입되지 않음.
- 따라서 EC2가 위치해있는 AZ을 포함해서 2개 이상의 가용 영역을 지정한다.
나의 경우에는 4개 모두 체크 했다.
✅ 보안 그룹
- default로 설정
- EC2에서 선택된 Security Group을 허용해줘서 트래픽이 LB를 타고 EC2로 들어갈 수 있도록 설정해줘야 한다.
✅ 리스너 및 라우팅
- LB에서 지정한 Listener를 통해서 어떤 타켓 그룹으로 들어가는지 설정하는 것
- 위에서 설정했던 타켓 그룹을 설정하면 된다.
위의 사진을 해석하자면 80번으로 요청을 보내면 LB에서 타켓 그룹으로 요청을 전달한다.
✅ 로드 밸런서 생성 클릭
'AWS' 카테고리의 다른 글
AWS CodeSeries (1) | 2024.07.14 |
---|---|
AWS EC2 User Data가 작동하지 않을 때 로그 보는 방법 (0) | 2024.07.11 |