로드밸런싱이란, 네트워크 기술의 일종으로 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술로, 로드 밸런싱을 수행하는 소프트웨어나 하드웨어를 로드 밸런서라고 함.
로드 밸런싱 서비스를 통해 외부에서 발생되는 많은 인터넷 트래픽을 여러 웹 서버나 장비로 부하를 분산하여 처리할 수 있음.
1. Scale-up을 통해 CPU, 메모리, 디스크 등의 기능을 업그레이드
기존보다 높은 성능을 보유한 웹 서버로 시스템을 업그레이드함으로써 문제를 해결하는 방식.
2. Scale-out을 통해 저렴한 노드 여러 개를 하나의 클러스터로 구성하는 방식
클러스터로 구성하는 경우, 클러스터 내 하나의 노드에 문제가 발생하여도 웹 서비스가 중단되지 않으므로 가용성이 높은 웹 서비스를 구성할 수 있음.
로드 밸런싱은 Scale-out 방식의 웹 서비스 구성에 주로 사용되고, 네트워크 트래픽을 서비스의 포트 단위로 제어하고, 트래픽을 분산처리함으로써 높은 가용성과 부하 분산을 통한 고효율 웹 서비스를 제공함.
세션 연결을 순차적으로 맺어주는 방식임. 연결되어 있는 세션 수에 상관없이 순차적으로 연결시키는 방식
해시 알고리즘을 이용한 로드 밸런싱 방식. 클라이언트와 서버 간에 연결된 세션을 계속 유지해 주는 방식으로 클라이언트가 특정 서버로 연결된 이후 동일 서버로만 연결되는 구조
세션 수를 고려하여 가장 작은 세션을 보유한 서버로 세션을 맺어주는 연결 방식
서버 간의 리소스와 커넥션의 차이가 있는 환경에서 사용되는 방식으로 응답시간을 고려하여 빠른 응답시간을 제공하는 서버로 세션을 맺어주는 방식
ELB와 연결된 인스턴스의 연결 상태를 수시로 체크하여 인스턴스의 OS나 애플리케이션의 문제로 인해 연결 장애나 서비스 가능 여부에 대한 Health Check를 지속적으로 수행함.
➡️ Health Check를 실패하면 트래픽 전달 ❌
ELB를 사용해서 트래픽을 부하 분산하는 경우 기본적으로는 라운드로빈 사용함.
이 경우 한번 연결된 세션은 다음 연결 시 그대로 연결되지 않고, 다음 연결할 때 다른 인스턴스로 연결될 수도 있어서 세션을 유지할 수 없게 됨.
➡️ 처음 연결된 클라이언트에 별도의 HTTP 기반의 쿠키 값을 생성하여 다음번 연결 요청에 대해 처음 접속했던 서버로 계속 연결하도록 트래픽을 처리
단일 가용 영역 또는 여러 가용 영역에 있는 여러 대상에 걸쳐 트래픽을 자동으로 분산할 수 있음.