네트워크 - 로드 밸런싱(Load Balancing)

고태희·2022년 3월 17일
0

CS

목록 보기
18/20

개념

정의

둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것 .
로드밸런싱으로 부하 분산을 통해 가용성응답시간을 최적화시킬 수 있다.

배경

예를들어, 블랙프라이데이와 같이 특정 시점에 한 웹사이트로 트래픽이 평소보다 엄청나게 증가한다면, 문제가 발생할 수 있다.
이런 트래픽을 예측하고 감당하기 위해 서비스를 제공하는 측에서 미리 서버와 네트워크를 증설한다.
Scale-Up 작업은 한계가 있으므로 Scale-Out방식을 택한다
이때, 여러 서버들로 대규모의 트래픽을 분산 처리 시켜주기 위해 Load Balancing을 하는 것이다.

Scale Up : HW의 성능을 향상시켜서 서버의 성능을 올리는것. 하지만, 비용이 많이 든다

Scalue Out : 서버의 대수를 늘려 처리능력을 향상시키는 것. 하지만, Scale Out 작업을 해도 Load Balancer가 없다면 하나의 서버로 트래픽이 몰리는 현상이 여전히 발생할 수 있다.

주요 기능

  • NAT(Network Address Translation) : Private IP -> Public Ip로 변조

  • Tunneling : 데이터를 캡슐화하여 연결된 노드만 캡슐을 해제할 수 있게 만듦

  • DSR(Dynamic Source Routing Protocol) : 요청에 대한 응답을 할 때 Load Balancer가 아닌 클라이언트의 IP로 전송

동작방식


위 예시에서는 사용자가 서버에 서비스를 요청할 때 중간에서 Load Balancer가 NAT를 통해 IP / MAC 주소를 변조한다.

로드밸런서가 서버를 선택하는 방식

  • Round Robin : CPU 스케줄링의 Round Robin 방식
  • Least Connection : 연결 개수가 가장 적은 서버 선택
  • Source Hashing Scheduling : 사용자의 IP를 해싱한 후 그 결과에 따라 서버로 요청 분배. 사용자의 IP는 항상 동일하므로 항상 같은 서버로 연결된다

0개의 댓글