늘 겸손하게

CS - Network - 로드 밸런싱 (Load Balancing) 본문

Computer Science/Network

CS - Network - 로드 밸런싱 (Load Balancing)

besforyou999 2022. 9. 26. 13:06

로드 밸런싱 (Load Balancing)

 

 

둘 이상의 CPU, 저장 장치, 서버와 같은 컴퓨터 자원들에게 작업을 나누는 것

 

 

 

 

요즘 시대에는 웹 사이트에 접속하는 인원이 급격히 늘어나게 되었고

 

이 모든 접속 트래픽을 1대의 서버로 감당하기는 어려워졌다.

 

이에 대한 대응책으로 'Scale-up'과 'Scale-out'이 있다.

 

  1. Scale-up : 하드웨어의 성능을 올리는 것
  2. Scale-out: 여러대의 서버가 나눠서 일하도록 만드는 것

 

하드웨어 향상 비용은 비싸고, 서버 여러대면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-out이 효과적이다.

 

이때 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 로드 밸런싱

 

 

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

 

 

  • 라운드 로빈 (Round Robin) : CPU 스케줄링의 라운드 로빈 방식 활용
  • Least Connections : 연결 개수가 가장 적은 서버 선택 (트래픽으로 인해 세션이 길어지는 경우 권장)
  • Source : 사용자 IP를 해싱하여 분배 (특정 사용자가 항상 같은 서버로 연결되는 것 보장)

 

 

로드 밸런서 장애 대비

 

 

서버를 분배하는 로드 밸런서에 문제가 생길 수 있기 때문에 로드 밸런서를 이중화하여 대비

 

Actice 상태의 로드 밸런서와 Passive 상태의 로드 밸런서를 준비함.

 

Actice 상태의 로드 밸런서에 장애 발생 -> Passive 상태의 로드 밸런서 투입