Loadbalancer Algorithms

대규모 시스템 설계 관점에서의 로드밸런스 알고리즘

로드 밸런싱 알고리즘들은 혼합하거나 수정해서 사용하기도 한다. 시스템 특성과 요구사항에 맞게 선택하고 조정하는게 중요하다.

  • 라운드 로빈

    • 순차적으로 각 서버에 균등하게 분배한다.

    • 첫 번째 요청은 첫 번째 서버에, 두번째 요청은 두번째 서버에 보내지는 식이다.

    • 구현이 간단하고, 모든 서버에 균등하게 요청을 분배한다.

    • 서버의 성능이나 현재 부하를 고려하지 않는다. 과부하 상태일때도 같은 수의 요청을 받는다.

  • 가중 라운드 로빈

    • 라운드 로빈과 유사하지만, 각 서버에 특정 가중치를 부여한다. 더 높은 가중치를 가진 서버가 더 많은 요청을 받는다.

    • 서버의 성능이나 용량에 따라 요청을 조정할 수 있다.

    • 올바른 가중치 설정이 필요하며, 서버의 상태나 용량에 따라 가중치를 주기적으로 조정해야 한다.

  • 최소 연결

    • 현재 활성 연결이 가장 적은 서버에 새로운 요청을 보낸다.

    • 서버마다 처리 능력이 다르거나, 세션이 길게 유지되는 경우 적합하다.

    • 실시간 트래픽 분포에 반응하여 서버에 균등한 부하를 할당한다.

    • 연결 수만 고려하므로, 서버의 실제 부하나 처리 시간을 고려하지 않는다.

  • 가중 최소 연결

    • 최소 연결 알고리즘과 유사하지만, 서버의 성능이나 용량에 따라 가중치를 부여한다.

    • 서버의 성능과 현재 부하를 더 정확히 반영할 수 있다.

    • 가중치 설정과 조정이 필요하며, 서버 상태의 변화에 따라 지속적인 관리가 요구된다.

  • IP 해시(IP Hash)

    • 클라이언트의 IP 주소를 해싱하여 결정된 서버에 요청을 보낸다.

    • 클라이언트가 항상 동일한 서버로 연결되도록 한다.

    • 세션 지속성을 보장하며, 사용자별 정보가 필요한 경우 유용하다.

    • 트래픽 분포가 불균등할 수 있으며, 특정 서버에 과부하가 발생할 가능성이 있다.

  • 최소 응답 시간(Least Response Time)

    • 응답 시간이 가장 짧은 서버에 요청을 보낸다. 이는 서버의 현재 부하와 성능을 실시간으로 고려한다.

    • 빠른 응답을 제공할 수 있는 서버를 선택함으로써 사용자의 경험을 향상

    • 실시간 모니터링과 높은 계산 복잡도가 필요하다.

  • URL 해시(URL Hash)

    • 요청 URL을 기반으로 해시 값을 계산하여 결정된 서버에 요청을 보낸다.

    • 특정 URL을 항상 같은 서버가 처리하도록 한다.

    • 캐시 효율성이 높아지며, 특정 종류의 요청을 특화된 서버가 처리할 수 있다.

    • 특정 서버에 부하가 집중될 수 있으며, 모든 URL에 균등하게 트래픽을 분배하지 못할 수도 있다.

Last updated