Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

로드밸런싱 서비스

로드밸런싱은 인터넷 트래픽을 여러 서버로 분산하기 위해서 사용하는 기술이다. 로드밸런싱을 해주는 소프트웨어 혹은 장비를 로드밸런서라고 한다. 인터넷 트래픽은 매년 100% 이상 증가하고 있지만 서버 성능은 트래픽 증가분을 따라가지 못하고 있다. 이 문제는 크게 두가지 방법으로 해결할 수 있다.

하나는 scale-up 즉 수직방향으로 CPU, 메모리, 디스크 등의 기능을 업그레이드 하는 방법이다. 고성능 서버를 박아서 문제를 처리한다는 건데, 많은 비용이 든다는 문제가 있다. 예컨데 현재 성능을 2배로 향상시키면, 2배 이상의 비용이 소모된다. 성능이 좋으면 좋을 수록 성능을 높이는데 드는 비용은 기하급수적으로 상승한다. 기능이 하나의 장비에 집중 되기 때문에 가용성에 문제가 생길 수 있다. 가용성을 높이기 위해서 HA 구성을 해야 하기 때문에 2배의 비용이 든다.

다른 하나로 scale-out 즉 수직방향으로 노드를 추가해서 성능을 업그레이드 하는 방법이 있다. 소위 말하는 cluster를 구성하는 방식이다. 저렴한 노드를 여러 개 묶어서 성능을 업그레이드 하는데, scale-up 방식에 비해서 비용을 크게 줄일 수 있으며 유연한 구성이 가능하다. cluster로 구성할 경우 cluster를 구성하는 하나의 노드에 문제가 생기더라도 서비스가 중단되지는 않기 때문에, 가용성을 확보하기가 쉽다는 장점도 있다.

로드밸런싱은 scale-out을 통한 성능 업그레이드를 목표로 한다. 하나의 서비스를 하나 이상의 노드가 처리하는 식으로 작동한다. 일반적으로 로드밸런싱은 웹 사이트나 FTP, DNS 등 클라이언트 요청이 많은 서비스에 주로 사용한다.

인터넷 서비스를 위한 로드 밸런서는 특정 포트에서 기다리고 있다가 서비스 요청이 들어오면, 이 요청을 뒷 단위 여러 노드들 중 하나의 노드에 전달하는 방식으로 작동한다. 아래 그림은 일반적인 웹 서비스에 대한 로드밸런싱 구조를 보여준다.

로드밸런서의 기능들

  • Asymmetric load
  • HTTP caching
  • Priority queuing
  • Content-aware switching
  • HTTP compression
  • TCP offload
  • TCP buffering
  • Direct Server return
  • health checking
  • SSL offload 및 ssl Acceleration
  • DDos 공격 방어

로드밸런서를 구현하기 위한 기술들

  1. VIP : 로드밸런서는 여러 개의 인터넷 서비스를 처리할 수도 있다. 이 경우 가상의 IP를 관리해야 한다.
  2. health check : 서비스에 문제가 있는 노드를 로드밸런싱 그룹에서 제거해야 하기 때문에, 주기적으로 애플리케이션을 측정해야 한다.
  3. heartbeat : 로드밸런싱 서비스는 고가용성을 목표로 하기 때문에 로드밸런서의 고장에 대비해야 한다. 일반적으로 Active-standby 구조의 HA를 구성하며, heartbeat는 고가용성 시스템 구축을 위해 사용하는 소프트웨어다.

로드밸런싱 제품들

  1. haproxy : 리눅스 기반의 공개 소프트웨어
  2. Ultra Monkey : 리눅스 기반의 공개 소프트웨어
  3. LVS : 리눅스 커널 레벨에서 작동하는 소프트웨어
  4. 대부분의 상용 네트워크 장비들