레이어 4 로드 밸런싱이란 무엇인가요?
계층 4 부하 분산은 네트워킹 전송 계층(계층 4)에 정의된 정보를 기반으로 클라이언트 요청을 서버 그룹에 분산하는 방법을 결정합니다. 특히 인터넷 트래픽의 경우, 계층 4 부하 분산기는 패킷의 내용을 고려하지 않고 패킷 헤더에 기록된 출발지 및 목적지 IP 주소와 포트를 기준으로 부하 분산을 결정합니다.
네트워킹 계층은 총 7개이며, 개방형 시스템 상호 연결[OSI] 참조 모델에 정의되어 있습니다. 자세한 내용은 아래의 OSI 및 인터넷 모델의 계층을 참조하세요.
부하 분산에 대한 자세한 내용은 NGINX Plus를 사용한 애플리케이션 부하 분산을 참조하세요.
계층 4 부하 분산 및 NAT
오늘날 “계층 4 부하 분산”이라는 용어는 일반적으로 웹 사이트나 서비스에 대해 로드 밸런서의 IP 주소를 클라이언트에 알리는 배포 방식(예: DNS를 통해)을 의미합니다. 따라서 클라이언트는 요청의 대상 IP 주소로 로드 밸런서의 주소를 기록합니다.
계층 4 로드 밸런서는 요청을 수신하고 로드 밸런싱 결정을 내릴 때 요청 패킷에 네트워크 주소 변환(NAT)도 수행하여, 기록된 대상 IP 주소를 자체 주소에서 내부 네트워크에서 선택한 콘텐츠 서버의 주소로 변경합니다. 마찬가지로 서버 응답을 클라이언트에 전달하기 전에 로드 밸런서는 패킷 헤더에 기록된 출발지 주소를 서버의 IP 주소에서 자체 주소로 변경합니다. (패킷에 기록된 대상 및 출발지 TCP 포트 번호도 이와 유사한 방식으로 변경되는 경우가 있습니다.)
계층 4 로드 밸런서는 TCP 스트림의 처음 몇 개 패킷에서 추출한 주소 정보를 기반으로 라우팅을 결정하며, 패킷의 내용은 검사하지 않습니다. 계층 4 로드 밸런서는 공급업체가 제공하는 전용 하드웨어 장치인 경우가 많고 독점 로드 밸런싱 소프트웨어를 실행하며, NAT 작업은 소프트웨어가 아닌 특수 칩에서 수행될 수도 있습니다.
레이어 4 로드 밸런싱은 범용 하드웨어의 성능이 지금처럼 강력하지 않고 클라이언트와 애플리케이션 서버 간의 상호 작용도 훨씬 단순했던 시기에 널리 사용되던 트래픽 처리 아키텍처였습니다. 레이어 7과 같은 고급 로드 밸런싱 방식보다 연산량이 적지만, 이제는 CPU와 메모리가 충분히 빠르고 저렴해져 대부분의 상황에서 레이어 4 로드 밸런싱의 성능상 이점은 미미하거나 의미가 없어졌습니다.
레이어 4와 레이어 7 로드 밸런서 비교
계층 7 로드 밸런서는 OSI 모델의 최상위 계층인 애플리케이션 계층에서 작동합니다(인터넷에서는 HTTP가 이 계층의 주요 프로토콜입니다). 계층 7 로드 밸런서는 HTTP 헤더의 다양한 특성과 URL, 데이터 유형(텍스트, 동영상, 그래픽), 쿠키 정보 등 메시지의 실제 내용을 바탕으로 라우팅을 결정합니다.
전송되는 정보의 훨씬 더 많은 측면을 고려해야 하므로 계층 7 부하 분산은 계층 4보다 더 많은 시간과 컴퓨팅 성능이 필요해 비용이 높을 수 있지만, 그럼에도 전반적인 효율성은 더 높아질 수 있습니다. 예를 들어 계층 7 부하 분산 장치는 클라이언트가 요청하는 데이터 유형(동영상, 텍스트 등)을 파악할 수 있으므로 부하가 분산되는 모든 서버에 동일한 데이터를 복제할 필요가 없습니다.
NGINX Plus 및 오픈 소스 NGINX 소프트웨어와 같은 최신 범용 로드 밸런서는 일반적으로 계층 7에서 작동하며 완전한 리버스 프록시 역할을 합니다. NAT를 사용하는 계층 4 로드 밸런서처럼 패킷 단위로 트래픽을 관리하는 대신, 계층 7 로드 밸런싱 프록시는 요청과 응답 전체를 읽을 수 있습니다. 이러한 프록시는 클라이언트와 애플리케이션 서버 간의 트랜잭션을 완전히 이해한 상태에서 트래픽을 관리하고 조작합니다.
일부 로드 밸런서는 서비스의 특성에 따라 레이어 4 또는 레이어 7 로드 밸런싱을 제공하도록 구성할 수 있습니다. 앞서 언급했듯이 최신 범용 하드웨어는 일반적으로 성능이 충분히 뛰어나므로, 레이어 4 로드 밸런싱으로 절감되는 연산 비용은 레이어 7 로드 밸런싱이 제공하는 향상된 유연성과 효율성의 이점을 능가할 만큼 크지 않습니다.
NGINX가 제공하는 이점
NGINX Plus와 NGINX는 Dropbox, Netflix, Zynga와 같이 트래픽이 많은 웹사이트에서 사용하는 업계 최고의 로드 밸런싱 솔루션입니다. 전 세계 3억 5천만 개 이상의 웹사이트가 콘텐츠를 빠르고 안정적이며 안전하게 제공하기 위해 NGINX Plus와 NGINX Open Source를 사용합니다.
소프트웨어 기반 로드 밸런서인 NGINX Plus는 유사한 기능을 갖춘 하드웨어 기반 솔루션보다 훨씬 저렴합니다. NGINX Plus의 포괄적인 로드 밸런싱 기능을 활용하면 고도로 최적화된 애플리케이션 전송 네트워크를 구축할 수 있습니다.
서버 팜 앞단에 NGINX Plus를 로드 밸런서로 배치하면 전체 웹사이트의 효율성, 성능, 안정성 및 확장성이 향상됩니다. NGINX Plus는 고객 만족도와 IT 투자 수익을 모두 극대화할 수 있도록 지원합니다.
OSI 및 인터넷 모델의 계층
인터넷 트래픽에서 “계층 4” 및 “계층 7” 부하 분산이라는 표현은 편의상 사용하는 약칭이지만, 엄밀히 말하면 정확하지 않습니다. 관심이 있다면 계속 읽어 보세요.
네트워킹의 7계층이라는 개념은 개방형 시스템 간 상호 연결(OSI) 참조 모델에서 유래했습니다. 이 모델은 네트워크 기능을 7개의 추상화된 계층으로 구분하며, 일반적으로 각 계층을 번호(계층 1부터 계층 7까지)로 지칭합니다. 각 계층에는 데이터의 패키징 및 전송 방식을 정의하는 표준이 있습니다. 이러한 표준은 요청 또는 응답을 구성하는 비트 스트림을 프로토콜 데이터 단위(PDU)라고 하는 개별 패키지로 분할하는 방법 등을 정의합니다. 또한 각 PDU에 헤더 형태로 추가되는 메타데이터도 정의합니다. 예를 들어 이 메타데이터에는 출발지 호스트와 목적지 호스트의 주소가 지정될 수 있습니다.
네트워크 기능의 여러 측면을 서로 다른 계층에 할당하면 각 계층의 처리가 단순해집니다. 프로토콜은 자체 계층의 PDU를 처리하는 방법과, 인접 계층의 프로토콜이 해당 계층의 데이터 분할 수준에 맞게 PDU를 다시 패키징할 수 있도록 헤더에 포함해야 할 메타데이터만 알면 되기 때문입니다.
월드 와이드 웹 트래픽을 처리하는 기본 프로토콜(통칭 인터넷 프로토콜(IP) 스위트이라고 함) 간의 네트워크 기능 분담은 OSI 모델과 정확히 일치하지 않습니다. 이는 IP 스위트가 최종 OSI 모델이 1984년에 발표되기 전에 정의되고 구현되었기 때문입니다. 그럼에도 IP 스위트의 다양한 프로토콜은 OSI 계층에 대략 대응하는 고유한 기능을 수행합니다.
각 계층에는 여러 프로토콜이 정의되어 있지만, 웹사이트 트래픽의 부하 분산과 관련된 프로토콜 및 계층은 다음과 같습니다:
- 인터넷 프로토콜(IP)은 인터네트워크 계층(계층 3)에서 작동합니다. 이 계층의 PDU는 패킷이라고 하며, IP는 출발지 호스트에서 목적지 호스트로 패킷을 전달하는 역할을 합니다. 일반적으로 이 과정에서 인터넷을 구성하는 여러 소규모 네트워크의 경계를 넘나듭니다. 인터넷에 직접 연결된 각 장치에는 고유한 IP 주소가 있으며, 이 주소는 패킷을 수신할 장치를 찾는 데 사용됩니다.
- 전송 제어 프로토콜(TCP)은 전송 계층(계층 4)에서 작동합니다. TCP는 브라우저가 실행되는 호스트와 서버 애플리케이션이 실행되는 호스트 사이에 사실상 가상 연결을 생성합니다. 네트워크는 본질적으로 신뢰성이 낮기 때문에 IP 패킷이 손실되거나 손상되거나 순서가 뒤바뀌어 도착할 수 있습니다. TCP에는 이러한 오류를 수정하여 IP 패킷 스트림을 신뢰할 수 있는 통신 채널로 변환하는 메커니즘이 있습니다. 여러 애플리케이션이 실행되는 호스트에서 올바른 애플리케이션으로 전달될 수 있도록 각 애플리케이션에는 고유한 TCP 포트 번호가 할당됩니다.
- 하이퍼텍스트 전송 프로토콜(HTTP)은 애플리케이션 계층(7계층)에서 작동합니다. HTTP는 웹 브라우저와 웹 서버(또는 HTTP 인코딩을 이해하는 모든 애플리케이션) 간의 통신을 위해 데이터를 인코딩하는 방식을 정의합니다.
이 목록에서 알 수 있듯이 인터넷 트래픽의 “계층 4 부하 분산”이라는 표현은 편의상 줄여 부르는 말이며, 더 정확한 용어는 “계층 3/4 부하 분산”입니다. 부하 분산 장치가 출발지 및 목적지 서버의 IP 주소(계층 3)와 애플리케이션의 TCP 포트 번호(계층 4)를 모두 기준으로 판단하기 때문입니다. “계층 7 부하 분산”을 더 정확히 표현하면 “계층 5~7 부하 분산”이라고 할 수 있습니다. HTTP가 OSI 계층 5, 6, 7의 기능을 결합하기 때문입니다.

