본문 바로가기
Network Infra 쉽게 이해하기/L4 & L7 Network 쉽게 이해하기

서버 부하 분산 쉽게 이해하기

by 네트워크 엔지니어 환영 2020. 5. 23.
반응형

부하 분산(Load Balancing)이란 말 그대로 처리해야 할 업무 혹은 요청 등을 나누어 처리하는 것을 의미합니다. 회사에서 팀장이 외부로부터 받아 처리해야 할 업무를 팀원에게 나누어 주는 행위 또한 부하분산으로 볼 수 있죠. 컴퓨터공학에서 부하 분산(Load balancing)의 의미는 다음과 같습니다.

 

부하분산 또는 로드 밸런싱(Load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답 시간을 최적화시킬 수 있다. 

- 출처 : 위키백과 - 

위의 설명처럼 컴퓨터 내에 있는 다수의 자원(중앙처리장치 등)이 작업을 나누어 처리하는 것을 뜻합니다. 그래야만 지연 없이 작업을 처리하고 속도를 낼 수 있겠죠. 네트워크에서의 부하 분산(Load Balancing)이 이와 매우 비슷합니다. VLAN을 이용한 Layer 2 부하 분산, Routing Protocol를 이용한 Layer 3 부하분산, 서버 부하 분산 등이 존재하지요. 그렇지만 이 문서에서는 서버 부하 분산만을 다루도록 하겠습니다. 

 

서버 부하 분산의 정의

서버 부하 분산(Server Load Balancing)은 외부의 사용자로부터 들어오는 다수의 요청(naver 접속 등)을 서버들에게 적절히 배분하여 서버들로 하여금 요청을 처리케 하는 것을 뜻합니다. 분산 처리는 부하 분산 Network Switch 혹은 소프트웨어가 담당합니다. 즉 외부로부터의 요청을 서버가 직접 받는 것이 아닌 '부하 분산 Network Switch' 혹은 '소프트웨어'가 받은 후 이를 서버로 적절히 나누어 주는 것입니다. 그리고 이 서버 부하 분산을 담당하는 Network Switch를 L4/L7 Switch(Layer 4)라고 부르며 Cloud에서는 Load Balancer라고 부릅니다. 또한 현업에서는 서버 부하 분산(Server Load Balancing)을 부르기 편하게 로드밸런싱 혹은 LB(Load balancing)라고 부릅니다. 아래 설명부터는 '로드 밸런서'와 '로드밸런싱'이라고 칭하겠습니다.

 

<서버 부하 분산(출처 : 서버 구축이야기!님 블로그(https://server-talk.tistory.com/)>

이번 문서 '서버 부하 분산 쉽게 이해하기'와 다음에 이어질 문서인 'L4 스위치 쉽게 이해하기'는 L4/L7 Network Swtich인 'F5 Networks' 장비를 기준으로 설명합니다. Alteon(Radware), Brocade, Cisco, Piolink, Pumpkin, Citrix의 관점에서는 다소 다를 수 있습니다.

 

서버 부하 분산(Server Load Balancing)의 방법

서버에게 부하를 고르게 분산하는 것도 다양한 방법이 있습니다. 서버의 능력을 고려하여 분배해야지 서버가 Down되지 않기 때문에 서버의 상황에 맞춰 적절한 방법을 선택해야 합니다. 보통 Load Balancing Method라고 부릅니다.

 

Round Robin

Round Robin은 로드밸런서가 다수의 서버에게 순서대로 요청을 할당하는 방법입니다. 가장 단순한 방법으로 서버군에 차례로 요청을 할당하여 분산합니다.

<Round Robin>

Least Connection

로드밸런서가 서버에게 요청을 전달한 뒤, 사용자와 서버가 정상적인 연결을 맺으면 사용자와 서버는 'Connection'을 생성합니다. 로드밸런서 또한 중간자로서 Connection 정보를 갖고 있는데 이 Connection 수 정보를 기반으로 가장 Connection이 적은 서버, 즉 부하가 가장 덜한 서버에게 요청을 전달합니다. (Connection에 대해서는 다음 문서에서 설명합니다.)

<Least Connection>

 

Ratio(가중치)

서버의 처리 능력을 고려하여 할당될 수 있는 각 서버가 가질 수 있는 Connection의 비율를 이미 정해둡니다. 서버 부하 분산 비율이 100%라고 했을 때 성능이 가장 떨어지는 서버에게 10%를 나머지 서버 3대에게 각각 30%씩을 할당할 수 있습니다.

<Ratio>

 

Fastest(Response Time)

응답속도가 가장 빠른 서버에게 우선적으로 할당하는 방식입니다. 예를 들어 서버에 할당된 Connection이 5개인데 서버가 보내오는 Response가 5개라면 갖고 있는 Connection에 대해 모두 응답하고 있으므로 성능이 충분하다고 판단하고 추가 요청을 보냅니다. 또다른 서버에 할당된 Connection이 10개인데 서버가 보내오는 Response가 5개뿐이라면 현재 성능이 충분치 않아 제대로 답변하지 못하는 것으로 판단하고 추가 요청을 해당 서버로 보내지 않습니다. 

 

이 밖에도 로드밸런싱의 방법은 다양한 종류가 있습니다만 벤더를 가리지 않고 많이 사용하는 것들을 나열하였습니다. 위의 방법들을 알아두시면 로드밸런서를 운영하게 되었을 때 도움이 되지 않을까 생각합니다. 다음 문서에서는 서버 부하 분산을 담당하는 Network Switch인 L4/L7 Switch에 대해 다루어 보도록 하겠습니다.

댓글