하루에 한 문제

로드 밸런싱 본문

CS/네트워크

로드 밸런싱

dkwjdi 2021. 4. 1. 23:16

웹사이트를 사용하는 사람이 급격하게 증가함에 따라 성능이 아무리 뛰어나도 모든 트래픽을 하나의 서버가 감당할 수 없다.  이에 기업들은 서버를 추가로 구비하고 여러 대의 서버에 동일한 데이터를 저장해 수많은 트래픽을 효과적으로 분산한다.

 

그런데 단순히 다수의 서버를 구축해 운영한다고 해서 모든 클라이언트의 요청에 일관성 있게 응답할 수 있을까요? 쏟아지는 트래픽을 여러 대의 서버로 분산해주는 기술이 없다면 한 곳의 서버에 모든 트래픽이 몰리는 상황이 발생할 것이다. 이때 필요한 기술이 바로 로드밸런싱이다!!

 

 

로드 밸런서란??

 

로드밸런서는 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭한다. 클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 해준다.

 

그런데 로드밸런싱이 항상 필요할까??

로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다.

서비스의 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답하는 것이 가능 하지만 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하다. 이처럼 증가한 트래픽에 대처할 수 있는 방법은 크게 두 가지로 나뉜다

 

 

1. Scale-up : Server가 더 빠르게 동작하기 위해 하드웨어의 성능을 올리는 방법.

2. Scale-out : 하나의 Server보다는 여러 대의 Server가 나눠서 일을 하는 방법.

 

Scale-up의 경우 서버 자체의 성능을 확장하는 것이다. 비유하자면 CPU가 i3인 컴퓨터를 i7으로 업그레이드하는 것과 같다!  반면 Scale-out의 경우 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 방법이다. CPU가 i3인 컴퓨터를 여러 대 추가 구입해 운영하 것에 비유할 수 있다.
Scale-out의 방식으로 서버를 증설하기로 결정했다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요하다

 

로드밸런싱 알고리즘

1. 라운드 로빈 : CPU 스케줄링의 라운드 로빈 방식 활용

2. Least Connections : 연결 갯수가 가장 적은 서버 선택(트래픽으로 인해 세션이 길어지는 경우 권장)

3. IP 해시 : 사용자 IP를 해싱하여 분배(특정 사용자가 항상 같은 서버로 연결되는 것을 보장)

 

로드밸런싱 알고리즘

참고

m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903

github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/%EB%A1%9C%EB%93%9C%20%EB%B0%B8%EB%9F%B0%EC%8B%B1.md

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

크로스 브라우징  (0) 2021.04.14
Blocking-NonBlocking-Synchronous-Asynchronous  (0) 2021.04.02
주소창에 naver.com을 치면 일어나는 일  (1) 2021.03.31
UDP  (1) 2021.03.31
TCP ( 흐름 제어, 오류 제어)  (0) 2021.03.31
Comments