최근 서버 작업을 하게 되면서, L4 스위치에 대한 이야기를 듣게 되었다.
L4를 통해 로드 밸런싱을 하고 있다는 이야기를 들었었는데, L4가 무엇인지를 제대로 이해 하지 못했었다.
그래서 이번 기회에 L4란 무엇인지와 L4에서는 어떻게 로드 밸런싱을 하는지, 그리고 애플리케이션에서 로드 밸런싱을 하는 것과는 어떠한 차이가 있는지 살펴 보려고 한다.
간단하게 설명 하면, L4 스위치란 로드 밸런싱을 처리하는 장비이다.

정확히는 동일한 역할을 수행하는 서버들을 그룹화 하여서 Virtual IP를 통해 관리하는 장비로, 서버로 향하는 트래픽을 수신하여 스케쥴링 알고리즘에 따라 적절한 서버로 분산해주는 장비이다.
이 때 Virtual IP는 하나의 물리적 호스트에 여러 개의 IP 주소를 할당하는 기술을 의미하며, Virtual Server는 외부 사용자들이 접속 시 사용하는 IP와 PORT를 의미한다.

L4는 OSI 7 계층 중, Layer 4(전송 계층)의 약자이다.
L4 스위치는 TCP, UDP, HTTP와도 같은 프로토콜들의 헤더를 분석하여, 해당 헤더 정보를 토대로 부하 분산을 실시할 수 있다.
이 때 어떤 헤더 정보를 통대로 부하 분산을 하는걸까?

L4 스위치는 IP 주소, Source Port, Destination Port을 사용 하여서 부하 분산을 한다고 한다.
이 때 사용되는 부하 분산 알고리즘은 라운드 로빈, 해시 기반 분산, 최소 연결, 최소 응답 시간등의 알고리즘이 있다.

클라이언트와 서버가 TCP를 통해 통신할 때는 일반적으로 3-way handshake를 실시한다.
이 때 클라이언트와 서버는 직접적으로 SYN과 ACK를 주고 받으며 통신한다.
L4 스위치를 사용 한다면 이러한 3-way handshake간 클라이언트와 서버의 중간 전달자의 역할을 L4 스위치가 맡게 된다.

L4 스위치는 SYN/ACK를 클라이언트, 서버에게 대신 전달해주는 역할을 수행한다.
이 때 L4 스위치를 통한 3-way Hand Shake는 아래와 같다.
VIP(123.111.43.1)를 목적지로 통신하게 된다.IP(192.168.1.11)로 변환 후 전달한다.(192.168.1.11)를 L4 스위치의 VIP(123.111.43.1) 로 변환 후에 클라이언트에게 전달한다.L4 스위치의 핵심적인 장점은 서두에 이야기 했던 것처럼 로드 밸런싱이다.

로드 밸런싱시에 L4 스위치의 공인 IP를 통해 클라이언트들을 접근하게 된다.
이를 통해 서버들은 공인 IP를 갖게 될 필요가 없어지고, 외부에서는 서버의 IP를 알 방법이 없으니 서버에 직접 공격할 수도 없게 된다.
L4 스위치를 공부 하다보니, Ngnix등의 SW를 이용한, 즉 OSI 7 계층인 Application 계층에서의 LB와 어떠한 차이가 있는지가 궁금해졌다.
이러한 궁금증을 하나의 문장으로 요약하니 아래와 같은 질문이 생겨났다.
L4 스위치가 있으면, 굳이 SW를 통한 Load Balancing이 필요한가?
위에 대한 질문을 SW LB와의 차이를 중심으로 풀어보자.
해당 글에서 중점적으로 다룬 L4 스위치의 경우에는 기본적으로 전송 계층에서 동작하며, 부하 분산시 트래픽의 내용을 분석하는게 아니라 헤더 정보를 기반으로 부하를 분산한다.
이 때 L4 스위치는 네트워크 계층에서 부하를 분산 한다는 점을 통해 빠른 속도로 트래픽을 처리할 수 있다는 장점이 있다.
웹 서버등의 SW의 경우에는 OSI 모델의 7계층인 애플리케이션 계층에서 동작하며, 부하 분산시 HTTP 요청의 내용(URL, 쿠키, 세션 정보, 헤더)을 분석하여 부하 분산을 진행한다.
이 때 HTTP 요청의 내용을 통해 부하 분산을 진행 하기에 애플리케이션에 맞춘 세밀한 LB 및 웹 요청 관리가 가능하다는 장점이 있다.
위 질문에 대한 답을 아래의 문장으로 정리 해보았다.
L4가 로드 밸런싱의 역할을 수행하는 것은 맞지만, 웹 서버는 로드 밸런싱 외에 다른 역할들(리버스 프록시, SSL, 정적 파일 제공) 및 애플리케이션 레벨에서의 LB 같은 다른 역할이 있기에 L4의 유무와 상관 없이 필요한 것이다.