Programming/Network

[Network] 로드밸런서

soeun2537 2024. 8. 26. 13:49
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기)

 

 로드밸런서가 무엇인가요?

 로드밸런싱

로드밸런싱: 네트워크 트래픽을 여러 서버나 네트워크 장치에 고르게 분산시켜, 특정 서버에 과부하가 걸리지 않도록 하는 기술이다. 이를 통해 시스템의 성능, 가용성, 신뢰성을 높이고, 장애 발생 시에도 서비스가 중단되지 않도록 보장한다.

 

 로드밸런서

로드밸런서: 로드밸런싱을 수행하는 장치 또는 소프트웨어를 의미한다. 로드밸런서는 클라이언트의 요청을 받아, 이를 여러 서버 중 하나로 전달하며, 요청에 따라 가장 적합한 서버를 선택한다.

🔽 로드밸런서의 필요성

서버를 운영할 때, 서버가 감당하지 못할 정도의 트래픽이 몰릴 경우, 이를 해결할 수 있는 방법은 크게 두 가지가 있다.

  • scale-up: 서버 자체의 성능을 높이는 방법
  • scale-out: 여러 대의 서버를 두는 방법

로드 밸런서는 scale-out 방식으로, 여러 서버에 트래픽을 균등하게 분산시키는 역할을 한다.

🔽 로드밸런서의 역할

  • 트래픽 분산: 클라이언트 요청을 여러 서버에 분산하여 특정 서버에 과부하가 걸리지 않도록 한다.
  • 고가용성: 서버 중 일부에 장애가 발생하더라도, 나머지 서버가 트래픽을 처리하여 서비스의 중단을 방지한다.
  • 성능 최적화: 요청을 가장 적합한 서버로 보내어 전체 시스템의 성능을 최적화한다.
  • 확장성 지원: 서버를 추가하여 쉽게 시스템을 확장할 수 있도록 지원한다.

 

 

✅ L4 로드밸런서와, L7 로드밸런서의 차이에 대해 설명해 주세요.

 L4 로드밸런서

🔽 특징

  • IP 주소와 포트 번호를 사용하여 트래픽을 분산한다.
  • 빠르고 간단한 처리가 가능하다.
  • 트래픽의 내용을 분석하지 않고, 패킷 레벨에서만 트래픽을 처리한다.
  • TCP/UDP 트래픽을 처리한다.

🔽 사용 예시

  • 여러 웹 서버가 동일한 애플리케이션에 호스팅하는 경우, L4 로드밸런서가 클라이언트 요청을 서버 간에 고르게 분배한다.
    • 단지 부하만 분산시킬 용도로 사용할 때

 

 L7 로드밸런서

🔽 특징

  • 트래픽의 내용을 기반으로 트래픽을 분산한다.
  • HTTP, HTTPS, FTP 등의 프로토콜을 처리한다.
  • 특정 URL이나 쿠키를 기준으로 라우팅이 가능하다.
  • 트래픽을 더 세밀하게 제어할 수 있으며, 다양한 정책을 적용할 수 있다.

🔽 사용 예시

  • 사용자의 요청 URL을 분석하여 특정 URL에 대한 특정 서버나 서버 풀로 요청을 전달할 수 있다.
    • 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리하여 사용할 때

 

 L4 로드밸런서와 L7 로드밸런서의 차이점

  L4 로드밸런서 L7 로드밸랜서
작동 계층 OSI 모델의 4계층 (Transport 계층) OSI 모델의 7계층 (Application 계층)
기반 IP 주소와 포트 번호 애플리케이션 레벨의 데이터 (URL, 쿠키, 헤더 등)
속도 빠르고 효율적 상대적으로 느림 (데이터 분석 필요)
처리 범위 TCP/UDP 트래픽 HTTP, HTTPS, FTP 등 애플리케이션 트래픽
트래픽 분석 패킷의 헤더만 분석 트래픽의 내용을 분석하여 더 정교한 라우팅 가능
사용 사례 간단한 트래픽 분산 (예: 여러 웹 서버에 트래픽 분배) 세밀한 트래픽 관리 (예: 특정 URL에 따라 서버 분배)

 

 

✅ 로드밸런서 알고리즘에 대해 설명해 주세요.

 라운드 로빈(Round Robin)

서버에 트래픽을 순차적으로 분배하는 방식

🔽 특징

  • 모든 서버에 트래픽이 균등하게 분배된다.
  • 서버의 성능이나 상태를 고려하지 않기 때문에, 서버의 처리 능력이 동일하거나 유사한 단순한 환경에 적합하다.

🔽 사용 예시

  • 소규모 네트워크나, 동일한 사양의 서버로 구성된 환경

 

 가중치 라운드 로빈(Weighted Round Robin)

각 서버에 가중치를 부여하여 트래픽을 분배하는 방식

🔽 특징

  • 각 서버의 처리 능력에 따라 트래픽을 분배할 수 있다.
  • 성능에 맞는 비율로 트래픽을 분산할 수 있어, 서버 간 성능 차이가 있는 경우 적합하다.

🔽 사용 예시

  • 서로 다른 성능의 서버가 혼재된 환경

 

 최소 연결(Least Connection)

현재 가장 적은 연결 수를 가진 서버에 트래픽을 분배하는 방식

🔽 특징

  • 각 서버의 현재 부하 상태를 고려하여 트래픽을 분배하므로, 서버 간 부하가 균등하게 유지된다.
  • 서버의 성능뿐만 아니라 실시간 부하를 고려하므로, 동적으로 변하는 트래픽 환경에 적합하다.

🔽 사용 예시

  • 웹 서버와 같이 연결 수가 변동이 큰 환경

 

 IP 해시(IP Hash)

클라이언트의 IP 주소를 해시함수로 변환하여 특정 서버에 트래픽을 분배하는 방식

🔽 특징

  • 동일한 IP 주소를 가진 클라이언트는 항상 같은 서버에 연결되도록 보장한다.
  • 클라이언트와 서버 간 세션을 유지해야 하는 환경에 적합하다.

🔽 사용 예시

  • 세션 유지를 필요로 하는 웹 애플리케이션

 

 

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

  • 헬스 체크(Health Check)를 설정하여 로드밸런서가 서버나 장치의 상태를 주기적으로 모니터링하도록 해야 한다. 헬스 체크는 서버가 정상적으로 응답하는지 확인하는 과정이다. 로드밸런서는 주기적으로 각 서버에 간단한 요청을 보내 서버가 정상적으로 응답하는지 확인한다. 정상적인 응답이 없을 경우 해당 서버를 비활성화 상태로 간주하고, 서버가 정상 상태로 복구되면 로드밸런서는 다시 해당 서버를 활성화하여 트래픽 분산 대상에 포함시킨다.

 

 

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

  1. 서버 준비: 트래픽을 분산시킬 여러 서버를 준비한다. 각 서버는 동일한 콘텐츠와 서비스를 제공하도록 구성되어야 한다.
  2. DNS 레코드 설정: DNS 서버에 동일한 도메인에 대해 여러 IP 주소를 등록한다. 각 IP 주소는 준비된 서버 중 하나를 가리키게 된다.
  3. 라운드 로빈 방식: DNS 서버는 클라이언트의 요청을 받을 때마다 순차적으로 다른 IP 주소를 반환한다. 이를 통해 트래픽이 여러 서버로 고르게 분산된다.

 

 

📍 문제 출처

Tech-Interview / 03-NETWORK.md

 

📍 참고 자료