부하분산

위키백과, 우리 모두의 백과사전.

위키미디어 일래스틱서치 서버 클러스터로의 사용자 요청들이 부하 분산을 통해 라우팅되고 있다.

부하분산 또는 로드 밸런싱(load balancing)[1]은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답시간을 최적화 시킬 수 있다. 예를 들어, 메인프레임 1대(단일 구성체) 보다 IA-32와 같은 일반적인 서버(복합 구성체)가 안정성 면에서 유리한 위치에 있다. 부하분산 서비스는 그에 적합한 하드웨어와 소프트웨어에 의해 제공된다. 이 기술은 보통 내부 네트워크를 이용한 병렬처리(특히, 고가용성의 병렬처리)에 사용된다.

부하분산을 위한 대부분의 응용 프로그램은 다수의 서버(다른 말로, 서버 팜)를 가지고 한 가지 종류의 인터넷 서비스를 지원하는 방식이다. 보통 부하 분산은 트래픽이 많은 웹 사이트, IRC 네트워크, FTP 사이트, NNTP 서버 그리고 DNS서버에 적용이 되고 있다.

인터넷 서비스를 위해서는 소프트웨어를 이용한 부하분산이 적용되며, 이 소프트웨어는 중간에 위치에 실제 서비스하는 서버와 클라이언트를 포트를 이용해 중개하고 있다. 그러나 사용자는 이를 알아차리지 못한다. 이를 투명성이라 한다.

또한, 보안이라는 측면에서 내부 네트워크 구조를 숨김으로서 크래킹을 막을 수 있다.

일부 부하분산 소프트웨어는 실서비스 서버들을 관리하는 역할을 수행하기도 한다. (예를 들어, 서버 다운 혹은 백업에 관련된 작업과 같은)

부하분산의 다른 방식으로는 Round Robin DNS 라고 하는 특별한 하드웨어 및 소프트웨어가 필요가 없는 방식이 있다. 이 방식에서는 여러 개의 IP주소를 동일한 도메인 네임에 연관지어 놓고 클라이언트들이 어떤 서버를 사용할 것인지 결정하게 하는 방식이다. 일반적인 부하분산과는 다르게 "투명성"이 존재하지 않는다. 왜냐하면 이미 내부의 서버들의 주소가 이미 노출되어 있기 때문이다.

이 방식은 장단점이 혼재되어 있다. DNS서버에 대한 의존도가 높고 부하분산이 원하는 대로 될 수 있다는 것이다.

각주[편집]