병렬로 운영되는 서버의 부하를 분산하는 방안에는 어떠한 것이 있는가

1. 병렬로 운영되는 서버의 부하는 분산하는 방안에는 어떠한 것이 있는가

하드웨어 기술의 발전과 빅데이터 등 대용량의 데이터가 늘어나면서 하나로 운영되던 서버 환경에서 병렬로 많은 서버가 동시에 운영되는 환경으로 변화하고 있습니다. 이러한 환경에서는 각 서버 간 부하를 분산하고 고르게 일할 수 있도록 제어하는 기술이 중요하게 됩니다. 부하 분산이란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누어주는 기술을 말합니다. 

 이 문서에서는 서버 분산 방식의 유형과 각 유형별 세부적인 동작방법에 대해 기술되어 있습니다. 

2. 서버 부하분산 방식에는 어떠한 유형이 존재하는가

 서버 부하분산 방식에는 크게 정적 부하분산과 동적 부하분산 방식으로 나누어집니다. 정적 부하분산으로는 라운드 로빈(round robind) 스케줄링 방식을 적용하여 처리해야 하는 일의 순서대로 차례차례 서버에 할당하는 방식으로 가중치(Ratio)를 주어서 서버별로 차등적으로 일을 분배할 수도 있습니다. 가중치가 높은 서버에 더 많은 일을 할당하는 식으로 작업을 분산합니다. 또한 액티브-스탠바이(Priority Group Activation) 방식을 사용하면 액티브한 장치에게만 작업을 할당하고 액티브 서버에 문제가 생겼을 경우 스탠바이 서버에 작업을 할당하는 방식으로 스케줄링을 조정합니다. 

 동적으로 서버의 부하를 분산시키는 방법도 있습니다. 최소연결수(Least Connection) 알고리즘을 사용하여 연결수가 작은 서버에 작업을 먼저 할당하는 방식을 사용할 수도 있고, 최단 응답 시간(Fastest)을 파악하여 가장 빠르게 응답하는 서버에게 작업을 먼저 할당하는 방식을 적용할 수도 있습니다. 또한 최소 부하(Least Loaded) 방식으로 가장 부하가 적은 서버에게 많은 작업을 할당하는 방식을 사용하여 서버들이 효율적으로 작업을 할 수 있도록 조정할 수 있습니다. 

3. 각 서버 부하분산 방법들에 대한 세부적인 동작방법을 알아보자

3-1. 정적 부하분산 방식

 정적 부하분산 방식은 클라이언트로부터 요청을 받으면, 서버 상태와 상관없이 서버가 가지고 있는 설정을 기준으로 할당하는 방식입니다. 이 방식은 다음 순서로 할당할 서버를 예측하는데 용이하다는 장점이 있습니다. 

 라운드로빈(Round Robin) 방식은 클라이언트로부터 받은 요청을 부하분산 대상 서버에 순서대로 할당하는 방식입니다. 부하분산 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션이 실행되는 경우에 적합하게 사용될 수 있습니다. 가중치(Ratio) 방식은 서버별로 비율을 설정해 두고, 그 가중치에 따라 요청을 서버에 할당하는 방식입니다. 부하분산 대상 서버의 성능이 동일하지 않으면, 동일한 처리를 한다고 해도 처리 시간 차이가 발생할 수 있습니다. 이럴 때는 성능이 높은 서버를 우선순위 1로 지정하는 것이 효과적입니다. 액티브-스탠바이(Priority Group Activation) 방식은 서버를 액티브와 스탠바이 상태로 나누어 평상시에는 액티브 장치만 사용하는 방식입니다. 액티브 장치에 문제가 발생했을 때 스탠바이 장치로 작업을 할당하게 되는데 부하분산보다는 서버 이중화를 위한 기능이 더 큰 방식입니다. 

3-2. 동적 부하분산 방식 

 동적 부하분산 방식은 클라이언트로부터 요청을 받으면 서버 상태에 따라 할당 서버를 결정하는 방식입니다. 서버나 클라이언트 상태에 따라 서버 할당이 이루어지기 때문에 다양한 프로토콜과 애플리케이션에 유연한 대처가 가능하다는 장점이 있습니다. 

 최소연결수(Least Connection) 방식은 연결이 가장 적은 서버에 요청을 할당하는 방식입니다. 부하분산 장치는 각 서버에 대한 연결 정보를 항상 가지고 있으며, 부하분산 정치가 요청을 받는 시점에서 가장 연결 수가 적은 서버를 선택하여 요청을 할당하게 됩니다. 최단 응답 시간(fastest) 방식은 가장 빨리 응답하는 서버에 요청을 할당하는 방식입니다. 부하분산 장치는 클라이언트로부터 전달받은 요청과 서버 응답 사이의 시간을 항상 확인하고 있으며, 부하분산 장치가 요청을 받으면 가장 빠르게 응답하는 서버를 선택해 작업을 할당하게 됩니다. 최소 부하(Least Loaded) 방식은 SNMP(Simple Network Management Protocol)에서 취득한 정보를 기준으로 할당한 서버를 결정하는 방식입니다. 부하분산 장치는 SNMP의 매니저가 되어 CPU 사용률이나 메모리 사용량 등 서버 부하에 관한 정보를 정기적으로 수집합니다. 부하분산 정치가 요청을 받으면, 취득한 정보를 바탕으로 부하가 가장 적은 서버에 작업을 할당하는 과정을 거치게 됩니다.