Load Balancing이란?
Load Balances란 트래픽을 여러 개의 서버(e.g., EC2 instances)로 보내는 것(downstream)을 말한다.
Load balancer를 쓰는 이유
- 부하를 여러 downstream 인스턴스로 분산할 수 있다.
- 애플리케이션으로 향하는 단일 액세스 지점을 expose 할 수 있다.
- downstream 인스턴스의 장애를 원활히 해결할 수 있다.
- 왜냐하면, 로드 밸런서가 health check을 통해 어떤 인스턴스로 트래픽을 보낼 수 없는지 확인해 주기 때문이다.
- 인스턴스들에 대해 주기적으로 health check을 해준다.
- 웹사이트에 대한 SSL termination(HTTPS)을 제공해 준다.
- 그렇기 때문에 웹 사이트에 암호화된 HTTPS 트래픽을 가질 수 있다.
- 쿠키를 이용해 stickiness를 강화할 수 있다.
- 영역에 걸친 고가용성을 지닌다.
- 클라우드 내에서 private 트래픽과 public 트래픽을 분리할 수 있다.
그렇다면 Elastic Load Balancer를 쓰는 이유는?
- ELB는 관리형 로드 밸런서이다.
- aws가 운영하며 업그레이드, 관리, 고가용성을 보장해 준다.
- aws가 구성을 위한 길잡이를 일부 제공해 준다.
- 자체 로드 밸런서를 직접 구현하는 것보다 확장성 측면에서 덜 번거롭고 좋다.
- 다수의 aws 서비스들과 통합되어 있다.
Health checks
- ELB가 EC2 인스턴스가 올바르게 작동하고 있는지 확인하기 위해 사용한다.
- port와 route에서 health check이 이루어진다.
Load Balancer의 종류
- Classic Load Balancer (v1 - old generation)
- 2009년에 등장
- HTTP, HTTPS, TCP, SSL(secureTCP) 지원
- Application Load Balancer (v2 - new generation)
- 2016년에 등장
- HTTP, HTTPS, WebSocket 지원
- Network Load Balancer (v2 - new generation)
- 2017에 등장
- TCP, TLS(secureTCP), UDP 지원
- Gateway Load Balancer
- 2020년에 등장
- 3계층인 네트워크 계층에서 동작하며 IP Protocol에서 작동한다.
원한다면 internal(private), external(public) 설정 역시 가능하다.
보안 그룹
- Load Balancer는 HTTPS/HTTP 타입에 대해 public access가 가능해야 한다.
- EC2 인스턴스를 사용하는 경우 해당 인스턴스는 로드 밸런서로부터 오는 트래픽만을 허용해야 한다.
- 따라서, EC2 인스턴스의 보안그룹의 소스에 ip주소가 아니라 사용하려는 로드 밸런서의 보안그룹이 들어가야 한다.