1. 정의
부하분산 또는 로드 밸런싱은 컴퓨터 네트워크 기술의 일종으로 중앙처리 장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을나누는 것을 말한다.
서버에 가해지는 부하(=로드)를 분산(=밸런싱) 해주는 기술이다.
사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 되는데, 이런 증가한 트래픽에 대처할 수 있는 방법은 크게 두가지 이다.
- Scale Up : 서버 자체의 성능을 높이는 것
- Scale Out : 여러대의 서버를 두는것
Scale-out방식에서 로드밸런싱이 필요하다. 각각의 서버에 균등하게 트래픽을 분산시켜주는 것이 바로 load balancer입니다.
2. 로드밸런싱 알고리즘
라운드 로빈
서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식
서버와의 연결이 오래 지속되지 않는 경우 적합하다.
가중 라운드로빈 방식
각서버에 가중치를 매기고 가중치가 높은 서버에 요청을 우선적으로 배정하는 방식
서버의 트래픽 처리 능력이 다른 경우 사용한다.
최소 연결 방식
요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 트래픽을 배정하는 방식
서버에 분배된 트래픽들이 일정하지 않은 경우에 적합하다.
IP 해시 방식
클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식
사용자가 항상 동일한 서버로 연결된다.
3. 주요 기능
NAT (Network Address Translation)
--> 사설 IP 주소를 공인 IP주소로 바꾸는데 사용하는 통신망의 주소 변조기입니다.
Tunneling
--> 인터넷 상에서 눈에 보이지 않는 통로를 만들어 통신할 수 잇게 하느 ㄴ개념
--> 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화도니 패킷을 구별해 캡슐화를 해제할 수 있습니다.
DSR(Dynamic Source Routing protocol)
--> 로드 밸런서 사용시 서버에 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아감
4. 구조
5. 종류
L2 - Mac 주소를바탕으로 Load Balancing 합니다.
L3 - IP주소를 바탕으로 Load Balancing 합니다.
L4 - Transport Layer(IP와 Port) Level에서 Load Balancing을 합니다. ex) TCP, UDP
L7 - Application Layer(사용자의 Request) Level에서 Load Balancing을 합니다. ex) HTTP, HTTPS
6. 동작방식
- 클라이언트의 브라우저에서 abc.net이라고 입력
- 클라이언트에 설정된 메인 DNS 서버로 abc.net의 IP주소를 문의
- 메인 DNS 서버는 abc.net 주소를 관리하는 별도의 DNS 서버에 IP 주소 문의
- 별도 관리 DNS 서버는 로드 밸런서의 IP 주소를 메인 DNS 서버에게 알려줌
- 메인 DNS 서버는 획득한 VIP 주소를 클라이언트에 전송
- 클라이언트에서 로드밸런서의 VIP 주소로 HTTP요청
- 로드밸런서는 별도 로드밸런싱 방법을 통해 서버에 요청 전송
- 서버의 작업 결과를 받은 로드밸런서는 전달받은 HTTP 결과를 클라이언트에게 전송
참조 :
https://velog.io/@jisoo1170/Load-Balancing%EC%9D%B4%EB%9E%80
https://nesoy.github.io/articles/2018-06/Load-Balancer
'개발합시다. > BackEnd 공부' 카테고리의 다른 글
Protocol(프로토콜) 이란 (0) | 2021.07.08 |
---|---|
SSH란 (0) | 2021.07.08 |
HTTP와 HTTPS란? (0) | 2021.07.07 |
Django client ip address 얻기 (0) | 2021.07.07 |
Django - Redis 세션 & 쿠키 & 캐시 정리 (0) | 2021.07.07 |