로드 밸런싱
가용성, 성능, 확장성을 높이기 위해 여러 서버에 네트워크 트래픽을 분산하는 방법이다.
특징
서버와 클라이언트 간의 트래픽을 지시하고 제어하여 가용성, 확장성, 보안 및 성능이 향상됨
가용성
- 여러 서버에 트래픽을 분배하여 한 서버가 다운되었을 때, 사용 가능한 서버로 트래픽을 리다이렉션한다.
- 애플리케이션 가동 중지 없이 서버 유지 관리 및 업그레이드 가능
성능
- 여러 서버에 요청을 분배하여, 네트워크 지연 시간을 줄임
- 물리적으로 더 가까운 서버로 리다이렉션 하여 지연 시간 단축
보안
- 트래픽 모니터링
- 공격 트래픽을 여러 서버로 리다이렉션 하여 영향 최소화
확장성
- 서버 수를 동적으로 추가하거나 제거하여 트래픽 변화에 유연하게 대응 가능
- 수평 확장(서버 추가), 수직 확장(성능 향상) 둘 다 가능
동작 원리
L4 로드 밸런싱
전송 계층에서 수행하는 로드 밸런싱, 패킷 헤더에 포함된 정보를 기반으로 TCP나 UDP 패킷을 기준으로 트래픽을 분배한다.
- 속도 빠름, 고속 데이터 전송에 접함
- 패킷으로 분배하기 때문에 세부적인 애플리케이션 데이터를 알지 못함
- 트래픽을 단순히 세션 연결 단위로 분배
L7 로드 밸런싱
응용 계층에서 수행하는 로드 밸런싱, HTTP 헤더, URL 경로, 쿠키, 요청 바디와 같은 애플리케이션 데이터를 기반으로 분배
- 세밀한 트래픽 분배 가능
- URL이나 요청의 헤더에 따라 특정 서버로 트래픽을 보내거나, 특정 서비스에 요청 분배 가능
- 유연성이 높음
알고리즘
로드 밸런서는 상황에 따라 다양한 알고리즘을 사용하여 요청을 여러 서버에 분배한다.
정적 로드 밸런싱
서버 상태와 무관하게 고정된 규칙을 따라서 분배하는 방식
라운드 로빈
- 요청을 서버에 순차적으로 분배하는 방법, 각각 서버들이 동일한 트래픽을 받아 균등하게 분배됨
- 서버의 성능이 모두 비슷한 환경에서 사용하기 적합하다.
가중 라운드 로빈
- 라운드 로빈과 비슷하지만, 각 서버에 가중치를 두어 트래픽을 분배하는 방식
IP 해시
- 클라이언트 IP 주소를 해시하여, 특정 서버로 요청을 보내는 방식, 세션 유지에 유용함
동적 로드 밸런싱
최소 연결
- 현재 가장 적은 연결을 가진 서버로 요청을 보내는 방식, 서버가 처리하는 요청 수에 따라 분배되므로 고르게 분배됨
- 연결 시간이 긴 요청이 많은 서비스에서 자주 사용된다.
가중 최소 연결
- 현재 연결 수에 가중치를 더해서 요청을 분배하는 방식 각 서버의 성능에 따라서 분배할 수 있음
최소 응답 시간
- 서버의 응답 시간과 현재 연결 수를 고려해서 최적의 서버를 고르는 방법
활용
DNS 라운드 로빈
DNS 서버에서 여러 서버의 IP 주소를 순차적으로 반환하는 방식, 클라이언트가 서버에 접속할 때마다 DNS 서버가 다른 IP를 반환하여 트래픽 분배
리버스 프록시
클라이언트가 직접 서버에 요청을 보내지 않고, 리버스 프록시 서버에 요청을 보내는 방식, 리버스 프록시 서버가 클라이언트 요청을 여러 서버로 분배함