네트워크 엔지니어 & 개발자 로엘이

이전 포스팅을 통해 로드밸런싱과 로드밸런서 그리고 L4 스위치와 L7 스위치에 대해 알아보았습니다.

간단히 되짚어 보면 로드밸런싱을 부하분산을 수행하는 기술이며 로드밸런서는 로드밸런싱을 제공하는 장비였습니다.

로드밸런서 중 L4 스위치는 4 계층 장비로 TCP/UDP Port 정보를 이용하여 로드밸런싱을 제공하고 L7 스위치는 패킷의 페이로드를 이용하여 로드밸런싱을 제공합니다.

이번 포스팅에선 부하분산이 무엇이며 부하분산을 수행하기 위한 스케줄링 알고리즘에 대해 알아보겠습니다.

로드밸런싱을 수행하는 L4/L7 스위치에 대한 전반적인 내용을 순차적으로 소개하고 있다.

소개될 포스트팅은 다양한 L4/L7 스위치 중 PumpkinNetworks의 장비를 기준으로 기술하기에

F5 Networks, Cirtix, A10 Networks, Alteon(Radware), Brocade, Piolink

장비와 다소 개념이 다르거나 용어가 다를 수 있다.

부하분산

위키백과에 해설된 부하분산에 대한 내용을 살펴보면 컴퓨터 네트워크 기술의 일종으로 둘 이상의 중앙처리 장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답 시간을 최적화시킬 수 있다. 이 기술은 보통 내부 네트워크를 이용한 병렬 처리(특히, 고가용성의 병렬 처리)에 사용된다.라고 설명되어 있으며 L4/L7 스위치에 대비해서 보면 클라이언트의 요청을 로드밸런서가 Backend(서버)에 작업을 나누는 것을 의미한다.

부하분산이 필요한 이유

1. 서버를 운영하다 보면 이용자 증가, 서비스 확장 등 다양한 이유로 기존 서버보다 많은 서버의 용량과 성능이 필요하게 된다. 이러한 상황에서는 스케일 아웃과 스케일업 같은 확장 기법을 활용하는데 스케일 아웃 기법을 적용한 경우 동일한 기능을 하는 서버가 여러 대가 되기 때문에 각 서버에 부하를 균등하게 분배해주는 기술이 필요하다.

2. 웹서버, 메일서버 등 각종 서버의 기능들이 중지되어 서비스 운영에 지장이 생기기 전 동일한 기능을 서버를 추가하여 부하 분산을 수행하다 하나의 서버에 문제가 생긴 경우 다른 정상적인 서버가 서비스를 수행하여 운영에 지장이 생기지 않게 하기 위하여 필요하다.

스케줄링 알고리즘

부하분산을 처리하다 보면 서로 다른 사양의 서버와 서비스가 혼재하는 환경에서 하나의 서버로 부하가 몰릴 수 있다. 이러한 상황을 방지하기 위해 다양한 스케줄링 알고리즘이 존재하며 필요에 따라 환경에 맞는 알고리즘을 선택할 수 있다.

1. RR(Round-Robin Scheduling)

라운드 로빈 스케줄링은 클라이언트의 요구를 순차적으로 각 서버에 균등하게 분배하여 부하를 나누는 방식으로, 클라이언트의 새로운 연결 요청을 로드밸런서에서 순차적으로 균등하게 연결 설정을 수행한다.

이 방식은 서버의 커넥션 수나 응답 시간에 상관없이 서버 그룹 내의 모든 서버를 동일하게 처리하여 일반적인 구성에 있어서 다른 알고리즘에 비해서 가장 빠르고 자원의 균등하게 분배되는 장점이 있으나, 서버의 CPU 사용량을 고려하지 않는 단점이 있다. 모든 서버의 누적 커넥션은 동일하지만 서버의 처리량을 고려하지 않고 부하 분산을 수행하여 커넥션 별 처리량이 다를 수 있기 때문에 실제 서버들 사이에는 부하 불균형이 일어날 수 있다.

2. WRR(Weight Round-Robin Scheduling)

가중치 기반 라운드로빈 스케줄링은 라운드 로빈 알고리즘에 가중치가 추가된 알고리즘으로 서버 별로 서로 다른 가중치를 지정할 수 있다. 이 방식은 각 서버에 가중치를 부여할 수 있으며, 부여된 정수 값을 통해 분산 커넥션 수를 정하며, 가중치의 기본 값은 1이다. 실제 서버의 성능 차이로 인한 가중치 기반 라운드 로빈 스케줄링을 사용하면 동적 스케줄링 방식보다 스케줄링의 부담이 적어진다.

3. LC(Least Connection Scheduling) 

리스트 커넥션 스케줄링은 최소 접속 스케줄링이라고도 불리며, 커넥션이 가장 적은 서버로 요청을 직접 연결하는 방식을 말하며, 각 서버에서 동적으로 실제 접속한 숫자를 세어야 하는 동적인 스케줄링 알고리즘 중의 하나다. 이 방식은 접속 부하가 매우 큰 상황에도 서버의 커넥션 수가 고르게 분산되어 부하가 적은 서버를 우선적으로 접속 처리를 할 수 있으며, 비슷한 성능의 서버로 구성된 경우에는 아주 큰 요구가 한 서버로만 집중되지 않기 때문에, 접속 부하가 매우 큰 경우에도 아주 효과적으로 부하 분산을 수행할 수 있다. 모든 서비스 대상 장비의 현재 커넥션은 동일하지만 서버의 처리량을 고려하여 부하 분산을 수행하여 커넥션 별 처리량이 다를 수 있기 때문에 서버들 사이의 누적 커넥션 불균형이 일어날 수 있다.

4. WLC (Weight Least Connection Scheduling)

가중치 기반 리스트 커넥션 스케줄링은리스트 커넥션 알고리즘에 가중치가 추가된 알고리즘으로 각 서버에 가중치를 부여할 수 있으며, 부여된 정수 값을 통해 분산 커넥션 수를 정한다. 가중치의 기본 값은 1이다. 구체적으로는 커넥션 수 + 1 / 가중치가 서버를 선택하는 기준이 된다.

5. HS (Hash Scheduling)

해쉬 스케줄링은 사용자와 서버의 IP와 통신 포트에 따른 RS(Router Solicitation) 매칭 관계를 구해 RS로 부하 분산을 하는 방식으로 수학적인 매핑 관계를 가지며, Hash 결과 값이 같은 사용자는 동일한 서버로만 접속하게 된다. 이 경우 다수의 사용자가 접속할 때 통계적으로는 세션이 분산되나 완벽히 고르게 분산되지는 않고 사용자와 RS와의 지속적인 매핑 관계를 필요로 하는 경우에 사용될 수 있다. 수학 연산의 대상이 되는 IP에 따라 HSS(Hash Source IP), HSD(Hash Destination IP), HSSD(Hash Source/Destination IP)로 세분화된다.

 

 

- 끝 -

728x90
반응형
250x250

공유하기

facebook twitter kakaoTalk kakaostory naver band