서비스의 트래픽이 증가 하였을 때 여러 대의 서버에 이를 적절하게 분산처리하여 서비스에 문제 없게 해주는 서비스
Scale-out으로 구성한 환경에서 여러대의 서버를 배치한다고 생각해봅시다. 그러면 한 곳의 서버에만 트래픽이 몰리고 한 서버는 일을 안하는 상황이 발생 할 수 있습니다. 이 때 이러한 상황을 방지해주는 것이 로드밸런서 입니다. 로드 밸런서는 앞서 요약에 써놨듯이 한 서비스에서 몰리는 트래픽을 적절하게 분배해주는 역할을 합니다.
로드 밸런서 구조 (예시 : Azure Region Load balancer)
출처 : https://docs.microsoft.com/ko-kr/azure/load-balancer/cross-region-overview
라운드 로빈 방식 (Round Robin Method)
서비스로 들어온 요청을 서버의 순서대로 돌아가며 분배하는 방법입니다. 요청을 순서대로 분배하기 때문에 서버와 세션이 유지되어야 할 경우 별도의 세션 클러스터링 등 세션 유지 방법이 고려되어야합니다.
해시 방식 (Hash Method)
요청이 들어오는 IP를 특정 서버로 매핑하여 요청하는 방식입니다. IP를 해싱하여 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장합니다.
최소 연결 방식 (Least Connection Method)
요청이 들어온 시점에 가장 적은 연결상태를 가지고 있는 서버에 트래픽을 분배합니다. 서버에 분배되는 트래픽이 일정하지 않은경우 적합합니다.
가중 라운드 로빈 방식 (Weighted Round Robin Method)
각각 서버마다 가중치를 매기고 가중치가 높은 서버에 요청을 배분합니다. 서버마다 처리 능력이 다를경우 사용합니다. 가중치가 높은 서버에 우선적으로 트래픽을 분배하고 높은 서버의 능력에 다 다르게 되면 그 후 다음 서버에 분배하는 방식입니다.
보통 로드 밸런서를 사용할 때 L7, L4 로드 밸런서를 많이 사용합니다.
L4 로드 밸런서
L4로드 밸런서의 경우 Transport Level이기 때문에 TCP/UDP 포트 정보를 바탕으로 진행합니다. 그래서 데이터 안을 안보고 패킷 만 보기 때문에 속도가 빠르고 효율이 높은 특징이 있습니다.
L7 로드 밸런서
L7로드 밸런서의 경우는 TCP/UDP외에 HTTP의 URI, FTP의 파일명, 쿠키 정보 등을 바탕으로 진행합니다. 상위 계층에서 나눠지기 때문에 더 섬세하게 라우팅이 가능하고 그렇기 때문에 더 비싼 비용을 지불해야합니다