Load Balancer답게 수많은 서버의 트래픽을 균형있게 흘려보내는 역할을 한다. 즉, 하나의 서버로 Traffic이 몰리는 병목현상을 방지해준다.
또한, 특정 인스턴스에 문제가 생겼을 때 트래픽들을 Healthy Instance로 보내줄 수도 있다.
이렇게 트래픽 분산, Healthy Check, SSL 종료 등의 Load Balancing을 주로 담당하지만, EC2 Instance라는 Private Network로 트래픽을 보내주는 곳이기 때문에 NAT와 같이 Public IP를 Private IP로 바꾸어주는 일종의 프록시 역할을 하기도 한다.
ELB의 종류로는 3개가 존재한다. 각 ELB들은 작동되는 Layer가 다르다.
1. Application Load Balancer
Layer 7에서 작동하는 ELB로 HTTP, HTTPS와 같은 트래픽의 Load Balancing에 가장 적합한 LB이다. 고급 Request 라우팅 설정을 통해 특정 서버로 Request를 보낼 수 있다. 즉, 임의로 밸런싱하는 것이 아니라 커스터마이징하는 것도 가능하다.
2. Network Load Balancer
Layer 4에서 작동하는 ELB로 TCP 요청을 처리하는 것에 특화되어 있다. Layer가 낮다보니 매우 빠른 속도를 자랑하며 이 속도는 초당 수백만개의 requests들을 아주 미세한 Delay time으로 처리할 수 있다.
이 ELB는 종종 Production 환경에서 사용되며, 극도의 성능이 요구되는 큰 서버 환경에서 사용하기 적합하다.
3. Classic Load Balancer
현재 Legacy로 간주되는 거의 사용하지 않는 ELB이지만, Layer 4와 7의 라우팅이 모두 가능하다. 시험에 제일 자주 나오는 LB라고 한다.

여기서 ELB는 Load Balancing 뿐만 아니라 NAT과 같은 역할도 수행하게 된다. 이에 따라 EC2는 Client Request의 Source Public IP Address를 확인하지 못하고 ELB에서 변환한 Private IP Address만 확인할 수 있게 된다.
이때, Request의 Source Public IP Address를 알기 위해 EC2에서는 X-Forwarded-For 헤더를 확인한다. 사용자가 EC2로 Request를 보내면 ELB에서 Request Header의 X-Forwarded-For 필드에 Source IP Address를 적은 후, Public IP를 Private IP로 교체한다. 만약 ELB 앞에 프록시 서버가 있었다면 해당 프록시 서버의 주소 역시 기록되어 있다.