본문 바로가기
Web

[Web] 로드밸런서(Load Balancer)

by 기몬식 2023. 8. 31.

Load Balancer

출처

로드 밸런서(Load Balancer)란 트래픽을 분산시켜주는 컴퓨터 네트워크 기법 중 하나로 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 장치 또는 기술을 통칭합니다.
로드 밸런싱이란 들어오는 네트워크 트래픽을 서버 팜 또는 서버 풀이 라고도 하는 백엔드 서버 그룹에 효율적으로 분산시키는 것을 의미합니다.

로드 밸런스의 주요 역활은 다음과 같습니다.

  • 트랙픽 분산: 들어오는 네트워크 트래픽을 여러 대의 서버로 균등하게 분산시켜 서버 간의 부하를 분산시킵니다.
  • 가용성 및 안정성 향상: 서버가 다운되거나 장애가 발생해도 여러 대의 서버에 트래픽을 분산시킴으로써 온라인 상태인 서버에만 요청을 보내 다른 서버가 트래픽을 처리하기 때문에 고가용성과 안정성을 보장합니다.
  • 성능 개선: 트래픽을 균등하게 분산하므로 특정 서버에 과도한 부하가 걸리지 않음에 따라 전체적인 시스템 성능 향상으로 이어집니다.
  • 유연성: 수요에 따라 서버를 추가하거나 뺄 수 있는 유연성 제공합니다.

Scale-Up & Scale-Out

Scale-Up과 Scale-Out은 시스템 또는 애플리케이션의 성능을 향상시키기 위한 두 가지 다른 접근 방식을 의미합니다.

Scale-Up

Scale-Up은 단일 서버 또는 머신의 성능을 향상시키는 것을 의미합니다.
즉 더 성능이 좋은 CPU, 더 많은 메모리, 더 빠른 디스크 등과 같은 하드웨어 업그레이드를 통해 시스템의 성능을 높이는 것을 말합니다
Scale-Up을 사용하게 되면 먼저 가장 큰 장점은 관리의 용이성입니다.
하나의 서버를 관리하기 때문에 복잡하지 않습니다.
또한 단일 서버로 관리하면 별도의 소프트웨어 라이센스 추가 비용이 발생하지 않기 때문에 소프트웨어 사용에 대한 비용에서 자유롭습니다.

하지만 서버 장비에 설치 가능한 하드웨어의 수는 제한이 있기 때문에 한정된 자원을 초과하여 성능을 증가시키기에는 어렵습니다.
또한 서버에 장애 발생 시 해당 서버가 복구되기 전까지 서비스를 중단해야 하는 상황에 빠질 수 있습니다.

Scale-Out

Scale-Out은 여러 개의 서버 또는 머신을 추가하여 시스템의 성능을 향상시키는 것을 의미합니다.
Scale-Out을 사용하게 되면 하나의 서버에서 장애가 발생하더라도 다른 서버에서 서비스 제공이 가능하여 가용성을 높일 수 있다는 장점이 있습니다.
또한 필요에 따라서 서버를 추가하고 감소시킬 수 있으므로 확장에 유연하게 대처할 수 있습니다.

하지만 하나의 서비스를 여러 대의 서버로 관리하기 때문에 발생하는 데이터 정합성 이슈에 대해서 추가적인 고려 사항이 존재합니다.
이러한 고려 사항에 대한 대안으로 나오는 것이 로드 밸런싱이며 로드 밸런싱은 서버의 로드율, 부하량, 처리 속도 등을 고려하여 적절하게 여러 서버에게 트래픽을 분산시킵니다.
이를 통해 데이터 병목 현상을 해소시킬 수 있습니다.

알고리즘

로드 밸런서는 다양한 로드 밸런싱 알고리즘을 통해 다양한 상황과 요구사항에 맞춰 각각 더 적합한 결과를 제공할 수 있습니다.
일반적으로 로드 밸런서는 이러한 알고리즘을 사용하여 효율적으로 트래픽을 관리하고 서버의 부하를 균형있게 분산시킵니다.
다음은 일반적으로 사용되는 로드 밸런싱 알고리즘입니다.

Round Robin

출처

라운드 로빈 알고리즘은 들어오는 요청을 순서대로 서버에 배정하는 방식입니다.
요청은 번갈아가며 각 서버에 분배되므로 모든 서버가 균등하게 부하를 받을 수 있습니다.
하지만 서버의 성능이 각각 다를 경우 서버의 사양을 벗어나는 작업량에 따른 부하를 처리할 수 없기 때문에 효율적이지 않습니다.

따라서 라운드 로빈 알고리즘은 동일한 사양의 서버로 구성된 클러스터에 가장 적합합니다.

Weighted Round Robin

출처

가중 라운드 로빈은 각 서버에 가중치를 부여하여 요청을 분배하는 방식입니다.
즉 서버의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산 방식입니다.
가중 라운드 로빈은 요청을 서버에 분산시키는 방식이 순환적이라는 점에서 라운드 로빈과 유사합니다.
지정된 가중치만큼 서버로 트래픽이 분산되며 임계치까지 할당되면 다른 서버로 분산되는 방식으로 동작합니다.

하지만 부여된 가중치는 서버의 실제 상태(부하 상태, 응답 시간 등)가 아닌 단순 서버의 하드웨어적인 측면을 고려하여 부여된 것이기 때문에 가중치가 높은 서버가 실제로 과부화인 상태에도 동등하게 요청이 분배 될 수 있습니다.

Least Connections

최소 연결 방식은 요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 우선적으로 트래픽을 분산하는 방식입니다.
실제로 부하가 적은 서버에 트래픽을 분산하기 때문에 실제로 부하 분산이 효과적으로 이루어집니다.

출처

위와 같이 1~6번 클라이언트가 서버와 통신 중인 상황입니다.

출처

이 때 1, 3번 클라이언트가 연결이 끊어지게 된다면 로드 밸런서는 6번 클라이언트를 1번 서버로 재할당합니다.
즉 서버가 다운되거나 장애가 발생한 경우에도 자동적으로 가장 적은 연결 상태의 서버로 우선적으로 트래픽을 분산시킵니다.

하지만 연결 수가 적은 서버에만 요청을 분산하기 때문에 일부 서버가 상대적으로 부하가 적더라도 다른 특성을 고려하지 않고 요청이 배정될 수 있습니다.

Weighted Least Connections

가중 최소 연결 방식은 가중 라운드 로빈이 실행하는 방식과 동일하게 각 서버의 개별 용량에 따른 가중치를 부여하는 방식입니다.
각 서버의 가중치/용량과 현재 각 서버에 연결된 클라이언트 수라는 두 가지 사항을 고려하여 트래픽을 분산할 수 있습니다.

IP Hash

출처

IP Hash는 요청의 IP나 URL을 해시 함수로 적용하고 적용 결과에 기초하여 관련 서버로 분산하는 방식입니다.
또한 해시 함수를 적용한 requestId가 모든 서버에 균일하게 분산되도록 해야 합니다.
사용자의 IP를 해싱해 로드를 분산하기 때문에 클라이언트가 항상 동일한 서버로 연결되는 것을 보장합니다.

종류

L4 Load Balancing

출처

L4 로드밸런싱은 OSI 7 Layer 중 Transport Layer와 Network Layer에서 IP와 Port를 활용하여 부하 분산을 처리하는 것을 의미합니다.
Ip와 Port가 목적지로 들어온다면 적절한 부하 분산 처리 작업을 합니다.
또한 L4에서 동작하기 때문에 TCP나 UDP의 특징을 이용하여 로드밸런싱이 아닌 요청을 제어할 수 있습니다.

로드 밸런싱의 기준은 IP와 Port이기 때문에 Header를 분석하거나 로드 밸런싱에 활용하지 않습니다.
즉 데이터를 이용하지 않고 패킷 레벨에서만 로드를 분산하기 때문에 속도가 빠르고 효울성이 높습니다.
하지만 반대로 패킷의 내용을 살펴볼 수 없기 때문에 섬세한 라이퉁이 불가능합니다.
또한 클라이언트의 IP가 자주 바뀌는 경우라면 연속적인 서비스 제공에 제약이 있습니다.

L7 Load Balancing

출처

L7 로드밸런싱은 OSI 7 Layer 중 Application Layer에서 부하 분산을 처리하는 것을 의미합니다.
상위 계층에서 사용되는 장비는 하위 계층의 장비의 기능을 모두 사용할 수 있기 때문에 상위 계층으로 갈 수록 더욱 정교한 로드밸런싱이 가능합니다.
즉 L7 로드밸런싱은 TCP/UDP 정보는 물론 HTTP의 URI, FTP 파일명, 쿠키 정보 등을 활용해 분산 처리합니다.
또한 추가로 사용되는 비정상적인 트래픽을 사전에 필터링할 수 있기 때문에 서비스 안정성이 높습니다.

하지만 패킷의 내용을 복호화에 따른 높은 비용을 지불해야하며 클라이언트와 로드 밸러서간 인증서 공유를 해야하기 떄문에 인증서가 노출될 보안상의 위험이 존재합니다.

오탈자 및 오류 내용을 댓글 또는 메일로 알려주시면, 검토 후 조치하겠습니다.

'Web' 카테고리의 다른 글

[Web] HTTPS(HyperText Transfer Protocol over Secure Socket Layer)  (1) 2023.10.26
[Web] HTTP(Hyper Text Transfer Protocol)  (0) 2023.08.24
[Web] REST  (0) 2023.08.09
[Web] JWT & Session & Cookie  (0) 2023.07.15