"로드밸런싱"의 두 판 사이의 차이
(새 문서: '''로드밸런싱'''(Load Balancing)이란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들...) |
|||
1번째 줄: | 1번째 줄: | ||
− | '''로드밸런싱'''(Load Balancing)이란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 | + | '''로드밸런싱'''(Load Balancing)이란 [[컴퓨터]] [[네트워크]] 기술의 일종으로 둘 혹은 셋 이상의 [[중앙처리장치]] 혹은 [[저장장치]]와 같은 컴퓨터 자원들에 작업을 나누는 것을 의미한다. 이로써 [[가용성]] 및 응답시간을 최적화시킬 수 있다. 예를 들어, [[메인프레임]] 1대(단일 구성체)보다 IA-32와 같은 일반적인 서버(복합 구성체)가 안정성 면에서 유리한 위치에 있다. 로드밸런싱 서비스는 그에 적합한 [[하드웨어]]와 [[소프트웨어]]에 의해 제공된다. 이 기술은 보통 내부 네트워크를 이용한 병렬처리(특히, 고가용성의 병렬처리)에 사용된다. 부하 분산이라고도 한다. |
== 개요 == | == 개요 == | ||
+ | 로드밸런싱을 위한 대부분의 응용 프로그램은 다수의 서버를 가지고 한 가지 종류의 인터넷 서비스를 지원하는 방식이다. 보통 로드밸런싱은 트래픽이 많은 웹 사이트, 인터넷 릴레이 챗(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> | ||
+ | |||
+ | == 알고리즘 == | ||
+ | 로드밸런싱 의사결정을 수행하기 위한 알고리즘으로 로드 밸런서 그룹은 알고리즘을 사용하여 의사결정을 수행한다. 의사결정은 새 연결을 전달한 원격 서버를 결정한다. 로드 밸런서 그룹은 가중치 및 비가중치 알고리즘을 지원한다. | ||
+ | |||
+ | * '''라운드 로빈 방식''' | ||
+ | :라운드 로빈(Round Robin Method)은 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식이다. 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당한다. 로드밸러닝 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식을 사용한다. 로드밸런싱 대상 서버의 성능이 다른 경우에 파일 전송 프로토콜, 세션 유지 기능(Persistence)이 필요한 애플리케이션의 경우 서버 처리와 관계없이 연결이 할당되는 라운드 로빈 방식은 적합하지 않다. 서버와의 연결이 오래 지속하지 않는 경우에 활용하기 적합하다.<ref name="멍개"> 멍개, 〈[https://m.blog.naver.com/PostView.nhn?blogId=pjt3591oo&logNo=220546042667&proxyReferer=https:%2F%2Fwww.google.com%2F (서버) 부하분산 방식]〉, 《네이버 블로그》, 2015-11-21</ref> | ||
+ | |||
+ | * '''가중 라운드 로빈 방식''' | ||
+ | :가중 라운드 로빈 방식(Weighted Round Robin Method)은 실제 서버에 서로 다른 처리 용량을 지정할 수 있다. 각 서버에 가중치를 부여할 수 있으며, 여기서 지정한 정숫값을 통해 처리 용량을 정한다. 기본 가중치는 1이다. 예를 들어 실제 서버가 A, B, C 이고 각각의 가중치가 4, 3, 2 일 경우 스케쥴링 순서는 ABCABCABA 가 된다. 가중 라운드 로빈 방식을 사용하면 실제 서버에서 네트워크 접속을 셀 필요가 없고 동적 스케쥴링 알고리즘보다 스케줄링의 과부하가 적으므로 더 많은 실제 서버를 운영할 수 있다. 그러나 요청에 대한 부하가 매우 많을 때 실제 서버 사이에 동적인 부하 불균형 상태가 생길 수 있다. 라운드 로빈 방식은 가중 라운드 로빈 방식의 특별한 한 종류이며 모든 가중치가 동일한 경우이다. 가상 서버의 규칙을 변경하고 나서 스케쥴링 순서를 생성하는 데는 거의 과부하가 걸리지 않으며 실제 스케쥴링에 어떠한 과부하도 추가하지 않는다. 그러므로 라운드 로빈 방식만 단독으로 실행하는 것은 불필요한 일이다.<ref name="가중 라운드 로빈 이글루스"> 〈[http://egloos.zum.com/bluecosmos/v/6223071 가상 서버 스케줄링 알고리즘]〉, 《이글루스》</ref> | ||
+ | |||
+ | * '''IP 해시 방식''' | ||
+ | :IP 해시 방식(IP Hash Method)은클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다. 사용자의 IP를 해싱(Hashing)해 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.<ref name="가비아"> 가비아, 〈[https://post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903 로드밸런서(Load Balancer)의 개념과 특징]〉, 《네이버 블로그》, 2019-12-10</ref> | ||
+ | |||
+ | * '''최소 연결 방식''' | ||
+ | :최소 연결 방식(Least Connection Method)은 가장 접속이 적은 서버로 요청을 직접 연결하는 방식을 말한다. 각 서버에서 동적으로 실제 접속한 숫자를 세어야 하므로 동적 스케쥴링 알고리즘 중의 하나이다. 비슷한 성능의 서버로 구성된 가상 서버는 아주 큰 요구가 한 서버로만 집중되지 않기 때문에, 접속 부하가 매우 큰 경우에도 아주 효과적으로 분산을 한다. 가장 빠른 서버에서 더 많은 네트워크 접속을 처리할 수 있다. 그러므로 다양한 처리 용량을 지닌 서버로 구성했을 경우에도 훌륭하게 작동한다는 것을 한눈에 알 수 있을 것이다. 그렇지만 실제로는 [[전송 제어 프로토콜]](TCP, Transmission Control Protocol)의 TIME_WAIT 상태 때문에 아주 좋은 성능을 낼 수는 없다. 전송 제어 프로토콜의 TIME_WAIT는 보통 2분이다. 그런데 접속자가 아주 많은 웹 사이트는 2분 동안에 몇천 개의 접속을 처리해야 할 경우가 있다. 서버 A는 서버 B보다 처리용량이 두 배일 경우 서버 A는 수천 개의 요청을 처리하고 전송 제어 프로토콜의 TIME_WAIT 상황에 직면하게 된다. 그렇지만 서버 B는 몇천 개의 요청이 처리되기만을 기다리게 된다. 그래서 최소 접속 스케쥴링을 이용할 경우 다양한 처리용량을 지난 서버로 구성되었을 경우 로드밸런싱이 효율적으로 되지 못할 수 있는 것이다.<ref name="가중 라운드 로빈 이글루스"></ref> | ||
+ | |||
+ | * '''최소 리스폰 타임 | ||
+ | :최소 리스폰 타임(Least Response Time Method)은 서버의 현재 연결 상태와 응답시간(Response Time)을 모두 고려하여 트래픽을 배분한다. 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식이다.<ref name="가비아"></ref> | ||
{{각주}} | {{각주}} | ||
== 참고자료 == | == 참고자료 == | ||
+ | * 부하분산 위키백과 - https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0 | ||
+ | * 〈[http://egloos.zum.com/bluecosmos/v/6223071 가상 서버 스케줄링 알고리즘]〉, 《이글루스》 | ||
+ | * 멍개, 〈[https://m.blog.naver.com/PostView.nhn?blogId=pjt3591oo&logNo=220546042667&proxyReferer=https:%2F%2Fwww.google.com%2F (서버) 부하분산 방식]〉, 《네이버 블로그》, 2015-11-21 | ||
+ | * 가비아, 〈[https://post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903 로드밸런서(Load Balancer)의 개념과 특징]〉, 《네이버 블로그》, 2019-12-10 | ||
== 같이 보기 == | == 같이 보기 == | ||
{{하드웨어|검토 필요}} | {{하드웨어|검토 필요}} |
2020년 8월 12일 (수) 11:47 판
로드밸런싱(Load Balancing)이란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답시간을 최적화시킬 수 있다. 예를 들어, 메인프레임 1대(단일 구성체)보다 IA-32와 같은 일반적인 서버(복합 구성체)가 안정성 면에서 유리한 위치에 있다. 로드밸런싱 서비스는 그에 적합한 하드웨어와 소프트웨어에 의해 제공된다. 이 기술은 보통 내부 네트워크를 이용한 병렬처리(특히, 고가용성의 병렬처리)에 사용된다. 부하 분산이라고도 한다.
개요
로드밸런싱을 위한 대부분의 응용 프로그램은 다수의 서버를 가지고 한 가지 종류의 인터넷 서비스를 지원하는 방식이다. 보통 로드밸런싱은 트래픽이 많은 웹 사이트, 인터넷 릴레이 챗(IRC, Internet Relay Chat) 네트워크, 파일 전송 프로토콜(FTP, File Transfer Protocol) 사이트, 네트워크 뉴스 전송 프로토콜(NNTP, Network News Transfer Protocol) 서버 그리고 DNS 서버에 적용이 되고 있다. 인터넷 서비스를 위해서는 소프트웨어를 이용한 로드밸런싱이 적용되며, 이 소프트웨어는 중간에 위치에 실제 서비스하는 서버와 클라이언트를 포트를 이용해 중개하고 있다. 그러나 사용자는 이를 알아차리지 못한다. 이를 투명성이라 한다. 또한, 보안이라는 측면에서 내부 네트워크 구조를 숨김으로써 크래킹을 막을 수 있다. 일부 로드밸런싱 소프트웨어는 실서비스 서버들을 관리하는 역할을 수행하기도 한다.[1]
알고리즘
로드밸런싱 의사결정을 수행하기 위한 알고리즘으로 로드 밸런서 그룹은 알고리즘을 사용하여 의사결정을 수행한다. 의사결정은 새 연결을 전달한 원격 서버를 결정한다. 로드 밸런서 그룹은 가중치 및 비가중치 알고리즘을 지원한다.
- 라운드 로빈 방식
- 라운드 로빈(Round Robin Method)은 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식이다. 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당한다. 로드밸러닝 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식을 사용한다. 로드밸런싱 대상 서버의 성능이 다른 경우에 파일 전송 프로토콜, 세션 유지 기능(Persistence)이 필요한 애플리케이션의 경우 서버 처리와 관계없이 연결이 할당되는 라운드 로빈 방식은 적합하지 않다. 서버와의 연결이 오래 지속하지 않는 경우에 활용하기 적합하다.[2]
- 가중 라운드 로빈 방식
- 가중 라운드 로빈 방식(Weighted Round Robin Method)은 실제 서버에 서로 다른 처리 용량을 지정할 수 있다. 각 서버에 가중치를 부여할 수 있으며, 여기서 지정한 정숫값을 통해 처리 용량을 정한다. 기본 가중치는 1이다. 예를 들어 실제 서버가 A, B, C 이고 각각의 가중치가 4, 3, 2 일 경우 스케쥴링 순서는 ABCABCABA 가 된다. 가중 라운드 로빈 방식을 사용하면 실제 서버에서 네트워크 접속을 셀 필요가 없고 동적 스케쥴링 알고리즘보다 스케줄링의 과부하가 적으므로 더 많은 실제 서버를 운영할 수 있다. 그러나 요청에 대한 부하가 매우 많을 때 실제 서버 사이에 동적인 부하 불균형 상태가 생길 수 있다. 라운드 로빈 방식은 가중 라운드 로빈 방식의 특별한 한 종류이며 모든 가중치가 동일한 경우이다. 가상 서버의 규칙을 변경하고 나서 스케쥴링 순서를 생성하는 데는 거의 과부하가 걸리지 않으며 실제 스케쥴링에 어떠한 과부하도 추가하지 않는다. 그러므로 라운드 로빈 방식만 단독으로 실행하는 것은 불필요한 일이다.[3]
- IP 해시 방식
- IP 해시 방식(IP Hash Method)은클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다. 사용자의 IP를 해싱(Hashing)해 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.[4]
- 최소 연결 방식
- 최소 연결 방식(Least Connection Method)은 가장 접속이 적은 서버로 요청을 직접 연결하는 방식을 말한다. 각 서버에서 동적으로 실제 접속한 숫자를 세어야 하므로 동적 스케쥴링 알고리즘 중의 하나이다. 비슷한 성능의 서버로 구성된 가상 서버는 아주 큰 요구가 한 서버로만 집중되지 않기 때문에, 접속 부하가 매우 큰 경우에도 아주 효과적으로 분산을 한다. 가장 빠른 서버에서 더 많은 네트워크 접속을 처리할 수 있다. 그러므로 다양한 처리 용량을 지닌 서버로 구성했을 경우에도 훌륭하게 작동한다는 것을 한눈에 알 수 있을 것이다. 그렇지만 실제로는 전송 제어 프로토콜(TCP, Transmission Control Protocol)의 TIME_WAIT 상태 때문에 아주 좋은 성능을 낼 수는 없다. 전송 제어 프로토콜의 TIME_WAIT는 보통 2분이다. 그런데 접속자가 아주 많은 웹 사이트는 2분 동안에 몇천 개의 접속을 처리해야 할 경우가 있다. 서버 A는 서버 B보다 처리용량이 두 배일 경우 서버 A는 수천 개의 요청을 처리하고 전송 제어 프로토콜의 TIME_WAIT 상황에 직면하게 된다. 그렇지만 서버 B는 몇천 개의 요청이 처리되기만을 기다리게 된다. 그래서 최소 접속 스케쥴링을 이용할 경우 다양한 처리용량을 지난 서버로 구성되었을 경우 로드밸런싱이 효율적으로 되지 못할 수 있는 것이다.[3]
- 최소 리스폰 타임
- 최소 리스폰 타임(Least Response Time Method)은 서버의 현재 연결 상태와 응답시간(Response Time)을 모두 고려하여 트래픽을 배분한다. 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식이다.[4]
각주
- ↑ 부하분산 위키백과 - https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0
- ↑ 멍개, 〈(서버) 부하분산 방식〉, 《네이버 블로그》, 2015-11-21
- ↑ 3.0 3.1 〈가상 서버 스케줄링 알고리즘〉, 《이글루스》
- ↑ 4.0 4.1 가비아, 〈로드밸런서(Load Balancer)의 개념과 특징〉, 《네이버 블로그》, 2019-12-10
참고자료
- 부하분산 위키백과 - https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0
- 〈가상 서버 스케줄링 알고리즘〉, 《이글루스》
- 멍개, 〈(서버) 부하분산 방식〉, 《네이버 블로그》, 2015-11-21
- 가비아, 〈로드밸런서(Load Balancer)의 개념과 특징〉, 《네이버 블로그》, 2019-12-10