ALB를 왜 쓰는가?
ELB란?
모든 트래픽이 하나의 서버로 몰릴때 트래픽을 효과적으로 분산시킴
종류
L2 : Mac 주소를 바탕으로 LB (데이터 링크 계층)
L3 : 네트워크 계층에서 LB/IP주소를 바탕으로 LB (네트워크 계층)
L4 : 전송 계층에서 LB / IP 주소와 포트번호를 기준으로 트래픽을 분해한다. (전송 계층) - > TCP,UDP 프로토콜
라운드 로빈 방식
가중 라운드 로빈 방식
IP 해시 방식
최소 연결 방식 (LC)
최소 응답 방식 (RC)
- 서버가 최초 응답을 받을때까지 소요되는 시간 고려하여 트래픽 배분
Elastic = 유연하게
Load(부하) 를 Balancing(분산)해주는 장치 → AWS제공
어플리케이션 트래픽을 여러 대상에 자동 분산
Cloud Watch , Logging 을 통해 로깅, 장애복구, 추적, Health Cehck(서버 응답 체크)와 같은 기능 제공
EC2 뿐만아니라 컨테이너(ECS), AWS Lambda등으로 다양한 서비스와 연계하여 부하 분배 가능
LB에서 트래픽을 하나의 경로로 바다서 다수의 인스턴스에 분산하게 되어, 하나의 주소로 접속해서 관리할 수 있게 된다.
오류가 나도, 로드밸런서가 스마트하게 (health check ,monitoring) 알아서 트래픽 전송하지 않게 하고, 새로운 인스턴스가 등록이 되면 자동으로 분산을 시켜준다.
프로토콜과 포트를 기반으로 요청을 받아 검사, 타겟으로 전달
### 규칙
- 리스너와 타겟 그룹 사이의 트래픽 분배를 위한 라우팅 규칙
- 조건이 만족되었을때, 지정된 액션 수행
- path, host, HTTP header, source IP, query parameter 등의 다양한 조건 제공
### 대상그룹
- 리스너가 전달한 요청을 처리하기 위한 부하 분산 대상들의 모임
- ELB가 분산을 할 때 어디로 분산할 것이냐를 모은 그룹들이 대상그룹읻.
- 헬스체크, 모니터링 기능이 있다.
ELB는 대표적으로 4가지의 로드밸런서가 존재한다.
Application Load Balancer(ALB)
Network Load Balancer(NLB)
Classic Load Balancer(CLB)
Gateway Load Balancer(GLB)
Classic Load Balancer는 가장 기본적인 형태이자 초기에 제공되던 서비스
가장 기본적인 LB 역할
데이터 수정/변경 불가
OSI 7계층중 7번째 계층인 Application layer 를 다루는 로드밸런서
다양한 프로토콜 존재 ( HTTP/HTTPS,FTP,DNS,DHCP,WebSocket )
단순 부하분산
HTTP/HTTPS 의 헤더 정보를 이용해 부하 분산 실시 가능 (지능적인 라우팅 기능)
LB 하나만 설정하면, 트래픽을 모니터링 하여 각 대상그룹에 라우팅 해준다.
path와 port이용하여 대상그룹에 맵핑
EC2, 람다, IP로도 연결 가능, SSL 인증서 탑재 가능
<aside>
💡
1. ALB는 **L7**단의 로드 밸런서를 지원
2. ALB는 **HTTP/HTTPS** 프로토콜의 헤더를 보고 적절한 패킷으로 전송
3. ALB는 **IP주소 + 포트번호 + 패킷 내용을** 보고 스위칭
4. ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 **DNS Name**을 이용
5. ALB는 L7단을 지원하기 때문에 **SSL 적용**이 가능
</aside>
Transport Layer를 다루는 로드밸런서이다.
TCP와 UDP를 사용하는 요청을 받아들여 부하분산 실시
고성능을 요구하는 환경에서의 부하분산에 적합한 솔루션
IP고정 가능
단순한 라우팅
<aside>
💡
1. NLB는 **L4**단의 로드 밸런서를 지원
2. NLB는 **TCP/IP** 프로토콜의 헤더를 보고 적절한 패킷으로 전송 (HTTP는불가 , TCP니까..)
3. NLB는 **IP + 포트번호**를 보고 스위칭
4. NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 **DNS Name과 IP주소 모두 사용이 가능**
5. NLB는 SSL 적용이 인프라 단에서 **불가능**하여 애플리케이션에서 따로 적용해 주어야 합니다.
</aside>
ALB : 클라이언트가 웹화면을 요청하는 상황일때 (HTTP,HTTPS 프로토콜을 사용해서 어플리케이션 레벨 접근할때
NLB : 내부로 들어온 트래픽을 처리하고, 내부의 인스턴스로 트래픽을 전송할때
network 계층에서 작동
방화벽, 침입 탐지 및 방지, 심층패킷 검사
그냥 트래픽 체크
참고
AWS Elastic Load Balancer(ELB) 쉽게 이해하기 #2
EMR 과 Athena를 왜 같이 쓰는가? (슬랙 스레드 참고)
결론 : EMR로 다량의 데이터를 처리 → S3에 저장 → Athena로 분석
→ 간단하게 설명하면, 테라폼 코드를 실행하면 aws의 인프라를 생성, 삭제가 가능하다.
→ 통합 인프라 관리 도구