L4, L7 Loadbalancer 차이

2024. 9. 10. 01:22머리속에 궁금했던 것들

L4, L7 Loadbalancer

Loadbalancer는 트래픽이 들어왔을 때 부하 및 특정 목적에 의해 분산을 시켜주는 기능을 제공하고 있다.

 

L4와 L7 각각에 Loadbalancer를 적용할 수 있는데 트래픽을 분산 시키는 기능은 비슷하나 다른 목적을 갖고 있다. 우선 L7과 L4에서 어떤 작업이 이루어지는지 알아보자

 

L7 Layer

Application Layer로 일반적인 사용자의 요청과 연결되어 있는 계층입니다. 

 

주요 프로토콜

  • HTTP
  • HTTPS
  • SMTP
  • FTP

역할

 

1. SSL/TLS 등을 활용해 데이터를 암호화 및 인증 역할을 합니다.

2. 세션 관리

3. 애플리케이션과 네트워크가 바로 맞다아 있는 계층이기 때문에 바로 잘 상호작용 할 수 있도록 설정되어 있습니다. 

 

L4 Layer

데이터를 신뢰성 있게 전송할 수 있도록 하는 것이 주요 역할이다. 

 

위의 Layer에서 받은 데이터를 segment로 나누어 전송하고 수신측에서 이를 받아서 재조립하는 과정이 발생한다. 

 

전송 안정화를 위해 하는 Action 

 

1. 3 hand shake 데이터를 송수신 하기전 ACK 등의 데이터를 주고 받으며 연결이 안정화 됐는지 확인한다.

2. 흐름 제어, 오류제어 

  2-1: 흐름제어 전송 속도가 너무 빨라서 수신자가 처리하지 못하는 상황을 의미한다.

  2-2: 전송중 오류를 감지해 재전송을 요청한다. (체크섬)

3. IP와 TCP/UDP 포트번호를 기반으로 switch에서 분류해 전송합니다.

  3-1: L4 스위치는 IP가  붙여지는 L3에서 IP가 붙은 이후 IP와 포트번호를 기반으로 데이터를 분류해 전송한다.

4. 가상 IP에서 실제 IP로 변환되어 바꾸어준다.

5. IP와 포트번호 기반으로 데이터 입력, 출력 등에 방화벽과 같이 송수신 제어 기능을 할 수 있다. 

 

 

Load balancer에서는 어떻게 다를까?

L4 Layer Loadbalancer

1. IP와 TCP/UDP 포트 기반으로 여러 서버로 트래픽을 분배합니다.

2. 네트워크 부하를 균등하게 분산시키거나, 특정 서버에 집중되지 않도록 합니다. 

3. 트래픽을 서버에 단순히 분산시킬 때 사용함.

 

L7 Layer Loadbalancer

1. 전송할때 사용하는 정보를 기반으로 트래픽을 분산시킬 수 있음.

2. 그러므로 L4 보다는 더욱 많은 기능을 사용할 수 있음.

3. 분석할 때 사용하는 아이템

  3-1. 요청 URL

  3-2. 쿠키

4. 사용 사례

  4-1. A/B 테스트

  4-2. 콘텐츠 기반 분배

     콘텐츠 즉 URL 경로 및 헤더 파라미터 등을 기반으로 처리를 해줄 수 있는 다른 서버로 연결되게 해줄 수 있는 작업입니다.

  4-3. SSL 종단간 처리

      기존에는 클라이언트와 서버 사이에 SSL 암호화를 진행하고 있었는데 이를 중단하고, 클라이언트와 Loadbalancer 사이에 SSL 통신을하게 하고 로드 밸런서와 서버와의 통신은 평문으로 하게 하는 작업이다.

 

서버에서 SSL 작업을 중단하게 되어 부담이 줄어들게 된다. 

또 한곳에서 SSL 인증서를 중앙에서 관리하게 해서 관리포인트가 줄어들게 된다.

 

 

알고리즘

라운드로빈: 순차적으로 서버에 연결을 시도함.

최소 연결 기반: 가장 부하가 적은 서버에 연결을 시도함.

가중치 기반: 특정 서버에 가중치를 두어 더 많은 트래픽을 내보냄.

 

결론

 

지금까지 L4, L7의 Loadbalancer가 어떻게 작동하는지 알아봤다. 간단하게 생각하면 L7은 요청으로 받는 데이터를 기반으로 특정 서버와의 연결을 해준 반면, L4에서는 IP와 Port를 기반으로 단순 트래픽 분산을 목표로 Loadbalancer를 사용하도록 만들어 두었다. 

 

L4에서는 패킷을 기반으로 분석만 하면 되어서 조금 더 빠른 성능을 갖고 있다. 하지만 조금 더 세밀하고 유연하게 L7를 사용하면 좋다. 

 

같이 사용하게 된다면

 

물론 이 둘을 같이 사용해도 좋은 시너지 효과를 낼 수 있다.

 

L7을 통해서 목적지 서버가 정해지면 L4 LB에서는 목적지의 변경이 발생하지 않는다. 이렇게 보면 왜 L7만 쓰면 뒤에 있는 L4 LB는 노쓸모 아닌가 생각하겠지만, TCP를 처리하기 전 3 handshake를 하게 되는 경우에 역할을 해줄 수 있다. 3handshake는 TCP 연결을 진행한 후 HTTP 통신을 시도하기 때문이다.

 

즉 L4 로드밸런서는 빠르고 효율적으로 초기 트래픽을 처리하고, 대규모 연결을 효율적으로 관리할 수 있습니다. 그런 다음, 더 세밀한 트래픽 제어가 필요한 경우 L7 로드밸런서가 트래픽을 처리합니다.

'머리속에 궁금했던 것들' 카테고리의 다른 글

Clean Architecture(DDD?)  (1) 2024.09.17
http와 https의 차이  (0) 2024.09.16
서버 성능 테스트(1)  (0) 2021.11.18
Go, Java Garbage Collector  (0) 2021.06.08