[ELB & ASG] 로드밸런서(Loadbalancer) 종류
ALB (Application Load Balancer)
- ALB 는 Layer7 (HTTP)
- 다수의 HTTP 응용 프로그램으로 라우팅 할 수 있게 해줌
- 같은 EC2 인스턴스에서 다중 앱에 부하 분산을 할 수 있음
- static DNS name 은 지원하지만 static IP 는 지원하지 않음
- 클라이언트 IP 주소를 얻으려면, 'X-Forwarded-For' 라는 부가적인 헤더를 추가해야 함
- HTTP/2 와 WebSockets 지원
- 리다이렉트 지원 (HTTP -> HTTPS)
- Routing 기준
1) path in URL
2) Hostname in URL
3) Query String, header
- 마이크로 서비스와 컨테이너 기반 어플리케이션에 적합
- 타겟그룹
1) EC2 인스턴스
2) ECS task
3) Lambda function
4) private IP 주소
5) ALB는 multiple 타겟그룹으로 라우팅 가능
6) health check 는 타겟그룹 레벨에서 수행
NLB (Network Load Balancer)
- NLB는 Layer4 (Transport Layer)
- TCP & UDP를 다룰 수 있음
- ALB 에 비해 대기시간이 줄어듦(low latency)
- NLB 는 각 AZ 당 하나의 static IP를 가지고, Elastic IP 할당 기능을 지원
- 오직 static DNS name 과 static IP 만 제공함
- 타겟그룹
1) EC2 인스턴스
2) private IP 주소
3) Application Load Balancer (ALB)
4) 헬스체크는 3가지 프로토콜 지원 (TCP / HTTP / HTTPS) -> 중요
- 보안그룹을 정의하지 않아도 됨 -> 모든 트래픽이 네트워크 부하 분산장치를 통해 EC2 인스턴스로 가기때문
- High performance & Low latency
- ALB vs NLB 비교
<ALB>
- ALB는 L7단의 로드 밸런서를 지원합니다.
- ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
- ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭합니다.
- ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
- ALB는 L7단을 지원하기 때문에 SSL 적용이 가능합니다.
<NLB>
- NLB는 L4단의 로드 밸런서를 지원합니다.
- NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
- NLB는 IP + 포트번호를 보고 스위칭합니다.
- NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능합니다.
- NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해 주어야 합니다.
GLB (=GWLB, Gateway Load Balancer)
- Layer3 (Network Layer) 에서 동작
- 투명한 네트워크 게이트웨이 역할 및 Load Balancer 의 역할
- GENEVE 프로토콜 사용 (on 6081 포트)
- 타겟그룹
1) EC2 인스턴스
2) private IP 주소