"로드밸런싱"의 두 판 사이의 차이
4번째 줄: | 4번째 줄: | ||
로드밸런싱을 위한 대부분의 응용 프로그램은 다수의 서버를 가지고 한 가지 종류의 인터넷 서비스를 지원하는 방식이다. 보통 로드밸런싱은 트래픽이 많은 웹 사이트, 인터넷 릴레이 챗(IRC, Internet Relay Chat) 네트워크, [[파일 전송 프로토콜]](FTP, File Transfer Protocol) 사이트, 네트워크 뉴스 전송 프로토콜(NNTP, Network News Transfer Protocol) 서버 그리고 [[DNS]] 서버에 적용이 되고 있다. 인터넷 서비스를 위해서는 소프트웨어를 이용한 로드밸런싱이 적용되며, 이 소프트웨어는 중간에 위치에 실제 서비스하는 서버와 클라이언트를 포트를 이용해 중개하고 있다. 그러나 사용자는 이를 알아차리지 못한다. 이를 투명성이라 한다. 또한, 보안이라는 측면에서 내부 네트워크 구조를 숨김으로써 [[크래킹]]을 막을 수 있다. 일부 로드밸런싱 소프트웨어는 실 서비스 서버들을 관리하는 역할을 수행하기도 한다.<ref name="부하분산 위키백과">부하분산 위키백과 - https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0</ref> | 로드밸런싱을 위한 대부분의 응용 프로그램은 다수의 서버를 가지고 한 가지 종류의 인터넷 서비스를 지원하는 방식이다. 보통 로드밸런싱은 트래픽이 많은 웹 사이트, 인터넷 릴레이 챗(IRC, Internet Relay Chat) 네트워크, [[파일 전송 프로토콜]](FTP, File Transfer Protocol) 사이트, 네트워크 뉴스 전송 프로토콜(NNTP, Network News Transfer Protocol) 서버 그리고 [[DNS]] 서버에 적용이 되고 있다. 인터넷 서비스를 위해서는 소프트웨어를 이용한 로드밸런싱이 적용되며, 이 소프트웨어는 중간에 위치에 실제 서비스하는 서버와 클라이언트를 포트를 이용해 중개하고 있다. 그러나 사용자는 이를 알아차리지 못한다. 이를 투명성이라 한다. 또한, 보안이라는 측면에서 내부 네트워크 구조를 숨김으로써 [[크래킹]]을 막을 수 있다. 일부 로드밸런싱 소프트웨어는 실 서비스 서버들을 관리하는 역할을 수행하기도 한다.<ref name="부하분산 위키백과">부하분산 위키백과 - https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0</ref> | ||
− | == | + | == 특징 == |
로드 밸런싱 기능이 있는 ADC는 IT 부서가 서비스의 확장성과 가용성을 보장하는 데 도움이 된다. 그것의 고급 트래픽 관리 기능은 사업체가 각 최종 사용자를 위한 정확한 자원으로 보다 효율적으로 요청하도록 도울 수 있다. ADC는 환경 전체에 걸쳐 수많은 애플리케이션과 서비스를 보안, 관리 및 모니터링하고 최상의 최종 사용자 환경을 보장하기 위한 단일 제어 지점을 제공할 수 있는 다른 많은 기능(예: 암호화, 인증 및 웹 애플리케이션 방화벽)을 제공한다.<ref name="시트릭스"> 〈[https://www.citrix.com/ko-kr/glossary/load-balancing.html What is load balancing?]〉, 《시트릭스》</ref> | 로드 밸런싱 기능이 있는 ADC는 IT 부서가 서비스의 확장성과 가용성을 보장하는 데 도움이 된다. 그것의 고급 트래픽 관리 기능은 사업체가 각 최종 사용자를 위한 정확한 자원으로 보다 효율적으로 요청하도록 도울 수 있다. ADC는 환경 전체에 걸쳐 수많은 애플리케이션과 서비스를 보안, 관리 및 모니터링하고 최상의 최종 사용자 환경을 보장하기 위한 단일 제어 지점을 제공할 수 있는 다른 많은 기능(예: 암호화, 인증 및 웹 애플리케이션 방화벽)을 제공한다.<ref name="시트릭스"> 〈[https://www.citrix.com/ko-kr/glossary/load-balancing.html What is load balancing?]〉, 《시트릭스》</ref> | ||
− | == 기능 == | + | === 기능 === |
로드밸런싱에서 사용하는 주요 기능은 다음과 같다. | 로드밸런싱에서 사용하는 주요 기능은 다음과 같다. | ||
19번째 줄: | 19번째 줄: | ||
:터널링(Tunneling)은 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념이다. 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.<ref name="박상수"></ref> | :터널링(Tunneling)은 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념이다. 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.<ref name="박상수"></ref> | ||
− | == 알고리즘 == | + | === 유형 === |
+ | 로드밸런싱 유형에는 관계형 데이터베이스를 위한 SQL Server 로드밸런싱, 여러 지리적 위치에서의 문제 해결을 위한 글로벌 서버 로드밸런싱, 도메인 이름 기능을 보장하기 위한 DNS 서버 로드밸런싱 등 네트워크에 대해 고려해야 할 여러 가지 특정 유형의 로드밸런싱이 있다.<ref name="dnsstuff">〈[https://www.dnsstuff.com/what-is-server-load-balancing What Is Server and Application Load Balancing? Types, Configuration Methods, and Best Tools]〉, 《dnsstuff》, 2020-01-06</ref> | ||
+ | |||
+ | * '''네트워크 로드밸런싱''' | ||
+ | :네트워크 로드밸런싱은 이름에서 알 수 있듯이 네트워크 계층 정보를 활용하여 네트워크 트래픽을 전송할 위치를 결정한다. 이는 모든 형태의 TCP/UDP 트래픽을 처리하도록 설계된 4계층 로드 밸런싱을 통해 달성된다. 네트워크 부하 분산은 모든 부하 분산 솔루션 중 가장 빠른 것으로 여겨지지만, 서버 간 트래픽 분산에 있어서는 부족한 경향이 있다.<ref name="dnsstuff"></ref> | ||
+ | |||
+ | * '''HTTP(S) 로드밸런싱''' | ||
+ | :HTTP(S) 로드 밸런싱은 가장 오래된 형태의 로드밸런싱 중 하나이다. 이 형태의 로드 밸런싱은 L7에 의존하며, 이는 애플리케이션 계층에서 작동한다는 것을 의미한다. HTTP 로드밸런싱은 HTTP 주소와 함께 제공되는 정보를 기반으로 배포 결정을 형성할 수 있기 때문에 종종 가장 유연한 유형의 로드밸런싱이라고 불린다. | ||
+ | 내부 부하 분산: 내부 부하 분산은 네트워크 부하 분산과 거의 동일하지만 내부 인프라의 균형을 맞추기 위해 활용될 수 있다.<ref name="dnsstuff"></ref> | ||
+ | |||
+ | * '''내부 로드밸런싱''' | ||
+ | :내부 로드밸런싱은 네트워크 부하 분산과 거의 동일하지만 내부 인프라의 균형을 맞추기 위해 활용될 수 있다. 로드밸런싱 장치의 유형을 말할 때 하드웨어 로드밸런싱 장치, 소프트웨어 로드밸런싱 장치 및 가상 로드밸런싱 장치가 있다는 점도 유의해야 한다.<ref name="dnsstuff"></ref> | ||
+ | |||
+ | === 알고리즘 === | ||
로드밸런싱 의사결정을 수행하기 위한 알고리즘으로 로드밸런서 그룹은 알고리즘을 사용하여 의사결정을 수행한다. 의사결정은 새 연결을 전달한 원격 서버를 결정한다. 로드밸런서 그룹은 가중치 및 비 가중치 알고리즘을 지원한다. 부하 분산 방식에는 크게 정적 부하 분산과 동적 부하 분산으로 나뉜다. 정적 부하 분산 방식은 클라이언트로부터 요청을 받으면, 서버 상태와 상관없이 서버가 가지고 있는 설정을 기준으로 할당하는 방식이다. 상시 변하는 서버 상태를 전혀 고려하지 않고 단순히 서버에 할당함으로써 다음 순서로 할당할 서버를 예측하기가 쉽다. 라운드 로빈, 가중치, 액티브-스탠바이가 있다. 동적 부하 분산 방식은 클라이언트로부터 요청을 받으면, 서버 상태에 따라 할당할 대상의 서버를 결정한다. 서버나 클라이언트의 상태에 따라 어느 서버에 할당할 것인가 결정하기 때문에 다양한 프로토콜과 애플리케이션에 유연하게 대처할 수 있다. 최소 연결 수, 최단 응답 시간, 최소 부하 등이 있다.<ref name="멍개"> 멍개, 〈[https://m.blog.naver.com/PostView.nhn?blogId=pjt3591oo&logNo=220546042667&proxyReferer=https:%2F%2Fwww.google.com%2F (서버) 부하분산 방식]〉, 《네이버 블로그》, 2015-11-21</ref> | 로드밸런싱 의사결정을 수행하기 위한 알고리즘으로 로드밸런서 그룹은 알고리즘을 사용하여 의사결정을 수행한다. 의사결정은 새 연결을 전달한 원격 서버를 결정한다. 로드밸런서 그룹은 가중치 및 비 가중치 알고리즘을 지원한다. 부하 분산 방식에는 크게 정적 부하 분산과 동적 부하 분산으로 나뉜다. 정적 부하 분산 방식은 클라이언트로부터 요청을 받으면, 서버 상태와 상관없이 서버가 가지고 있는 설정을 기준으로 할당하는 방식이다. 상시 변하는 서버 상태를 전혀 고려하지 않고 단순히 서버에 할당함으로써 다음 순서로 할당할 서버를 예측하기가 쉽다. 라운드 로빈, 가중치, 액티브-스탠바이가 있다. 동적 부하 분산 방식은 클라이언트로부터 요청을 받으면, 서버 상태에 따라 할당할 대상의 서버를 결정한다. 서버나 클라이언트의 상태에 따라 어느 서버에 할당할 것인가 결정하기 때문에 다양한 프로토콜과 애플리케이션에 유연하게 대처할 수 있다. 최소 연결 수, 최단 응답 시간, 최소 부하 등이 있다.<ref name="멍개"> 멍개, 〈[https://m.blog.naver.com/PostView.nhn?blogId=pjt3591oo&logNo=220546042667&proxyReferer=https:%2F%2Fwww.google.com%2F (서버) 부하분산 방식]〉, 《네이버 블로그》, 2015-11-21</ref> | ||
47번째 줄: | 60번째 줄: | ||
* '''사용자 정의 로드 방식''' | * '''사용자 정의 로드 방식''' | ||
− | :사용자 정의 로드 방식(Custom Load Method)을 | + | :사용자 정의 로드 방식(Custom Load Method)을 로드밸런서가 간이 망 관리 프로토콜(SNMP, Simple Network Management Protocol)을 통해 개별 서버의 로드를 쿼리할 수 있다. 관리자는 쿼리할 서버의 로드를 CPU 사용량, 메모리 및 응답 시간 등 정의한 후 이들의 요청에 맞게 이들 로드를 결합할 수 있다.<ref name="시트릭스"></ref> |
== 로드밸런서 == | == 로드밸런서 == | ||
로드밸런싱은 두 개 이상의 컴퓨터 자원에 작업을 나누는 것을 의미하며 로드밸런서는 작업을 담당하는 장비를 의미한다. 로드밸런서는 OSI 7계층을 기준으로 어떻게 부하를 분산하는지에 따라 종류가 나뉜다. 2계층을 기준으로 부하를 분산하면 L2, 3계층을 기준으로 부하를 분산한다면 L3인 방식이다. 상위 계층으로 갈수록 섬세한 로드밸런싱이 가능하지만, 가격이 비싸진다. 하위 계층으로 갈수록 간단한 로드밸런싱이 가능하고 가격이 저렴해진다. 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 된다.<ref name="개발자 EricJeong"> 개발자 EricJeong, 〈[https://deveric.tistory.com/91 로드밸런서의 종류와 동작방식]〉, 《티스토리》, 2020-03-23</ref> | 로드밸런싱은 두 개 이상의 컴퓨터 자원에 작업을 나누는 것을 의미하며 로드밸런서는 작업을 담당하는 장비를 의미한다. 로드밸런서는 OSI 7계층을 기준으로 어떻게 부하를 분산하는지에 따라 종류가 나뉜다. 2계층을 기준으로 부하를 분산하면 L2, 3계층을 기준으로 부하를 분산한다면 L3인 방식이다. 상위 계층으로 갈수록 섬세한 로드밸런싱이 가능하지만, 가격이 비싸진다. 하위 계층으로 갈수록 간단한 로드밸런싱이 가능하고 가격이 저렴해진다. 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 된다.<ref name="개발자 EricJeong"> 개발자 EricJeong, 〈[https://deveric.tistory.com/91 로드밸런서의 종류와 동작방식]〉, 《티스토리》, 2020-03-23</ref> | ||
+ | |||
+ | * '''하드웨어 로드밸런서''' | ||
+ | :하드웨어 로드밸런서는 이름에서 알 수 있듯이 애플리케이션과 네트워크 트래픽을 분산하기 위해 물리적 사내 하드웨어에 의존한다. 이 장치들은 많은 양의 트래픽을 처리할 수 있지만 종종 많은 가격표를 가지고 있으며 유연성의 측면에서 상당히 제한적이다.<ref name="dnsstuff"></ref> | ||
+ | |||
+ | * '''소프트웨어 로드밸런서''' | ||
+ | :소프트웨어 로드밸런서는 상용 또는 오픈 소스라는 두 가지 형태로 제공되며 사용하기 전에 설치해야 한다. 클라우드 기반 밸런서와 마찬가지로 하드웨어 솔루션보다 가격이 저렴한 경향이 있다.<ref name="dnsstuff"></ref> | ||
+ | |||
+ | * '''가상 로드밸런서''' | ||
+ | :가상 로드밸런서는 하드웨어 로드밸런싱 장치의 소프트웨어를 가상 시스템에 배포하기 때문에 소프트웨어 로드밸런서와는 다르다.<ref name="dnsstuff"></ref> | ||
=== 종류 === | === 종류 === | ||
90번째 줄: | 112번째 줄: | ||
* 박상수, 〈[https://medium.com/@pakss328/%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%84%9C%EB%9E%80-l4-l7-501fd904cf05 로드밸런서란?(L4, L7)]〉, 《미디엄》, 2018-12-07 | * 박상수, 〈[https://medium.com/@pakss328/%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%84%9C%EB%9E%80-l4-l7-501fd904cf05 로드밸런서란?(L4, L7)]〉, 《미디엄》, 2018-12-07 | ||
* 가비아, 〈[https://post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903 로드밸런서(Load Balancer)의 개념과 특징]〉, 《네이버 블로그》, 2019-12-10 | * 가비아, 〈[https://post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903 로드밸런서(Load Balancer)의 개념과 특징]〉, 《네이버 블로그》, 2019-12-10 | ||
+ | * 〈[https://www.dnsstuff.com/what-is-server-load-balancing What Is Server and Application Load Balancing? Types, Configuration Methods, and Best Tools]〉, 《dnsstuff》, 2020-01-06 | ||
* 개발자 EricJeong, 〈[https://deveric.tistory.com/91 로드밸런서의 종류와 동작방식]〉, 《티스토리》, 2020-03-23 | * 개발자 EricJeong, 〈[https://deveric.tistory.com/91 로드밸런서의 종류와 동작방식]〉, 《티스토리》, 2020-03-23 | ||
* 2kindsofcs, 〈[https://2kindsofcs.tistory.com/56 L2 / L4 / L7 로드 밸런싱]〉, 《티스토리》, 2020-05-17 | * 2kindsofcs, 〈[https://2kindsofcs.tistory.com/56 L2 / L4 / L7 로드 밸런싱]〉, 《티스토리》, 2020-05-17 |
2020년 8월 12일 (수) 17:22 판
로드밸런싱(Load Balancing)이란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답시간을 최적화시킬 수 있다. 예를 들어, 메인프레임 1대(단일 구성체)보다 IA-32와 같은 일반적인 서버(복합 구성체)가 안정성 면에서 유리한 위치에 있다. 로드밸런싱 서비스는 그에 적합한 하드웨어와 소프트웨어에 의해 제공된다. 이 기술은 보통 내부 네트워크를 이용한 병렬처리(특히, 고가용성의 병렬처리)에 사용된다. 부하 분산이라고도 한다.
개요
로드밸런싱을 위한 대부분의 응용 프로그램은 다수의 서버를 가지고 한 가지 종류의 인터넷 서비스를 지원하는 방식이다. 보통 로드밸런싱은 트래픽이 많은 웹 사이트, 인터넷 릴레이 챗(IRC, Internet Relay Chat) 네트워크, 파일 전송 프로토콜(FTP, File Transfer Protocol) 사이트, 네트워크 뉴스 전송 프로토콜(NNTP, Network News Transfer Protocol) 서버 그리고 DNS 서버에 적용이 되고 있다. 인터넷 서비스를 위해서는 소프트웨어를 이용한 로드밸런싱이 적용되며, 이 소프트웨어는 중간에 위치에 실제 서비스하는 서버와 클라이언트를 포트를 이용해 중개하고 있다. 그러나 사용자는 이를 알아차리지 못한다. 이를 투명성이라 한다. 또한, 보안이라는 측면에서 내부 네트워크 구조를 숨김으로써 크래킹을 막을 수 있다. 일부 로드밸런싱 소프트웨어는 실 서비스 서버들을 관리하는 역할을 수행하기도 한다.[1]
특징
로드 밸런싱 기능이 있는 ADC는 IT 부서가 서비스의 확장성과 가용성을 보장하는 데 도움이 된다. 그것의 고급 트래픽 관리 기능은 사업체가 각 최종 사용자를 위한 정확한 자원으로 보다 효율적으로 요청하도록 도울 수 있다. ADC는 환경 전체에 걸쳐 수많은 애플리케이션과 서비스를 보안, 관리 및 모니터링하고 최상의 최종 사용자 환경을 보장하기 위한 단일 제어 지점을 제공할 수 있는 다른 많은 기능(예: 암호화, 인증 및 웹 애플리케이션 방화벽)을 제공한다.[2]
기능
로드밸런싱에서 사용하는 주요 기능은 다음과 같다.
- 네트워크 주소 변환
- 네트워크 주소 변환(NAT, Network Address Translation)은 사설 IP 주소를 공인 IP 주소로 변경, 주소변경의 역할을 한다.[3]
- 동적 소스 라우팅 프로토콜
- 동적 소스 라우팅 프로토콜(DSR, Dynamic Source Routing protocol)은 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념이다.[3]
- 터널링
- 터널링(Tunneling)은 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념이다. 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.[3]
유형
로드밸런싱 유형에는 관계형 데이터베이스를 위한 SQL Server 로드밸런싱, 여러 지리적 위치에서의 문제 해결을 위한 글로벌 서버 로드밸런싱, 도메인 이름 기능을 보장하기 위한 DNS 서버 로드밸런싱 등 네트워크에 대해 고려해야 할 여러 가지 특정 유형의 로드밸런싱이 있다.[4]
- 네트워크 로드밸런싱
- 네트워크 로드밸런싱은 이름에서 알 수 있듯이 네트워크 계층 정보를 활용하여 네트워크 트래픽을 전송할 위치를 결정한다. 이는 모든 형태의 TCP/UDP 트래픽을 처리하도록 설계된 4계층 로드 밸런싱을 통해 달성된다. 네트워크 부하 분산은 모든 부하 분산 솔루션 중 가장 빠른 것으로 여겨지지만, 서버 간 트래픽 분산에 있어서는 부족한 경향이 있다.[4]
- HTTP(S) 로드밸런싱
- HTTP(S) 로드 밸런싱은 가장 오래된 형태의 로드밸런싱 중 하나이다. 이 형태의 로드 밸런싱은 L7에 의존하며, 이는 애플리케이션 계층에서 작동한다는 것을 의미한다. HTTP 로드밸런싱은 HTTP 주소와 함께 제공되는 정보를 기반으로 배포 결정을 형성할 수 있기 때문에 종종 가장 유연한 유형의 로드밸런싱이라고 불린다.
내부 부하 분산: 내부 부하 분산은 네트워크 부하 분산과 거의 동일하지만 내부 인프라의 균형을 맞추기 위해 활용될 수 있다.[4]
- 내부 로드밸런싱
- 내부 로드밸런싱은 네트워크 부하 분산과 거의 동일하지만 내부 인프라의 균형을 맞추기 위해 활용될 수 있다. 로드밸런싱 장치의 유형을 말할 때 하드웨어 로드밸런싱 장치, 소프트웨어 로드밸런싱 장치 및 가상 로드밸런싱 장치가 있다는 점도 유의해야 한다.[4]
알고리즘
로드밸런싱 의사결정을 수행하기 위한 알고리즘으로 로드밸런서 그룹은 알고리즘을 사용하여 의사결정을 수행한다. 의사결정은 새 연결을 전달한 원격 서버를 결정한다. 로드밸런서 그룹은 가중치 및 비 가중치 알고리즘을 지원한다. 부하 분산 방식에는 크게 정적 부하 분산과 동적 부하 분산으로 나뉜다. 정적 부하 분산 방식은 클라이언트로부터 요청을 받으면, 서버 상태와 상관없이 서버가 가지고 있는 설정을 기준으로 할당하는 방식이다. 상시 변하는 서버 상태를 전혀 고려하지 않고 단순히 서버에 할당함으로써 다음 순서로 할당할 서버를 예측하기가 쉽다. 라운드 로빈, 가중치, 액티브-스탠바이가 있다. 동적 부하 분산 방식은 클라이언트로부터 요청을 받으면, 서버 상태에 따라 할당할 대상의 서버를 결정한다. 서버나 클라이언트의 상태에 따라 어느 서버에 할당할 것인가 결정하기 때문에 다양한 프로토콜과 애플리케이션에 유연하게 대처할 수 있다. 최소 연결 수, 최단 응답 시간, 최소 부하 등이 있다.[5]
- 라운드 로빈 방식
- 라운드 로빈(Round Robin Method)은 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식이다. 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당한다. 로드밸러닝 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식을 사용한다. 로드밸런싱 대상 서버의 성능이 다른 경우에 파일 전송 프로토콜, 세션 유지 기능(Persistence)이 필요한 애플리케이션의 경우 서버 처리와 관계없이 연결이 할당되는 라운드 로빈 방식은 적합하지 않다. 서버와의 연결이 오래가지 않는 경우에 활용하기 적합하다.[5]
- 가중 라운드 로빈 방식
- 가중 라운드 로빈 방식(Weighted Round Robin Method)은 실제 서버에 서로 다른 처리 용량을 지정할 수 있다. 각 서버에 가중치를 부여할 수 있으며, 여기서 지정한 정숫값을 통해 처리 용량을 정한다. 기본 가중치는 1이다. 예를 들어 실제 서버가 A, B, C이고 각각의 가중치가 4, 3, 2일 경우 스케줄링 순서는 ABCABCABA 가 된다. 가중 라운드 로빈 방식을 사용하면 실제 서버에서 네트워크 접속을 셀 필요가 없고 동적 스케줄링 알고리즘보다 스케줄링의 과부하가 적으므로 더 많은 실제 서버를 운영할 수 있다. 그러나 요청에 대한 부하가 매우 많을 때 실제 서버 사이에 동적인 부하 불균형 상태가 생길 수 있다. 라운드 로빈 방식은 가중 라운드 로빈 방식의 특별한 한 종류이며 모든 가중치가 동일한 경우이다. 가상 서버의 규칙을 변경하고 나서 스케줄링 순서를 생성하는 데는 거의 과부하가 걸리지 않으며 실제 스케줄링에 어떠한 과부하도 추가하지 않는다. 그러므로 라운드 로빈 방식만 단독으로 실행하는 것은 불필요한 일이다.[6]
- IP 해시 방식
- IP 해시 방식(IP Hash Method)은 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다. 사용자의 IP를 해싱(Hashing)해 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.[7]
- 최소 연결 방식
- 최소 연결 방식(Least Connection Method)은 가장 접속이 적은 서버로 요청을 직접 연결하는 방식을 말한다. 각 서버에서 동적으로 실제 접속한 숫자를 세어야 하므로 동적 스케줄링 알고리즘 중의 하나이다. 비슷한 성능의 서버로 구성된 가상 서버는 아주 큰 요구가 한 서버로만 집중되지 않기 때문에, 접속 부하가 매우 큰 경우에도 아주 효과적으로 분산을 한다. 가장 빠른 서버에서 더 많은 네트워크 접속을 처리할 수 있다. 그러므로 다양한 처리 용량을 지닌 서버로 구성했을 때도 훌륭하게 작동한다는 것을 한눈에 알 수 있을 것이다. 그렇지만 실제로는 전송 제어 프로토콜(TCP, Transmission Control Protocol)의 TIME_WAIT 상태 때문에 아주 좋은 성능을 낼 수는 없다. 전송 제어 프로토콜의 TIME_WAIT는 보통 2분이다. 그런데 접속자가 아주 많은 웹 사이트는 2분 동안에 몇천 개의 접속을 처리해야 할 경우가 있다. 서버 A는 서버 B보다 처리용량이 두 배일 경우 서버 A는 수천 개의 요청을 처리하고 전송 제어 프로토콜의 TIME_WAIT 상황에 직면하게 된다. 그렇지만 서버 B는 몇천 개의 요청이 처리되기만을 기다리게 된다. 그래서 최소 접속 스케줄링을 이용할 경우 다양한 처리용량을 지난 서버로 구성되었을 경우 로드밸런싱이 효율적으로 되지 못할 수 있는 것이다.[6]
- 최소 응답 시간 방식
- 최소 응답 시간(Least Response Time Method)은 최소 연결 방법보다 정교한 최소 응답 시간 방법은 서버가 상태 모니터링 요청에 응답하는 데 걸리는 시간에 따라 달라진다. 응답 속도는 서버가 얼마나 적재되어 있는지와 전반적인 예상 사용자 경험을 나타내는 지표다. 일부 로드 밸런싱 장치도 각 서버의 활성 연결 수를 고려한다.[2]
- 최소 대역폭 방식
- 최소 대역폭 방식(Least Bandwidth Method)은 비교적 간단한 알고리즘으로, 최소 대역폭 방법은 초당 메가비트(Mbps)로 측정했을 때 현재 가장 적은 양의 트래픽을 제공하는 서버를 찾는다.[2]
- 최소 패킷 방식
- 최소 패킷 방식(Least Packets Method)은 주어진 기간 동안 패킷을 가장 적게 수신한 서비스를 선택한다.[2]
- 해싱 메소드
- 해싱 메소드 방식(Hashing Methods)은 이 범주의 메소드는 수신 패킷의 다양한 데이터의 해시에 기초하여 결정을 내린다. 여기에는 수신 패킷에서 소스/대상 IP 주소, 포트 번호, URL 또는 도메인 이름과 같은 연결 또는 헤더 정보가 포함된다.[2]
- 사용자 정의 로드 방식
- 사용자 정의 로드 방식(Custom Load Method)을 로드밸런서가 간이 망 관리 프로토콜(SNMP, Simple Network Management Protocol)을 통해 개별 서버의 로드를 쿼리할 수 있다. 관리자는 쿼리할 서버의 로드를 CPU 사용량, 메모리 및 응답 시간 등 정의한 후 이들의 요청에 맞게 이들 로드를 결합할 수 있다.[2]
로드밸런서
로드밸런싱은 두 개 이상의 컴퓨터 자원에 작업을 나누는 것을 의미하며 로드밸런서는 작업을 담당하는 장비를 의미한다. 로드밸런서는 OSI 7계층을 기준으로 어떻게 부하를 분산하는지에 따라 종류가 나뉜다. 2계층을 기준으로 부하를 분산하면 L2, 3계층을 기준으로 부하를 분산한다면 L3인 방식이다. 상위 계층으로 갈수록 섬세한 로드밸런싱이 가능하지만, 가격이 비싸진다. 하위 계층으로 갈수록 간단한 로드밸런싱이 가능하고 가격이 저렴해진다. 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 된다.[8]
- 하드웨어 로드밸런서
- 하드웨어 로드밸런서는 이름에서 알 수 있듯이 애플리케이션과 네트워크 트래픽을 분산하기 위해 물리적 사내 하드웨어에 의존한다. 이 장치들은 많은 양의 트래픽을 처리할 수 있지만 종종 많은 가격표를 가지고 있으며 유연성의 측면에서 상당히 제한적이다.[4]
- 소프트웨어 로드밸런서
- 소프트웨어 로드밸런서는 상용 또는 오픈 소스라는 두 가지 형태로 제공되며 사용하기 전에 설치해야 한다. 클라우드 기반 밸런서와 마찬가지로 하드웨어 솔루션보다 가격이 저렴한 경향이 있다.[4]
- 가상 로드밸런서
- 가상 로드밸런서는 하드웨어 로드밸런싱 장치의 소프트웨어를 가상 시스템에 배포하기 때문에 소프트웨어 로드밸런서와는 다르다.[4]
종류
로드밸런서는 L2, L3, L4, L7으로 나뉠 수 있다. 로드밸런싱에는 L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용된다. 그 이유는 L4 로드밸런서부터 포트 정보를 바탕으로 로드를 분산하는 것이 가능하기 때문이다. 한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을 운영하는 경우라면 최소 L4 로드밸런서 이상을 사용해야만 한다. 스위치라는 용어도 많이 쓴다.
- L2 로드밸런싱
- 데이터 링크 계층(L2)에서 정의된 정보를 바탕으로 로드밸런싱을 하는 것이다. 맥주소(MAC, Media Access Control Address)를 이용하여 전달할 서버를 결정한다.L4, l7 로드밸런서 대비 로드밸런싱 전략이 제한적이다. L2DSR 전략에서 로드밸런서는 inbound 패킷의 맥주소를 서버의 맥주소로 변환한 뒤 서버에게 전달한다. 이 전략을 사용하기 위해서는 로드밸런서와 서버가 반드시 같은 네트워크에 속해야 한다. 로드밸런서가 알 수 있는 게 맥 주소밖에 없는데, 패킷의 MAC 주소를 서버의 MAC 주소로 변경을 했을 때 이 패킷이 바로 서버로 가야 한다. IP는 그대로인데 MAC 주소만 바꿔서 서버에 도달해야 하는데, 이를 위해서 서버와 로드밸런서 모두 VIP가 설정되어야 하는 등 이런저런 제약이 있다.[9]
- L3 로드밸런싱
- 네트워크 계층(L3)에서 정의된 정보를 바탕으로 로드밸런싱을 하는 것이다. 포트 간 패킷 스위칭을 위해 IP 나 IPX 주소를 기반으로 스위칭한다. 특정 프로토콜을 사용하는 패킷에 대해 스위칭이 가능하다. L2에 라우팅 기능이 추가된 것이다. 라우터가 있다. Broadcast 트래픽으로 전체 성능 저하를 막을 수 있다. 트래픽 체크, 가상 랜 등의 많은 부가 기능을 제공한다. 특정 프로토콜을 이용해야 스위칭할 수 있다.[9]
- L4 로드밸런싱
- 전송 계층(L4)의 정보를 바탕으로 부하를 분산한다. IP 주소와 포트 번호를 이용한다. L3의 정보도 활용하니까 정확히는 L3 and L4 로드 밸런싱이 맞겠지만, n번 레이어를 활용한다는 것은 n-1 이하의 레이어들도 활용할 수 있다는 것이며 통상 L4 로드밸런싱이라 불린다. L4 로드밸런서는 패킷 헤더의 소스 IP 와 destination IP를 네트워크 주소 변환을 통해 바꿔서 서버에게 전달한다. 반대로 클라이언트로 패킷이 갈 때도 소스 IP 와 destination IP를 바꿔서 클라이언트에게 잘 전달되도록 한다. L2보다는 비용이 더 비싸지만 IP 와 포트 번호를 활용하여 상대적으로 더 섬세한 라우팅이 가능하다. 내용물을 보지 않기 때문에 TLS termination이 없다.[9]
- L7 로드밸런싱
- 응용계층(L7)의 정보를 바탕으로 부하를 분산한다. TLS termination이 일어난다. 소프트웨어적인 로드밸런싱이 필요하다. L2, L4 로드 밸런싱은 물리적 단계에서 충분하지만, L7은 소프트웨어를 사용해야 하므로 비용이 더 비싸다. 가장 섬세한 라우팅이 가능하다. HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능하다. 쉽게 말해 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능한 것이다. URL에 따라 부하를 분산시키거나, HTTP 헤더의 쿠키값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있다. 또한 L7 로드밸런서의 경우 특정한 패턴을 지닌 바이러스를 감지해 네트워크를 보호할 수 있으며, DoS/DDoS와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서도 활용되고 있다.[9][7]
대처 방법
- 스케일 업
- 스케일 업(Scale up)은 서버 자체를 증강하는 것에 의해서 처리 능력을 향상하는 것이다. 수직 스케일로 불리기도 한다. 전형적으로는 대칭형 멀티 프로세서(SMP)에 대해 프로세서를 추가하는 것이나 프로세서 그 자체를 고성능 모델로 옮겨놓는 것을 가리킨다. 애플리케이션 서버에서는 스케일 아웃이 가능해도 빈번히 갱신이 발생하여 정합성 유지가 어려운 데이터베이스 서버에서는 스케일 업이 필요하다. 하나의 이미지 데이터베이스에 대해서 빈번히 갱신이 발생하는, 온라인 트랜잭션 처리(OLTP)에는 스케일 업이 적합하다.[10]
- 스케일 아웃
- 스케일 아웃(Scale out)은 접속된 서버의 대수를 늘려 처리 능력을 향상하는 것이다. 수평 스케일로 불리기도 한다. 전형적으로 웹 서버 펌으로서 사용되고 있는 랙 마운트 서버군에 서버를 추가하는 것이나 브레이드 서버에 브레이드를 추가하는 것 등이다. 서버의 가상화 기능을 사용하고 하나의 케이스 내에서 가상적으로 복수 서버를 구축해 스케일 아웃과 동등의 효과를 제공할 수도 있다. 개개의 처리는 비교적 단순하지만, 다수의 처리를 동시 병행적으로 실시하지 않으면 안 되는 경우에 적합한데 갱신 데이터의 정합성 유지에 대한 요건이 별로 어렵지 않은 경우에 적절하다. 높은 병렬성을 실현하기 쉬운 경우이다. 웹 서버 펌, 데이터가 읽기 전용인 검색엔진, 데이터 분석 처리 VOD 일부의 과학기술 계산, 메일 서버나 게시판 등의 애플리케이션 등에 적용할 수 있다.[10]
장단점
로드밸런싱은 고가의 서버로 확장하지 않고 저렴한 비용에 다수의 서버로 증설하여 경제적으로 비용 절감을 할 수 있다. 대량의 트래픽으로 1대의 서버로 집중적인 부하율이 높아지면 L4 스위치가 이를 감지하여 합리적으로 로드밸런싱을 처리 할 수 있다. 1대의 서버 장애가 발생하여도 서비스 중단없이 다른 서버로 적절히 자동으로 분배하여 서비스가 계속 운용 가능하게 할 수 있다. 추후 사용량이 많아 서버 확장으로 서비스 중단없이 서버 증설이 가능하다. 단점으로 로드밸런서를 사용할 때 어려운 문제 중 하나가 세션 데이터를 관리하는 것이다. 클라이언트의 연결 정보를 저장하는 세션이 로드밸런싱을 통해 하나의 서버 장비에 저장이 되는 경우, 추후 다른 서버로 접속하게 되면, 해당 클라이언트의 세션이 유지되지 않는다는 것이다. 서버에 액세스할 때마다 다른 세션을 사용한다면 특정 사용자의 정보를 일관성 있게 유지할 수 없게 된다. 이러한 문제를 해결하기 위해 세션을 고정한다. 이 방법으로 특정 사용자의 요청이 전달될 노드를 고정할 수 있지만 고정된 세션의 노드에 장애가 발생하면 고정한 의미가 없어진다. 장애가 발생하여 비활성화된 노드에 대한 고려가 필요하다.[11][12]
각주
- ↑ 부하분산 위키백과 - https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 〈What is load balancing?〉, 《시트릭스》
- ↑ 3.0 3.1 3.2 박상수, 〈로드밸런서란?(L4, L7)〉, 《미디엄》, 2018-12-07
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 〈What Is Server and Application Load Balancing? Types, Configuration Methods, and Best Tools〉, 《dnsstuff》, 2020-01-06
- ↑ 5.0 5.1 멍개, 〈(서버) 부하분산 방식〉, 《네이버 블로그》, 2015-11-21
- ↑ 6.0 6.1 〈가상 서버 스케줄링 알고리즘〉, 《이글루스》
- ↑ 7.0 7.1 가비아, 〈로드밸런서(Load Balancer)의 개념과 특징〉, 《네이버 블로그》, 2019-12-10
- ↑ 개발자 EricJeong, 〈로드밸런서의 종류와 동작방식〉, 《티스토리》, 2020-03-23
- ↑ 9.0 9.1 9.2 9.3 2kindsofcs, 〈L2 / L4 / L7 로드 밸런싱〉, 《티스토리》, 2020-05-17
- ↑ 10.0 10.1 islove8587, 〈스케일 아웃(Scale out)과 스케일 업(Scale up)〉, 《네이버 블로그》, 2015-11-24
- ↑ JehongLee, 〈Load Balancing〉, 《incodom》, 2016-03-30
- ↑ goodGid, 〈로드 밸런싱과 클러스터링〉, 《깃허브》, 2018-09-03
참고자료
- 부하분산 위키백과 - https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0
- 〈가상 서버 스케줄링 알고리즘〉, 《이글루스》
- 〈What is load balancing?〉, 《시트릭스》
- 멍개, 〈(서버) 부하분산 방식〉, 《네이버 블로그》, 2015-11-21
- islove8587, 〈스케일 아웃(Scale out)과 스케일 업(Scale up)〉, 《네이버 블로그》, 2015-11-24
- JehongLee, 〈Load Balancing〉, 《incodom》, 2016-03-30
- goodGid, 〈로드 밸런싱과 클러스터링〉, 《깃허브》, 2018-09-03
- 박상수, 〈로드밸런서란?(L4, L7)〉, 《미디엄》, 2018-12-07
- 가비아, 〈로드밸런서(Load Balancer)의 개념과 특징〉, 《네이버 블로그》, 2019-12-10
- 〈What Is Server and Application Load Balancing? Types, Configuration Methods, and Best Tools〉, 《dnsstuff》, 2020-01-06
- 개발자 EricJeong, 〈로드밸런서의 종류와 동작방식〉, 《티스토리》, 2020-03-23
- 2kindsofcs, 〈L2 / L4 / L7 로드 밸런싱〉, 《티스토리》, 2020-05-17