부하 분산 관련 정리

2 분 소요

대용량 서비스를 운영하려면 부하 분산은 필수다. 대용량 트래픽을 장애 없이 처리하려면 여러 대의 서버에 적절히 트래픽을 분배해야 한다.

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

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

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

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

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

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

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

부하분산 - WIKI

부하분산

  • 집중되는 부하를 여러 곳으로 나누어 처리
  • 병렬 운영되는 장비들에 부하를 균등 배분
  • 둘 이상의 장치들에게 작업을 배분하는 일

프록시 방식

  • Client의 요청과 그에 대한 응답이 모두 로드밸런서를 통과하는 방식
  • 대칭형 로드밸런싱
  • 패킷의 출발지와 목적지를 모두 변조(NAT)

DSR 방식 (Direct Server Return)

  • Client의 요청은 로드밸런서를 통과하지만 응답은 서버에서 직접하는 방식
  • 요청과 다른 네트워크 경로로 응답하는 방식
  • 비대칭형 로드밸런싱
  • 패킷의 목적지만 변조

리버스 프록시

  • 특정 서버에 대한 요청이 반드시 경유하도록 설치된 프록시 서버
  • 특정 서버들만을 목적지로 한다.
  • 특정 서버의 부하를 줄이거나, 접속을 제한하여 보안 강화

주요 용도

  • 보안: 리버스 프록시 서버를 경유하므로 방어 계층 역할. 프록시 서버에 인증 기능을 갖추는 경우도 있음.
  • 암호화통신(SSL) 고속화 - SSL 고속 처리 장비를 갖춘 프록시 서버 사용
  • 부하 분산 - 여러 서버로 부하를 분산. URL에 따라 서버를 분기하기도 함
  • 스태틱 컨텐츠를 캐싱하여 웹서버 부하를 줄임
  • 압축 - 컨텐츠를 압축, 최적화 하여 로딩시간 단축

Squid, Apache, Lighttpd, Varnish Cache, nginx 등 리버스 프록시 기능을 제공할 수 있다.

참고 자료

댓글남기기