
공부 목적으로 작성된 글입니다.
로드 밸런싱은 네트워크 트래픽을 여러 서버에 고르게 분산하여 특정 서버에 과부하가 걸리지 않도록 하는 기술이다.
대규모 트래픽이 발생하는 상황에서도 로드 밸런서를 통해 여러 서버로 요청을 분산하면 서비스 중단 없이 안정적으로 운영할 수 있다.

ex) 롤드컵같은 대규모 이벤트가 발생시 특정 서버에 트래픽이 몰릴 수 있음 --> 로드 밸런싱을 통해 트래픽을 여러 서버에 분산 시킨다.
AWS는 3가지(총 4개지만 CLB는 현재 권장하지 않는 서비스) 로드 밸런싱 서비스가 있다.
ELB(Elastic Load Balancing)은 탄력적 로드 밸런싱으로 탄력적의 의미는 가용성(high available)과 확장성(auto scaling)을 의미한다.

들어오는 트래픽을 여러 AZ으로 분산시키면서 트래픽을 제어한다.
CLB - 현재는 추천하지 않는 서비스(따라서 생략!)
health check를 통해 비정상 인스턴스를 감지하고 라우팅에서 제외시킨다.

HTTP 200 ok > 정상
HTTP 404 error > 비정상
ALB는 Application layer 에서 작동한다.(HTTP)
HTTP,HTTPS,websocket protocol을 지원한다.
HTTP --> HTTPS 리다이렉트 지원한다.
sticky sessions 사용 가능하다.
마이크로 서비스와 컨테이너 베이스 기반 어플리케이션에 적합하다.
ex) docker , ECS.

shop.example.com > 쇼핑 서비스 서버 (target group A - AZ1)
blog.example.com > 블로그 서비스 서버 (target group B - AZ2)
shop.example.com/image > 쇼핑 서비스의 이미지서버 (target group A - AZ1)
shop.example.com/login > 쇼핑 서비스의 로그인서버(target group B - AZ2)
example.com?user=premium → 프리미엄 사용자 서버(Target Group Premium)
example.com?user=free → 무료 사용자 서버(Target Group Free)
특정 클라이언트 요청을 항상 동일한 대상(Target)으로 라우팅하는 기능

로그인 상태 유지가 필요한 애플리케이션이나 장바구니 데이터를 유지해야 하는 전자상거래 사이트에서 유용하다.
라우팅 기능(호스트 기반 라우팅, 경로 기반 라우팅, 쿼리 문자열 기반)을 기준으로 요청을 처리할 순서와 동작을 정의한다.
우선순위(priority)가 낮은 규칙부터 평가하며, 조건이 충족되는 첫 번째 규칙이 적용된다. (기본 규칙은 항상 첫번째!)

ALB 리스너는 들어오는 요청을 평가하여 정의된 규칙에 따라 적절한 대상 그룹(Target Group)으로 트래픽을 라우팅한다.
기본 규칙(Default Rule)은 모든 조건이 충족되지 않을 경우 실행된다.
NLB는 Transport layer에서 TCP(TLS)/UDP 트래픽을 처리한다
낮은 지연 시간과 높은 처리량이 요구되는 애플리케이션에 적합하다.
NLB는 AZ당 하나의 고정 IP를 갖는다
-EC2 인스턴스
-IP 주소 (private IP만 가능)
-ALB
GWLB는 Network layer에서 작동한다 (IP패킷)
방화벽, 침입 탐지 시스템 등 가상 어플라이언스(3rd party)를 배포 및 관리할 때 사용된다.
트래픽 검사 목적으로 사용된다.

참고자료
https://aws.amazon.com/ko/elasticloadbalancing/getting-started/?pg=ln&sec=hs
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/?couponCode=ST10MT30325G1