웹 서비스에서 로드 밸런싱이란 트래픽을 여러 서버로 분산 처리하는 것을 의미한다.
로드 밸런싱은 여러가지 방법으로 구현이 가능하지만, 2가지로 구분해본다면 Layer4 로드밸런싱과 Layer7 로드밸런싱으로 구분할 수 있다. 관련된 내용을 쉽게 설명해 둔 글이 있어서 일부를 발췌해서 정리해 둔다. 아래 영문 사이트 참고
An Introduction to HAProxy and Load Balancing Concepts
Layer 4 로드 밸런싱
말그대로 L4(transport layer)에서 로드 밸런싱을 해주는 것이다. 유저는 로드밸런서에 접속하고 로드 밸런서는 여러대의 웹서버 중 한곳으로 포워딩 해주는 간단한 구조이다.
일반적으로 IP 주소와 포트를 기반으로 트레픽을 나누는데, 나누는 알고리즘도 다양하지만 라운드로빈으로 간단하게 나눠서 처리하는 경우도 많은것 같다. 가장 많이 쓰이는 일반적인 방식이다.
Layer 7 로드 밸런싱
Layer 4가 웹서버 하나를 선택해서 모든 트래픽을 포워딩하는 방식인 반면 Layer 7 로드 밸런싱은 Application layer 에서 로드 밸런싱을 하는 것이다. 즉, 상위 계층의 구분에 따라서 로드 밸런싱을 한다. 예를 들어 기본 웹페이지를 담당하는 웹서버와 특정 서비스에 대한 API 웹서버를 따로 운용하고 트래픽 요청에 따라서 로드 밸런싱을 해주는 것이다.
Layer 4보다 복잡한 방식이지만 그만큼 더 효율적으로 로드 밸런싱이 가능하다.
로드 밸런싱하면 Layer 4 로드 밸런싱을 생각했었는데, 이번에 Layer 7 로드 밸런싱을 새롭게 알게되었다. 상황에 맞춰서 두가지 방식을 적절히 혼합하여서 사용하는 것이 좋을 것 같다.
추가정보
AWS(아마존 웹 서비스)에서는 ELB(Elastic Load Balancer)라는 서비스를 제공한다. 라운드 로빈 방식으로 L4 로드 밸런싱을 해준다고 하는데, 자세한 것은 좀 더 알아봐야 할것 같다.
ELB를 효율적으로 사용하려면 서버 인스턴스를 늘렸다가 줄여주는 Auto Scaling을 함께 사용하면 좋다. Auto Scaling은 서버 인스터스의 갯수를 늘렸다가 줄였다가 할 수 있을뿐만아니라 인스턴스의 성능도 높였다가 낮췄다가 할 수 있다.
AWS 로드 밸런서 관련 내용이 아래 포스팅에 정리가 잘 되어 있다.
[AWS] EC2 모니터링, 오토 스케일링, 일래스틱 로드 밸런싱
AWE ELB 로드 밸런서로는 복잡한 로드 밸런서는 구현할 수 없다. 필요하다면 HAproxy 등을 사용한 로드 밸런서를 직접 구현하는 것도 대안이 될것 같다. 힘이 들어서 그러지...
'기술 이야기' 카테고리의 다른 글
파비콘favicon 만들어서 블로그에 적용하기 - 김프gimp사용 (0) | 2015.09.18 |
---|---|
텔레그램 기반의 혁신적인 메신저 소셜라이저 소개 (0) | 2015.09.04 |
깃 허브 스타일로 구글 Syntax Highlighter prettify 적용하기 (0) | 2015.08.20 |
웹 서버를 운용하는 5가지 방식 (0) | 2015.08.03 |
HTML5 & CSS3 오늘 구현하는 내일의 웹 표준 (1) | 2015.06.15 |
깃으로 디버깅 하기 - git bisect 활용 (0) | 2015.04.30 |
자료 백업 방법 (0) | 2014.12.03 |
댓글