[네트워크] 로드밸런서가 뭘까?

네민·2025년 2월 28일
0

우당탕탕 cs 공부

목록 보기
11/14

로드밸런서

네트워크 또는 애플리케이션 레벨에서 들어오는 트래픽을 여러 서버로 분산하여, 시스템의 성능과 가용성을 향상시키는 장치 또는 소프트웨어 의미한다.

L4 로드밸런서 (4계층, 전송 계층)

TCP, UDP 등 IP와 포트 기반으로 트래픽을 분산한다.

속도가 빠른 게 장점이고, 단순 트래픽을 분산이나 속도가 중요한 서비스(DB, 게임 서버)에서 사용된다.

대표적인 서비스는 AWS NLB, 구글 클라우드가 있다.

L7 로드밸런서 (7계층, 애플리케이션 계층)

HTTP, HTTPS 등의 애플리케이션 요청을 기반으로 트래픽을 분산한다.

특정 URL, 쿠키, HTTP 헤더, 도메인 기준으로 분산할 때 사용된다.

쿠키로 분산하는 방법은 만약에 A, B, C 서버가 있다고 가정해보자.

처음에 A 서버를 사용하면 해당 서버에 쿠키가 저장될 것이고, 그 이후에는 해당 사용자를 A 서버로 보내게 된다.

대표적인 서비스는 Nginx, AWS ALB가 있다.


로드밸런서 알고리즘

  1. 라운드 로빈 (Round Robin)
    -> A, B, C 등 서버를 순서대로 돌아가며 트래픽을 분산한다.

  2. 가중 라운드 로빈 (Weighted Round Robin)
    -> 성능이 더 좋은 서버에 가중치를 부여하여 더 많은 트래픽을 보낸다.
    여기서 가중치는 개발자가 설정 가능하다.

  3. IP 해시 방식 (IP Hash)
    -> 클라이언트 IP 주소를 해싱하여 같은 IP는 항상 같은 서버로 연결되도록 한다.

  4. 최소 연결 방식 (Least Connections)
    -> 현재 연결이 가장 적은 서버로 트래픽을 보낸다.
    그래서 연결 수를 계속 확인하면서 분산해야 한다.

  5. 최소 응답시간 방식 (Least Response Time)
    -> 응답 시간이 가장 빠른 서버로 트래픽을 분산한다.


추가 질문

1. 로드밸런싱 대상이 되는 장치중 일부 장치가 문제가 생겨 접속이 불가능하다고 가정해 봅시다. 이 경우, 로드밸런서가 해당 장비로 요청을 보내지 않도록 하려면 어떻게 해야 할까요?

로드밸런서는 헬스 체크(Health Check) 기능을 통해 각 서버의 상태를 주기적으로 확인한다.

만약 특정 서버가 응답하지 않거나 장애가 발생하면, 해당 서버를 로드밸런싱 대상에서 제외하여 트래픽이 정상적인 서버로만 전달되도록 한다.

2. 로드밸런서 장치를 사용하지 않고, DNS를 활용해서 유사하게 로드밸런싱을 하는 방법에 대해 설명해 주세요.

DNS를 활용하여 여러 서버의 IP 주소를 등록하면 트래픽을 분산할 수 있다.

하지만 서버 상태를 직접 감지할 수 없기 때문에, 장애가 발생한 서버로 트래픽이 전달될 가능성이 있다. 이를 방지하려면 Failover DNS 또는 짧은 TTL(Time-To-Live) 설정을 활용해야 한다.


참고 자료
로드 밸런싱 알고리즘 A to Z: 코드와 함께 파헤치는 5가지 전략

profile
기록하자

0개의 댓글