로드 밸런싱 (Load Balancing)

로드 밸런싱은 Scale-out을 하거나 하려고 하는 서비스에서 필수적인 요소로서 여러 대의 서버에게 균등하게 트래픽을 분산시켜주는 기술이다. 이는 서버 부하를 분산시켜 서버의 안정성과 가용성을 높여주며, 사용자에게 빠르고 안정적인 서비스 제공을 가능하게 한다.

Scale-Up

Scale-Up의 경우 서버 자체의 성능을 향상 시키는 것을 말한다. CPU를 i3 → i7으로 업그레이드 하거나 RAM을 8GB → 32GB로 업그레이드 하는 것이다.

Scale-Out

Scale-Out은 서버의 수를 늘리는 것이다. 기존의 1대의 서버로 트래픽을 감당하기 힘든다고 판단 될 때 3대를 추가해 4대의 서버를 운영하는 것을 말한다.

로드 밸런싱의 장점

  • 무중단 배포
  • 재해 복구
  • 트래픽 병목 현상 방지

https://blog.kakaocdn.net/dn/llMx6/btqKxQTfpKV/tQbWvFHMgSu4sLanPQFHUK/img.jpg

로드 밸런싱 알고리즘

로드 밸런싱 알고리즘이란 로드 밸런서가 각 서버에게 어떤 방식으로 트래픽을 분배할지 결정하는 알고리즘을 말한다.

  • 라운드 로빈
    • 라운드 로빈(Round Robin)은 서버에 들어온 요청을 순서대로 분배하는 방식이다. 이 방식은 각 서버에게 동등한 부하를 분산시키기 때문에, 서버의 가용성을 높이는 데 효과적이다. 하지만, 각 서버의 성능 편차 등을 고려하지 않기 때문에, 서버의 부하가 균등하지 않을 수 있다.
  • 가중 라운드 로빈
    • 가중 라운드 로빈은 라운드 로빈의 변형 알고리즘 중 하나이다. 이 방식은 각 서버에 가중치를 부여하여, 부하 분산 효율을 높이는 것이 목적이다. 가중치가 높은 서버는 요청이 많이 들어오더라도, 처리할 수 있도록 더 많은 자원을 할당받을 수 있다.
  • IP 해시
    • IP Hashing은 클라이언트의 IP 주소를 기반으로 서버를 선택하는 방식으로, 클라이언트가 항상 같은 서버로 연결되는 것을 보장한다. 이는 사용자가 특정한 서버에서 로그인한 경우, 그 사용자의 모든 요청이 해당 서버로 전달되어 세션 유지 등의 이점을 얻을 수 있다. 하지만, 클라이언트 IP 주소를 기반으로 서버를 선택하기 때문에, 클라이언트의 IP 주소가 변경되는 경우 다른 서버로 연결될 수 있다. 또한, 서버가 추가되거나 삭제되었을 때, 클라이언트와 연결된 서버가 변경될 수 있다.
  • 최소 연결
    • 최소 연결(Least Connection)은 현재 연결 수가 가장 적은 서버에 우선적으로 분배하는 방식이다. 이 방식은 각 서버의 부하를 균등하게 분산시킬 수 있어, 전체 서버의 성능을 최대한 활용할 수 있다. 이 방식은 서버의 부하가 균등하게 분산되기 때문에, 서버의 가용성을 높이는 데 효과적이다. 하지만, 각 서버의 성능 편차 등을 고려하지 않기 때문에, 서버의 부하가 균등하지 않을 수 있다.
  • 최소 응답시간
    • 최소 응답 시간 알고리즘은 현재 가장 빠른 응답 시간을 가진 서버에 우선적으로 트래픽을 분배하는 방식이다. 이 방식은 사용자에게 보다 빠른 서비스 제공을 가능하게 하며, 서버의 가용성을 높일 수 있다. 단점으로는, 특정 서버에 부하가 집중되어 해당 서버의 성능이 저하될 수 있다는 점이 있다.

L4 로드밸런서

L4 로드밸런서는 OSI 4계층(전송 계층)에서 동작하는 로드밸런서를 말한다. 이러한 로드밸런서는 IP 주소, 포트 번호 등의 정보를 바탕으로 트래픽을 분배한다. L4 로드밸런서는 서버의 상태나 HTTP 헤더와 같은 정보를 고려하지 않고 단순히 패킷의 정보만을 기반으로 트래픽을 분배하기 때문에, 다양한 프로토콜을 지원하며, 고성능의 분산 처리가 가능하다. 하지만, HTTP와 같이 애플리케이션 계층에서 동작하는 프로토콜에 대해서는 분산 처리를 보다 효과적으로 수행할 수 있는 L7 로드밸런서를 사용하는 것이 더욱 효과적일 수 있다.

L7 로드밸런서

L7 로드 밸런서는 OSI 7계층(애플리케이션 계층)에서 동작하는 로드 밸런서를 말한다. 이러한 로드 밸런서는 HTTP 헤더와 같은 정보를 바탕으로 트래픽을 분배한다. L7 로드 밸런서는 HTTP와 같은 애플리케이션 계층에서 동작하는 프로토콜에 대해서 적극적으로 분산 처리를 수행할 수 있다. 이는 로드 밸런서가 요청을 받았을 때, 요청을 분석하여 가장 적절한 서버에 전달할 수 있기 때문이다. 또한, L7 로드 밸런서는 SSL 오버헤드를 줄이는 SSL 캐시 기능, 특정 패턴을 검색하여 차단하는 WAF(Web Application Firewall) 기능 등을 제공하기도 한다. 하지만, L7 로드 밸런서는 L4 로드 밸런서에 비해 더 많은 CPU 리소스를 요구하며, 처리 속도가 느려질 수 있다.

서브목차