로드밸런서에 대해서 알아보자.
- 현대의 모든 정보는 인터넷을 통해 연결되어 있다.
- 인터넷의 발달로 데이터 통신이 많아졌고 이는 트래픽의 폭발적인 증가로 이어졌다고 한다.
트래픽의 폭발적인 증가
아무리 성능이 뛰어난 서버라고 해도 모든 트래픽을 감당해낼 수 없게됐다.
이에 기업은 서버를 추가로 구비하고 여러 대의 서버에 동일한 데이터를 저장해 수많은 트래픽을 효과적으로 분산하게 되었다.
그런데 단순히 다수의 서버를 구축해 운영한다고 해서 모든 클라이언트의 요청에 일관성 있게 응답할수 있을까?
로드 밸런싱?
쏟아지는 트래픽을 여러 대의 서버로 분산해주는 기술이 없다면 한 곳의 서버에 모든 트래픽이 몰리는 상황이 발생할 것이다. 이때 필요한 기술이 로드 밸런싱
이다.
로드 밸런서는 서버가 처리해야 하는 업무나 요청을 여러 대의 서버로 분산하여 균등하게 처리해주는 장치 또는 기술을 총칭한다.
클라이언트와 서버풀 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 한다.
로드 밸런싱은 모든 경우에 항상 필요한가?
로드 밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다.
서비스의 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답이 가능하다.
하지만 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상 서버 운영이 불가능해진다. 이처럼 증가한 트래픽을 대처할 수 있는 방법은 크게 2가지가 있다.
트래픽을 대처하는 2가지 방법
Scale-up
- 서버 자체의 성능을 확장하는 것을 의미한다.
- CPU i5 -> i7으로 업그레이드 하는것과 같다.
Scale-out
- 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증성하여 운영하는 것을 의미한다.
- CPU i5인 컴퓨터를 여러 대 추가 구입해 운영하는 것과 같다.
- Scale-out의 방식으로 서버를 증성한다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요하다.
- 클라이언트의 요청을 특정 서버에 분배하는 로드밸런싱 기법은 여러 가지가 있다.
아래에서는 활용할 수 있는 부하 분산 방식(알고리즘)에 어떠한 것들이 있는지 알아보자
다양한 로드밸런싱 방법(알고리즘)
라운드로빈 방식(Round Robin Method)
- 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식이다.
- 클라이언트의 요청을 순서대로 분배 -> 여러 대의 서버가 동일한 스펙을 가지고 서버와의 연결이 오래 지속되지 않는 경우 활용하기 적합하다.
가중 라운드로빈 방식(Weighted Round Robin Method)
- 각각 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분하는 방식
- 주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산방식이다.
- 예로,
- A라는 서버가
5라는 가중치
를 가진다. - B라는 서버가
2라는 가중치
를 가진다. - 로드밸런서는 라운드 로빈 방식으로
A서버에 5개, B서버에 2개의 요청을 전달
한다.
- A라는 서버가
IP 해시 방식(IP Hash Method)
- 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다.
- 사용자의 IP를 해싱해 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.
최소 연결 방식(Least Connection Method)
- 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 배분한다.
- 자주 세션이 길어지는 서버거나, 분배된 트래픽이 일정하지 않을 경우에 적합한 방식이다.
최소 리스포나임(Least Response Time Method)
- 서버의 현재 연결 상태와 응답시간을 모두 고려하여 트래픽을 배분하는 방식이다.
- 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식이다.
로드밸런서의 종류
- 로드 밸런서는 여러 종류가 있다.
- 핵심은 OSI 7 Layer를 기준으로 부하를 어떻게 분산하는지에 따라 종류가 나뉜다.
- 2,3 계층을 부하 분산하면 L2, L3인 방식이다.
상위 계층은 하위 계층의 데이터를 모두 가지기 떄문에, 상위 계층일수록 섬세한 로드 밸런싱이 가능하고 하위 계층일수록 간단한 로드 밸런싱만 가능하다. 상위 계층일수록 가격이 비싸지만 현재 점점 가격차이가 줄여드는 추세여서 L7를 주로 사용한다고 한다
L4 vs L7
- 로드 밸런서의 종류로는 L(2,3,4,7)가 있고, 그 중 4와 7이 가장 많이 사용된다.
L4
- L4로드 밸런서부터 포트 번호를 바탕으로 로드(부하)를 분산하는 것이 가능하기 때문이다.
- L4의 경우 IP,Port등을 로드 밸런싱에 활용한다. 한대에 서버에 여러 포트를 사용하여 서버를 운영한다면 최소 L4 로드 밸런서 이상을 사용해야만 한다.
L7
- HTTP 헤더, 쿠기, 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능하다.
- 패킷의 내용을 확인해서 그 내용에 따라 트래픽을 특정 서버에 전송하는 것이 가능하다.
- URL에 따라 부하를 분산시키거나, HTTP 헤더의 쿠키값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있다.
- 서버의 응답까지도 알고 분석 가능하고 서버들로부터 필요한 정보를 응답 받아 클라의 요청을 전달하기 전에 서버의 상태를 파악한 후 로드밸런싱을 진행할 수 있다.
참고자료
'CS' 카테고리의 다른 글
REST, REST API 제데로 알아보자 (0) | 2023.10.17 |
---|---|
동기와 비동기 (0) | 2023.10.13 |
프로세스 스레드 (0) | 2023.10.13 |
AXIOS가 뭐하는 녀석인지? - 비동기 통신, Promise, Ajax, HTTP, (0) | 2023.02.16 |