본문 바로가기
Computer Science/Network

로드 밸런싱 (Load Balancing)

by weero 2020. 8. 17.

로드 밸런싱

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

- 대용량의 트래픽을 감당하기엔 1대의 서버로는 부족하다.

   대응방안?

   1) Scale-up : 하드웨어의 성능을 올린다. 하드웨어 향상 비용이 비싸다.

   2) Scale-out : 여러대의 서버가 나눠서 일하도록 한다.

   - Scale-out의 경우,

   하드웨어 향상 비용보다 서버 한 대의 추가 비용이 더 저렴하며,

   여러 Server 덕분에 무중단 서비스를 제공할 수 있다.

  → 여러 서버에게 균등하게 트래픽을 분산시켜 주는 것을 로드 밸런싱이라고 한다.

- 로드 밸런서(Load Balancer)

   분산식 웹 서비스로, 여러 서버에 부하(load)를 나누어 주는 역할을 한다.

   - 로드 밸런서를 클라이언트와 서버 사이에 두어 여러 서버에 부하를 분산시켜준다.

   - 서비스를 운영하는 사이트의 규모에 따라 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있다.

 

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

1) 라운드 로빈(Round Robin)

   CPU 스케줄링의 라운드 로빈 방식을 활용한다.

2) Least Connections

   연결 개수가 가장 적은 서버를 선택한다.

   트래픽으로 인해 세션이 길어지는 경우 권장한다.

3) Source

   사용자 IP를 Hashing하여 분배한다.

   특정 사용자가 항상 같은 서버로 연결되는 것을 보장할 수 있다.

 

로드 밸런서 장애 대비

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

(Active 상태, Passive 상태

- 두 로드 밸런서들은 서로를 Health Check한다.

- 메인 로드 밸런서가 동작하지 않으면 가상 IP(VIP, Virtual IP)는 여분의 Load Balancer로 변경된다.

- 여분의 로드 밸런서로 운영하게 된다.