개발일지

로드밸런싱 본문

네트워크

로드밸런싱

딸기아사이레모네이드리프레셔 2024. 1. 18. 10:17
728x90

로드밸런싱

로드밸런싱 (Load Balancing) 은 '부하분산'이라고도 하며 해석 그대로 일을 밸런스 있게 맞추는 기능이다. 

1. 모든 사람들이 12월 31일 23시 59분 59초에 메신저로 친구들을 포함한 지인들에게 새해 인사를 한다고 가정
2. 한낱 한시에 메신저를 보내면 한꺼번에 많은 트래픽이 몰리게 되고 서버는 그 트래픽을 감당해내기가 어려워 부하를 받게됨

이를 방지하기 위해 우리는 동일한 서버를 여러 대 구비해놓고 트래픽을 분산해서 처리하게 된다.

 

그러나, 단순히 여러대의 서버를 구비해 놓는다고 해서 모든 서버에 적절하게 트래픽을 분산시킬 수 있는 것은 아니다.

여러대의 서버 중 트래픽이 몰리는 서버가 존재할 수 있고 이렇게 되면 서비스 장애가 일어날 가능성이 커진다.

한 곳의 서버에 트래픽이 몰리는 것을 방지하고 여러 서버에 적절히 분산시켜주는 기술이 바로 로드 밸런싱이다. 

 

 

Scale-up 이란?

서버 자체의 성능을 확장하는 것을 의미한다.

Scale-out이란 ?

기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것을 의미한다. 

로드밸런서의 목표

  1. 자원사용 최적화
    • 로드 밸런서는 서버 또는 리소스 간에 트래픽을 균등하게 분배하여 모든 서버가 고르게 일하도록 한다.
    • 시스템 전체의 자원 활용이 최적화되어 효율성이 향상된다. 
  2. throughput 증가
    • 로드 밸런서를 사용하면 여러 서버가 동시에 요청을 처리할 수 있으므로 전체적인 처리량(throughput)이 증가한다. 트래픽이 효과적으로 분산되면 시스템이 처리할 수 있는 요청 수가 증가하게 된다.
  3. 응답속도 감소
    • 클라이언트의 요청을 여러 서버로 분산하여 각 서버가 부하를 분담하게 한다. 이렇게 함으로써 개별 서버의 응답 시간을 감소시키고, 클라이언트에 대한 빠른 응답을 제공할 수 있다.
  4. 특정 서버의 과부하 방지
    • 로드 밸런서는 트래픽이 몰리거나 특정 서버에 부하가 집중되는 상황을 감지하고, 부하가 적은 서버에게 트래픽을 분산시켜 과부하를 방지한다. 이를 통해 전체 시스템의 안정성이 유지된다.
  5. 안정성, 가용성 제고
    • 로드 밸런서는 여러 서버 간에 트래픽을 분산하므로, 특정 서버의 장애나 다운타임이 전체 시스템에 큰 영향을 미치지 않는다. 따라서 로드 밸런서를 통해 시스템의 안정성과 가용성을 향상시킬 수 있다.

로드밸런싱 종류

로드밸런싱에는 L4로드밸런싱과 L7로드밸런싱이 많이 활용된다.

 

우리가 보통 OSI 7계층이라고 부르는 계층에는 제일 아래인 물리계층부터 응용계층까지 있고

그 중 4번째 계층인 전송계층을 L4 / 7번째 계층인 응용계층을 L7 라고 한다.

 

1. L4 로드밸런싱

  • IP,Port를 기준으로 스케줄링 알고리즘을 통해 부하를 분산한다. 
  • 전송계층 프로토콜의 헤더를 부하 분산에 이용하기 때문에 붙은 접두사이다. 
  • 주로 TCP 및 UDP 프로토콜을 기반으로 클라이언트와 서버 간의 트래픽을 분산시킨다. 
  • 트래픽을 전송계층의 로드밸런서가 받아 서버들에게 적절히 나누어 주며, L4 로드 밸런서는 네트워크 계층이나 전송 계층의 정보를 바탕으로 로드를 분산한다.
  • 장점
    • 처리 속도가 빠르다. 패킷의 헤더 정보만을 이용하기 때문에 빠른 응답 시간을 제공한다.
    • 실시간 트래픽 처리가 중요한 서비스의 경우 사용한다. 
  • 단점
    • 애플리케이션 계층의 정보를 활용하지 못해 기능 및 유연성이 제한적이다. 
      *L4정보(IP,PORT)만으로 라우팅을 수행하여 부하에 관련된 정보를 고려하지 않아 특정 서버에 요청이 집중되는 문제 발생한다.

2. L7 로드밸런싱

  • L7도 마찬가지로 트래픽을 응용계층의 로드밸런서가 받아 서버들에게 나누어 준다.
  • L7 로드 밸런서는 애플리케이션 계층에서 로드를 분산하는데 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능하다.
  • 주로 HTTP 및 HTTPS 프로토콜을 기반으로 클라이언트와 서버 간의 트래픽을 분산시킨다. 
  • 요청 내용(URL,헤더,쿠키 등)을 기반으로 로드 밸런싱을 수행한다. 
  • 또한, 특정 패턴의 바이러스를 감지해 네트워크 보호가 가능하며, 디도스와 같은 공격을 차단할 수 있어 보안 분야에서도 활용된다. 
  • 장점
    • 다양한 기능 및 유연성을 제공한다. 
    • 요청 내용을 분석하여 특정 요청을 특정 서버로 전달하거나, 캐싱 및 압축 등의 다양한 기능을 구현할 수 있다.
  • 단점
    • 처리 속도가 상대적으로 느리다.
    • 패킷의 애플리케이션 계층 정보를 분석해야 하기 때문에 L4 로드 밸런서보다 처리 시간이 더 걸린다. 

로드밸런싱 기법

1. 라운드 로빈 (Round Robin)

  • 순차적으로 돌아가며 세션을 할당해주는 방식이다.
  • 요청이 오면 단순히 그 요청을 순서대로 서버에 분배해주는데 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버에 할당해 준다. 로드밸런싱 대상 서버의 스펙이 동일하고, 처리 시간 혹은 세션 지속시간이 짧은 애플리케이션의 경우 이러한 방식이 적합하다.

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

  • 각 서버마다 가중치를 설정해두고 해당 가중치만큼 세션을 할당해주는 방식이다.
  • 특정 서버의 스펙이 좋다면 해당 서버에 가중치를 좀 더 주어 세션을 더 많이 할당해주고, 스펙이 좋지 않은 서버에는 가중치를 적게 두어 세션을 적게 할당해주는 방식이다.

3. 최소 연결 (Least Connection)

  • 가장 적게 연결(가장 적은 세션)되어 있는 서버에 세션을 할당해주는 방식이다.
  • 서버에 분배된 세션들이 일정하지 않은 경우에 적합하며 부하를 줄이는 측면에서 많이 사용된다.

4. 최소 응답 (Least Response Time)

  • 서버의 응답시간을 고려하여 세션을 할당해주는 방식이다.
  • 가장 짧은 응답 시간을 보이는 서버에 우선적으로 세션을 할당해주는 방식이다.

5. 해시 (Hash)

  • 특정 사용자는 특정 서버로만 할당시키는 방식이다.
  • 특정 IP주소나 포트를 갖는 사용자들은 특정 서버로만 세션을 맺도록 하는데 특정 IP주소나 포트에서 접속량이 특히 많을 때 관리가 편한 방식이다.

 

 

 

 

 

 

 

 

 

 

자료출처

https://habitus92.tistory.com/22

728x90

'네트워크' 카테고리의 다른 글

CORS란?  (1) 2024.01.22
HTTP와 HTTPS  (1) 2024.01.21
TCP와 UDP  (0) 2024.01.16
OSI 7계층  (0) 2024.01.13
TCP/IP_흐름제어,혼잡제어  (0) 2024.01.13
Comments