Amazon Web Serivce 자격증 쉽게 공부하기/AWS Solutions Architect Associate 핵심
SAA-C03 핵심 #12, ELB
네트워크 엔지니어 환영
2023. 11. 18. 13:29
반응형
Elastic Load Balancer란?
- AWS의 L4/ L7 로드밸런싱(서버 부하분산) 서비스
- 외부 혹은 내부에서 들어오는 클라이언트의 요청을 ELB에 연결된 가용영역에 있는 EC2로 고르게 나누어 전달하고 등록된 EC2들의 상태를 검사하는 서비스
- 외부/내부 트래픽은 ELB의 DNS 주소를 목적지로 하여 들어오며 이 트래픽을 받은 ELB는 가용영역에 등록된 EC2로 전달
- 보안그룹이 적용됨(ALB/NLB)
- ELB는 VPC 내 존재하며 공인 IP 혹은 공인/사설 IP를 모두 가질 수 있음
- 인터넷 연결 option(Internet-facing) : 공인/사설 IP 생성
- 내부 option(Internal) : 사설 IP 생성
- 포트 번호를 이용하여 포트 번호에 알맞는 Target Gorup(대상 그룹)으로 로드밸런싱
- 예를 들어 HTTP 요청을 로드밸런할 경우, 그 ELB는 HTTP 요청만을 전달하고 다른 포트 요청은 전달하지 않음
- ELB는 '리스너'를 거느리며 리스너 하나당 요청을 받아들이는 Port 하나씩을 지정함
- 예를 들어 80 Port 요청을 받아 들이는 리스너, 443 Port 요청을 받아들이는 리스너를 모두 등록할 수 있음
- 상태 검사에 성공한 EC2만이 요청 전달 대상이 되며 상태 검사에 실패한 EC2는 요청 전달 대상에 제외됨
- SSL 인증서를 등록하여 HTTPS 암호화/복호화 통신을 대신하는 SSL Offload 가능
- ELB는 세 가지 로드밸런서로 구성됨(CLB, Classic Load Balancer 지원 종료)
- ALB(Application Load Balancer)
- NLB(Network Load Balancer)
- GWLB(Gateway Load Balancer)
Target Group(대상 그룹)
- ELB에 등록된 EC2 인스턴스들의 그룹
- 대상 그룹에 등록된 EC2 리스트, EC2 상태, 상태 검사 방법 등을 정의
- 상태 검사 방법에는 HTTP, HTTPS, TCP 등이 있음
- 방법뿐만 아니라 상태 검사에 필요한 시간도 정의 가능
- '속성' 항목이 존재하여 'Cross Region Load Balancing', 'Sticy Session' 등 설정 가능
Application Load Balancer(ALB)
- Layer 7 로드밸런서
- HTTP/HTTPS Header 정보를 기반으로 요청을 전달하는 로드밸런서
- 리스너가 HTTP/HTTPS를 전문적으로 다룸
- 요청에 따라 고정 페이지를 반환하거나 다른 경로로 리다이렉트
- HTTP Header / HTTP 요청 메서드 / Host Header / Source IP 등을 이용하여 요청 전달 가능
- 예를 들어 HTTP Header 내 User-agent에는 Host의 OS 정보가 있는데 Android일 경우, ELB 리스너가 Android만 사용하는 대상 그룹으로 전달 가능
- AWS SSL 인증서 서비스인 AWS Certificate Manager(ACM)를 이용하여 SSL Offload 지원
- Cross Region Load Balancing(교차 영역 로드밸런싱) 지원
- 트래픽이 ALB를 통과하게 되면 Source IP가 ALB Private IP로 변경됨
- X-Forwared-For 헤더를 지원하여 EC2로 하여금 Client의 IP를 확인할 수 있도록 함
- ALB가 소유한 Public IP가 유동적으로 변경됨
Network Load Balancer(NLB)
- Layer 4 로드밸런서
- TCP / UDP / TLS를 기반으로 요청을 전달하는 로드밸런서
- 프로토콜, 원본 IP 주소, 원본 포트, 대상 IP 주소, 대상 포트, TCP 시퀀스 번호를 이용하여 요청 전달
- TCP, UDP, TCP/UDP로 리스너를 설정 가능
- TCP Header를 조작하여 전달하는 것이 아닌 그저 TCP의 기본인 3-way handshake만을 대신하여 진행
- Client IP를 NLB의 IP로 변경하지 않고 서버에게 전달
- NLB가 소유한 Public IP가 ALB와 달리 유동적이지 않고 고정됨
- Cross Region Load Balancing(교차 영역 로드밸런싱) 지원
- Proxy Protocol을 활용하여 Client의 IP를 확인할 수 있도록 함
- TLS 설정시 SSL Offload 지원 가능
Gateway Load Balancer(GWLB)
- 3rd Party Solution을 부하 분산할 목적으로 만들어진 로드밸런서
- Layer 3에서 작동하는 로드밸런서로 리스너 포트를 필요로 하지 않음
- ALB와 NLB로 3rd Party Solutoin을 부하 분산하는 것이 원활하지 않아 대체할 목적으로 탄생함
- 로드밸런서와 대상그룹 내 인스턴스는 "Geneve Prtocol(UDP, 6081)"을 통해 가상 터널을 만들고 통신함
Sticky Session(스티키 세션)
- 특정 세션을 처리한 적이 있는 EC2로 다시 연결하는 기능
- 하나의 요청이 특정 EC2로 들어와 세션이 생성되었다가 종료되고, 들어왔던 요청이 다시 들어올 경우 이미 연결되었던 특정 EC2로 전달
Cross Region Load Balancing(교차 영역 로드밸런싱)
- 기본적으로 ELB는 대상그룹에 등록된 EC2별로 적절히 부하분산을 하는 것이 아닌 가용영역별로 비율을 나눔
- 교차영역이 2개라면 각 가용영역에 50%씩 전달
- 이렇게 될 경우 A 가용영역에 EC2가 2개이고, B 가용영역에 EC2가 8개일 경우 A/B 가용영역에 50%씩 전달되므로 A 가용영역의 EC2의 부하가 심해짐
- 이를 방지하기 위해 교차영역 로드밸런싱을 활성화화면 가용영역이 아닌 EC2 갯수를 기반으로 계산하여 전달하므로 부하가 고르게 나누어짐
X-Forwared-for
- Client의 IP 정보를 담고 있는 HTTP Header
- EC2 내 서비스가 Client의 IP를 확인할 필요가 있는 경우 ELB는 HTTP Header에 X-Forwared-for를 장착하여 전달
- HTTP 헤더를 제어할 수 있는 ALB 사용 가능
Connection Draining
- Autoscaling과 ELB를 함께 사용시 필요에 따라 EC2가 종료될 경우, 해당 EC2에 요청이 이미 들어와 처리중이라면 사용중인 사용자가 피해를 볼 수 있음
- 삭제되기 직전에 유휴 세션이 작업을 마칠 때까지 기다리는 기능