본문으로 바로가기

4계층 장비의 특징

세션 테이블을 기반으로 작동한다. 때문에 4계층의 로드 밸런서나 방화벽 등을 세션 장비라고 부르기도 한다.

세션 정보는 세션 테이블에 남아 있는 lifetime이 존재한다.

경로가 Symmetric, 즉, Inbound와 Outbound 경로가 일치해야 한다.

로드 밸런서의 경우 ip 주소가 변경되며 L7 로드 밸런서(ADC)는 앱의 프로토콜 정보도 변경된다.

 

로드 밸런서

 

서버의 부하를 줄여주기 위한 역할을 로드 밸런서라 부릅니다. 솔직히 네트워크 공부하면서 처음으로 친숙한 용어였습니다 ㅋㅋ 스케일업은 비용이 많이 들어가서 스케일아웃이 합리적일 때가 많아 로드 밸런서는 일반 코더에게도 친숙한 장비입니다. 로드 밸런서가 서비스에 접근하는 public ip를 가지고 있고 내부적으로 요청을 시스템의 실제 ip로 변경하여 다른 서버로 보냅니다.

 

따라서 로드 밸런서는 그 자체로 장비의 이름이 아니라, '역할'의 이름입니다.

4L 스위치 로드밸런서, 소프트웨어형 로드 밸런서 등 형태는 다양합니다. 따라서 '로드 밸런싱은 어떻게 하고 있느냐'는 질문에는 여러가지 답안이 나올 수 있습니다. nginx로 처리하고 있다, 우리는 azure gateway로 처리하고 있다 등등...

 

뭐 클라우드만 살펴보면 다음과 같은Amazon API Gateway, Azure API Management, Google Cloud Endpoints, Oracle API Platform 같은 api gateway를 사용하여 로드 밸런서를 구현할 수도 있고 (waspro.tistory.com/433)

 

 

.AWS NLB(L4), ALB(L7) 직접 로드 밸런서를 만들어 붙일 수도 있습니다 사용하면 좋죠.

 

api gateway vs Application Load Balancer의 차이에 대해서는 아래를 참고합시다.

hackernoon.com/amazon-api-gateway-vs-application-load-balancer-un123ua5

 

Amazon API Gateway Vs. Application Load Balancer | Hacker Noon

We recently wrote about whether API Gateway can act as a Load Balancer. The answer is yes and, in many cases, they are substitutes for each other. But how should we choose which one to use?

hackernoon.com

 

GW에 대해서는 제가 작성한 아래 글을 참고합시다.

darrengwon.tistory.com/1297?category=922016

 

3 tier arch와 함께 살펴보는 LB와 API gateway

API Gateway(ag)가 단순히 엔드 포인트를 일원적으로 관리해주는 역할 뿐만 아니라, 유저 검증이나 로드 밸런서의 역할을 하면서 LB와 AG의 차이가 무엇인지를 묻는 일이 많아졌다. AG가 LB의 역할을

darrengwon.tistory.com

 

어쨌거나 로드 밸런서는 실제 서버의 앞 단에 존재하기 때문에 단순한 로드 밸런싱 뿐만 아니라 방화벽, VPN 등의 다양한 기능과 결합되어 사용될 수도 있습니다.

 

 

- L4, L7 로드 밸런서

 

로드 밸런서는 L4, L7 로드밸런서로 구분될 수 있습니다.

 

최근의 로드 밸런서는 L4, L7의 기능을 모두 지원하므로 L4 기능만 전용으로 제공하는 로드 밸런서 장비는 찾기 어려워졌고 어떻게 설정했는지, 무슨 정보를 사용하는지에 따라 4계층 정보로만 분산처리를 할 경우 L4 로드 밸런서라고 합니다. 단순히 443 포트냐, 80 포트냐만을 본다면 L4 로드 밸런서입니다.

 

L7 로드 밸런서는 HTTP, FTP, SMTP와 같은 프로토콜을 기반으로 로드밸런싱합니다.

그러니까, HTTP의 헤더나 url 주소를 기반으로 연결한 서버를 분기한다면 그건 L7 로드 밸런서라는 겁니다.

이러한 로드 밸런서를 ADC(Application Delivery  Controller)라고 부릅니다.

 

클라우드에서는 이 둘을 구분하는데 AWS의 NLB(network load balancer)는 L4이고, ALB(application load balancer)는 L7입니다.

다른 클라우드 벤더...의 서비스는 직접 알아봅시다.

 

 

- ADC (Application Delivery Controller)

 

생각해보면 이런 기능은 Nginx의 리버스 프록시와 같은 역할을 합니다.

네, 맞습니다. 흔히 Nginx로 로드 밸런싱을 하다고 하는 것은 이를 말하는 겁니다.

 

ADC는 어플리케이션 단(7L)에서 작동하는 로드 밸런서입니다. 어플리케이션의 프로토콜 정보를 이용하여 좀 더 다양하고 섬세한 동작을 할 수 있고 L4 스위치의 기능까지 겸임하는 경우가 대다수입니다. 로드 밸런싱 뿐만 아니라 리다이렉트, 캐싱, 압축, 인코딩 등 다양한 역할을 겸입합니다.

 

ADC의 활용 예를 들어보면 다음과 같은 것들이 있을 수 있겠습니다.

- WAS에서 압축하는 것보다 ADC에서 압축하는게 서버 부하를 줄여주니까 ADC를 잘 활용하면 여러모로 좋습니다.

- SSL 프로토콜의 경우(HTTPS), 암복화, 복호화의 과정 자체가 일반 http 보다 부하가 많이 걸리므로, 엔드 유저에게 노출되는 ADC에서만 SSL 프로토콜을 사용하고, ADC와 실제 서버와의 통신은 가벼운 http를 사용 할 수 있습니다.

 

반면 ADC와 달리 4L 스위치는 정말 virtual ip, virtual server, real ip, real server 로 구성되어 서비스 포트에 따라 특정 서버로 쏴주는 역할을 합니다. 기본적인 로드 밸런싱을 한다고 보시면 되겠습니다.

 

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체