2017년 9월 4일 월요일

[HTTP 프로토콜 강좌]#25 HTTP 가속 - Load Balancing

웹사이트가 인터넷상에 처음 등장한 이후 지금까지 많은 발전과 변화가 있었다. 웹사이트는 그 발전을 거듭하여 현재 비즈니스는 물론 우리의 생활 깊숙히 파고 들어와 있다.

우리가 이메일 없이는 업무가 힘들고, 홈쇼핑, 인터넷 뱅킹, 공과급 납무며 주요 행정기관의 민원업무등도 이미 웹사이트를 통해 이용하고 있다.

또한 스마트폰의 등장으로 HTTP/HTTPS 를 이용한 각종 편리한 애플리케이션들이 많이 소개 되어 있다.

웹사이트의 접속률이 꾸준히 증가함에 따라 인터넷 홈페이지의 서비스 속도를 빠르게 하기 위한 기술들도 같이 발전하고 있다.

그 대표적인 기술로는

  1. 부하분산(Load Balancing)
  2. 웹 캐싱(Caching)
  3. SSL 가속 
  4. TCP 멀티플렉싱(Multiplexing)
이 있다. 


오늘은 위 4가지 기술 중 부하분산에 대한 이야기를 해볼까 한다.

부하분산

부하분산의 방식에 대해서는 이미 많은 엔지니어가 익숙히도 알고 있다. 신규 시스템 구축 사업들을 봐도 L4 스위치는 기본적으로 구축되는 인프라 시스템의 아이템 중 하나이고, 바로 이 L4 스위치를 통해 구현하는 기술이 부하분산인 것이기 때문이다.

이미 IT 현장에는 무수히 많은 L4 스위치 엔지니어들이 일을 하고 있으며, 이 엔지니어들을 통해 여러 웹 애플리케이션들이 안정적으로 사용자의 디바이스(PC 또는 스마트폰,패드 등)로 전달이 되고 있다.

때문에 여기서는 L4 스위치에 대한 모든 이야기 보다는 가볍게 부하분산이라는 개념적인 측면에서의 설명만 하고 넘어간다.
이 교육의 주된 목적도 HTTP 가속을 위한 기술 소개에 중점을 두고 있기 때문이다.

I. 서버의 위치

1. 서버가 로컬에 위치 한 경우 ( 로컬 로드 밸런싱 )

로컬 로드 밸런싱은 부하 분산의 대상이 되는 웹 서버들이 로컬에 위치하는 경우이다.

다음 그림을 살펴보도록 하자.



그림과 같이 인터넷을 통해 유입된 수많은 클라이언트의 요청을 같은 역할을 하는 여러대의 서버로 고르게 분산하게 된다. 이때 분산대상이 되는 웹서버들은 모두 로컬에 위치한다.

아주 단순한 이러한 동작이 주는 이점은 상당하다.
먼저 관리적인 측면에서 보면 서버의 부하가 증가하게 되면 신규 웹서버를 간단히 추가하기만 하면 된다. 새로 추가된 서버는 현재 가동중인 서버들의 부하를 줄여줄 것이다.

추가된 서버들로 인해 줄어든 부하는 궁극적으로는 사용자의 서비스 이용환경의 질을 높여주게 된다. 서버의 부하가 낮아진 만큼 처리 속도를 빠르게 해주어 결국 사용자가 체감하는 응답속도는 크게 개선될 것이다.



또한, 여러 대의 웹서버 중 일부의 서버에 장애가 발생하더라도 부하 분산 스위치에 의해 정상적인 웹서버가 그 역할을 대신하여 서비스 가용성을 극대화 시켜줄것이다.
결국 부하분산은 웹사이트의 서비스에 대한 신뢰성을 향상시켜 서비스 주최 기관의 매출신장을 도모를 기대할 수 있게끔 한다.

이렇듯 로컬 로드 밸런싱은 주요 초점이 로컬에 위치한 웹서버에 맞추어져 있다.
웹서버의 부하를 줄이고, 장애가 발생된 웹서버의 유지보수를 서비스 연속성을 보장한 상태에서 가능케 해 주니 말이다.

2. 서버가 외부에 위치 한 경우 ( 글로벌 로드 밸런싱 )

부하분산 대상이 되는 웹서버가 로컬이 아닌 외부에 있는 경우이다.
같은 서비스를 제공하는 웹서버가 여러 지역(Region) 에 위치해 있는 상태이며, 아래 그림과 같이 서비스를 요청하는 클라이언트들과 가까운 지역의 웹서버로 요청을 분산하는 케이스이다.



유럽에 위치한 클라이언트에게는 유럽에 있는 웹서버로, 아시아권에 있는 클라이언트에게는 아시아 지역에 있는 웹서버로 요청을 분산하여 좀 더 빠르게 응답을 할 수 있게끔 하는 것이다.



글로벌 로드 밸런싱은 로컬 로드 밸런싱과는 다르게 운영 초점이 사용자에게 가까운 경우라 할 수 있다. 웹서버의 안정적인 운영보다는 사용자의 응답속도 개선의 측면이 더 높다.

물론, 사용자 응답속도 개선을 위해 위와 같이 운영하게 되면, 각 지역에 위치한 웹서버들로 부하가 분산되기 때문에 특정 지역적인 측면에서만 보면, 밴드위스 절감등의 이점이 있긴하다.
또한, 로컬 로드 밸런싱과 마찬가지로 가용성을 유지하는 것이 가능하다.
예를 들어 유럽지역의 웹서버가 다운되는 경우 로드밸런서에 의해서 다운된 지역으로는 트래픽을 분산하지 않기 때문이다.

글로벌 부하분산은 보통 트래픽 분산으로도 이용되지만, DR (재해복구) 센터 운영에 대한 기술로도 활용이 되고 있다.
(평소에는 유럽지역으로 분산을 하다가 유럽지역에 테러/자연재해로 인한 서비스 불가 상태에 빠지게 되면 자연스레 아시아쪽으로 트래픽을 분산시켜 가용성을 확보하는 방법이다.)





II. 부하 분산 방법

부하를 분산하는 방법으로는 크게 2가지가 있을 수 있다.
그중 첫번째는 DNS 를 이용하는 것이다.

DNS는 많은 분들이 알고 있듯이 도메인 네임을 IP 주소로 변경해 주는 역할을 한다. 실제로 로 인터넷 브라우저에 "www.daum.net" 과 같은 도메인 네임을 입력하게 되면, DNS 서버에 www.daum.net 의 IP 주소를 묻고, 전달 받은 IP 주소로 접속을 시도하게 된다.

따라서 다음과 같이 DNS 서버가 클라이언트의 요청마다 다른 IP 주소를 알려주게 되면 클라이언트의 실제 접속 요청이 분산되게 된다.

아래 그림을 참고하자.

클라이언트 A와 클라이언트 B는 "www.daum.net" 이라는 같은 곳을 접속하지만, DNS 서버에 의해서 서로 다른 위치의 웹서버(같은 서비스의 서버)로 접속이 이루어 지게 된다.

이처럼 DNS 를 통해 클라이언트들의 요청을 분배하는... 즉, 부하분산을 가능케 하는 기술이 글로벌 로드 밸런싱에서 사용되는 기술이다.

두번째는 전용 로드 밸런싱 장비를 이용하는 것이다.

앞서 설명했던 로컬 로드 밸런싱 장비를 이용하는 경우가 바로 그것이다. 이 경우 통상 DNS Lookup IP (서비스 IP)는 로드밸렁신 장비가 가지게 된다.

서비스 IP로 유입된 클라이언트들의 요청은 전용 로드밸런싱 장비의 다양한 부한 분산 알고리즘을 통해 적절하게 웹서버들로 분산되어진다.
이 역할을 하는 주요 장비가 바로 "L4 스위치" 이다.

통상 로드 밸런싱 장비가 제공하는 부하 분산 방식으로는 크게 정적(Static) 방식과 동적(Dynamic) 방식이 있다.

Round Robin 과 같이 유입된 순서대로 웹서버들에게 한번씩 분산하는 것이 정적 방식이고, 웹서버의 세션 수를 체크하여 적은 세션을 가지고 있는 웹서버에게 먼저 분산한다던지 CPU 사용량이 낮은 웹서버에게 먼저 전달한다던지 응답시간을 체크하여 빠른 웹서버에게 부하를 먼저 포워딩하는 형태들이 동적 방식이 되겠다.

이런 다양한 부하분산 방식들은 결국에는 다음 2가지를 목적으로 사용되는데..

  1. 좀 더 빠른 웹서비스 환경 제공
  2. 좀 더 안정적인 웹서비스 환경 제공
이라 할 수 있다. 

오늘은 여기까지.. 끝~~

댓글 2개:

  1. 와 정말 글쓰신 내용들이 참 도움이 많이 됩니다. 감사합니다

    답글삭제