본문 바로가기
Knowledge/CS

[CS] 로드 밸런싱(Load Balancing)

by YoonJong 2022. 12. 27.
728x90

로드 밸런싱이란, 둘 이상의 CPU , 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.

 

웹 사이트에 접속하는 트래픽수가 급격히 증가하면서, 1대의 서버로는 감당이 안된다.

대응하기 위해, 하드웨어의 성능을 높이거나(Scale-up) 여러대의 서버(Scale-out) 에게 트래픽을 분할 시키는 것이었다.

 

하드웨어의 성능 향상은 가격이 너무 비싸기 때문에 보통 서버를 여러대 추가한다.

해당 장점은, 비용뿐만 아니라, 무중단 서비스를 제공할 수 있다.

서버가 여러대로 늘어나면 균등하게 분배해야 하는데 이것을 로드 밸런싱이 해준다.

 

로드 밸런서는 클라이언트와 서버 사이에 위치시켜, 부하가 일어나지 않게 여러 서버에 분산시켜 준다.

 

로드 밸런서가 서버를 선택하는 방식은 아래와 같다.

1. 라운드 로빈 : CPU 스케줄링 방식 중 하나 / 각 프로세스는 동일한 할당 시간을 주고 그 시간안에 끝나지 않으면 다시 준비 큐의 가장 뒤로 간다.

2. Least Connections : 연결 개수가 가장 적은 서버 선택 

3. Sourece : 사용자 IP를 해싱해서 분배

 

로드 밸런서가 1개이면 장애 발생 시, 해당 기능을 정상적으로 하지 못하기 때문에 이중화하여 장애를 대비할 수 있다.

 - Health Check 를 통해 정상인지 확인

 

로드 밸런서의 종류는 아래와 같다.

- L2 : Mac 주소를 바탕으로 로드 밸런싱

- L3 : IP 주소를 바탕으로 로드 밸런싱

- L4 : Transfer Layer 에서 로드 밸런싱

- L7 : Application Layer 에서 로드 밸런싱

728x90

'Knowledge > CS' 카테고리의 다른 글

[CS] 네트워크 토폴로지  (0) 2022.12.30
[CS] 처리량과 지연시간  (0) 2022.12.30
[CS] 가비지 컬렉션(Garbage Collection, GC) 이란?  (0) 2022.12.24
[CS] 인터럽트란?  (0) 2022.12.22
[CS] JVM 이란?  (0) 2022.12.17

댓글