본문 바로가기

컴퓨터 프로그래밍/Computer Science

로드 밸런싱이란?

1) 로드 밸런서를 사용하는 이유 

서버는 수백만 명의 사용자를 동시에 처리해야하는 할 경우 부하가 발생할 수 있다.

이때 발생한 서버의 부하를 해결하기 위한 방법으로 2가지 종류가 있으며 

추가 장비 없이 하드웨어의 성능을 높이는 "Scale-up" 방식과 추가적으로 여러 서버를 두는 "Scale-out" 방식이 있다.

 

Scale-up(스케일 업)  Scale-out(스케일 아웃) 
CPU 변경, RAM 추가 등의 하드웨어 장비의 성능을 높임
수직 확장으로 성능 확장에 한계가 있음
하나의 장비에서 처리하던 일을 여러 장비에 나눠서 처리 
수평 확장적으로 지속적인 확장이 가능
성능 증가에 따른 비용 증가폭이 큼 비교적 저렴한 서버 사용으로 비용 부담이 적음
한 대의 서버에 부하가 집중되어 장애 영향도가 크다  읽기/쓰기가 여러 대의 서버에 분산 처리되기 때문에 
장애 시 전면 장애의 가능성이 적다

 

서버를 추가하여 성능을 높이는 Scale out 방식의 경우 여러 서버에 분산처리를 할 수 있는 로드밸런싱 장치(=로드밸런서)가 필요하다. 

 

로드밸런서는 사용자와 서버 그룹 사이에서
리소스를 서버에 동일하게 분배하는 장치



2) 로드 밸런싱이란?

로드 밸런서를 사용하여 어플리케이션을 지원하는 리소스 전체에 트래픽을 균등하게 배포하는 기술

※ 과정 순서 : 사용자 요청 -> 로드 밸런서 -> 가장 적합한 서버에게 요청을 라우팅 

 

 

3) 로드 밸런서 동작 절차

1) 클라이언트가 브라우저에 URL을 입력하면 PC에 설정 된 DNS 서버로 DNS쿼리가 발송 됨 

2) 로컬 DNS 서버는 클라이언트가 요청한 URL을 관리하는 DNS서버로부터 L4 VIP 주소를 획득하게 됨 

3) 로컬 DNS는 획득한 VIP주로를 클라이언트에게 전송

4) 클라이언트는 획득한 DNS를 기반으로 L4 VIP로 http(s)요청 

5) 로드밸런서는 최적의 서비스 서버를 내부 알고리즘을 통하여 선별한 후 요청을 전송, 서버 작업 결과를 로드 밸런서에게 전송 

6) 전달 받은 결과를 로드밸런서를 통해 클라이언트에게 전송함 

 

 

3-1) 로드 밸런서 기본 기능

1) 상태 확인(Health Check) 

서버들에 대한 주기적인 상태 확인을 통해서 서버들의 장애 여부를 판단 할 수 있음 

이로 인해 서버에 이상이 생기면 정상적으로 동작하는 서버로 트래픽을 보내주는 Fail-Over 가 가능하고

TCP/UDP 분석이 가능하기 때문에 방화벽의 역할도 수행할 수 있음 

 

□ L3 체크 : ICMP 을 이용하여 서버 IP주소가 통신 가능한 상태인지 확인

□ L4 체크 : TCP의 3Way-handshaking을 통해 각 서버의 포트 상태를 확인

□ L7 체크 : 애플리케이션 계층에서 체크하는 방법으로 웹 페이지에 통신을 시도하여 이상 유무를 파악

 

2) Tunneling

인터넷 상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 해주는 개념

데이터를 캡슐화하여 연결된 상호 간 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다

로드 밸런서의 VIP주소로 향하는 요구 패킷이 로드 밸런싱 서버로 전달되면 로드 밸런싱 서버에서 패킷의 목적지 주소와 포트를 검사하여 가상 서버 정책과 일치하는 경우 스케줄링에 따라 실제 작업 서버로 전달 

 

3) NAT

IP주소를 변환해주는 기능으로 내부 네트워크에서 사용하던 사설 IP주소를 로드 밸런서 외부의 공인 IP주소로 변경해주는 역할을 담당한다. 

 

- SNAT : 내부에서 외부로 트래픽이 나가는 경우(내부 사설 IP -> 외부 공인 IP 주소로 변환해주는 방식) 

- DNAT : 외부에서 내부로 트래픽이 들어오는 경우(외부 공인 IP -> 내부 사설 IP주소로 변환해주는 방식) 

 

4) DSR

서버에서 클라이언트로 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음 네트워크 장비나 로드 밸런서를 거치지 않고 바로 클라이언트로 찾아가는 방식

=> 로드밸런서의 부하를 줄여줄 수 있다는 장점이 있음 

 

3-2) 로드 밸런서의 장애를 대비하는 방법

로드 밸런서의 갑작스러운 장애에 대비하여 이중화를 기본 구성으로 한다. 

 

1. 이중화된 로드 밸런서들은 서로 상태를 확인 한다. 

2. Master 서버가 Fail되면 Standby 서버가 자동으로 Master 서버의 역할을 한다. 

3. Standby 서버는 평상 시에는 대기 상태로 있다가 Master 서버가 Fail되었을 경우에만 작동한다. 

=> 해당 구성을 "Fail Over" 라고 함 

 

 

4) 로드밸런싱 종류와 방법(L4, L7) 

◎ L4 로드밸런싱 

-> 네트워크 4계층의 전송 계층에서 로드를 분산 처리함 

-> IP주소, 포트번호, MAC주소 등에 따라서 트래픽을 나누고 분산처리가 가능

-> 대표적 로드 밸런싱 장비로서 L4 스위치가 있음

 

L7 로드밸런싱

-> 네트워크 7계층의 어플리케이션 계층에서 로드를 분산한다. 

-> OSI 7계층의 프로토콜(HTTP, SMTP, FTP 등)을 바탕으로 분산처리가 가능하다. 

 

* VIP 

=> Virtual IP 라고 부르며 가상 아이피를 말한다. 

서버 그룹의 대표 IP라고 말할 수 있으며 외부에서 보여지는 대표 IP라고 말할 수 있음 

 

5) 로드밸런싱 알고리즘 

● 정적 로드 밸런싱

=> 고정된 규칙을 따르고 현재 서버의 상태과 무관하게 트래픽을 균등하게 분배

 

* 정적 로드 밸런싱 종류 

- 라운드 로빈 방식

- 가중 기반 라운드 로빈 방식

- IP 해시 방식

 

① 라운드 로빈 방식

여러 대의 서버가 동일한 스펙을 가지고 있고, 서버와 세션 연결이 오래 지속되지 않는 경우의 활용에 적합한 방식

프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간 단위로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘 

 

* 시간 단위 : 10ms ~ 100ms

시간 단위동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 됨 

문맥 전환의 오버헤드가 크지만 응답 시간이 짧아지는 장점이 있어서 실시간 시스템에 유리

 

② 가중 기반 라운드 로빈 방식

서버의 트래픽 처리 능력이 상이한 경우 사용되는 방식 

각 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분 

 

③ IP 해시 방식

클라이언트 IP주소에 대해 해싱이라고 하는 수학적 계산을 수행하여 특정 서버로 매핑하여 요청을 처리하는 방식

 

● 동적 로드 밸런싱

=> 트래픽을 배포하기 전에 서버의 현재 상태를 검사

 

① 최소 연결방법

서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식으로 

클라이언트는 서버에 첫 번째 요청을 전송할 때 서로 활성 연결을 인증하고 설정하게 되는데 

활성 연결이 가장 적은 서버를 확인하고 해당 서버로 트래픽을 전송하는 방법을 말한다. 

 

② 가중치 기반 최소 연결 방법

서버의 용량별로 연결이 가장 적은 서버로 트래픽을 분배하는 방법 

 

③ 최소 응답 시간 방법

서버의 응답 시간과 활성 연결을 결합하여 최상의 서버를 결정하는 방식으로 해당 알고리즘을 사용하게 될 경우 모든 사용자에게 더 빠른 서비스를 보장한다. 

 

④ 리소스 기반 방법 

해당 알고리즘의 경우 서버에 트래픽을 배포하기 전에 에이전트에 충분한 여유 리소스가 있는지 확인한 다음 

현재 서버의 부하를 분석하여 트래픽을 분산처리 한다. 

 

※ 에이전트 

-> 해당 소프트웨어는 각 서버에서 실행되며, 컴퓨터 용량 및 메모리와 같은 서버의 리소스의 사용량을 계산하는 역할

 

※ 서버팜 

-> 여러 서버들의 배열 

 

 

참고자료 : https://aws.amazon.com/ko/what-is/load-balancing/

 

로드 밸런싱이란 무엇인가요? - 로드 밸런싱 알고리즘 설명 - AWS

로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법입니다. 최신 애플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비

aws.amazon.com

참고자료 :  https://steady-coding.tistory.com/535

 

[네트워크] 로드 밸런서

cs-study에서 스터디를 진행하고 있습니다. 대규모 트래픽에 대처할 수 있는 방법 서버가 단 하나만 존재할 때, 수천만 명의 사람들이 서버에 동시 접속하면 서버는 부하를 감당하지 못할 수 있다.

steady-coding.tistory.com

참고자료 : https://en.wikipedia.org/wiki/Virtual_IP_address

 

Virtual IP address - Wikipedia

From Wikipedia, the free encyclopedia IP address that doesn't correspond to an actual physical network interface A virtual IP address (VIP or VIPA) is an IP address that does not correspond to a physical network interface. Uses for VIPs include network add

en.wikipedia.org

참고자료 : https://blog.naver.com/PostView.nhn?blogId=yoodh0713&logNo=221583443690 

 

VIP 란? 가상아이피와 L4 로드밸런싱 개념

VIP 란? 가상아이피와 L4 로드밸런싱 개념 VIP 란 Virtual IP 라고 해서 말 그대로 가상아이피를...

blog.naver.com