웹 서비스 사용자가 늘어나면 서버 한 대만으로 모든 요청을 처리하기 어렵고, 고장 시 서비스가 완전히 멈출 수도 있습니다. L4 로드밸런서는 사용자의 연결을 여러 서버에 나누고, 정상인 서버에만 요청을 보내 서비스가 계속 운영되도록 돕습니다.
L4라는 이름의 뜻
네트워크 통신을 설명하는 OSI 모델에서 4계층은 TCP와 UDP가 동작하는 전송 계층입니다. L4 장비는 주로 목적지 IP와 포트, 프로토콜을 보고 연결을 처리합니다. 웹 서비스의 TCP 443, DNS의 UDP 53처럼 서비스는 약속된 포트를 사용합니다.
VIP와 실제 서버
- VIP: 사용자가 접속하는 대표 IP 주소입니다.
- Real Server: 실제 요청을 처리하는 뒤쪽 서버입니다.
- Pool: 같은 서비스를 제공하는 실제 서버의 묶음입니다.
- Health Check: 각 서버가 정상인지 주기적으로 확인하는 검사입니다.
사용자는 VIP 하나만 알면 됩니다. L4는 새 연결이 들어올 때 정상 상태인 실제 서버 하나를 선택해 전달합니다.
트래픽을 나누는 대표 방식
- 라운드 로빈: 서버를 순서대로 번갈아 선택합니다.
- 최소 연결: 현재 연결 수가 가장 적은 서버를 선택합니다.
- 가중치 방식: 성능이 좋은 서버에 더 많은 요청을 보냅니다.
- 출발지 기준: 같은 사용자가 같은 서버로 가도록 선택합니다.
헬스 체크가 중요한 이유
서버가 켜져 있다는 사실만으로 서비스가 정상인 것은 아닙니다. 포트 연결, HTTP 응답 코드, 특정 페이지 내용처럼 실제 서비스 상태를 확인해야 합니다. 검사 간격이 너무 길면 장애 서버로 요청이 계속 갈 수 있고, 너무 짧거나 조건이 엄격하면 잠깐의 지연에도 정상 서버를 제외할 수 있습니다.
세션 유지와 이중화
로그인 정보가 특정 서버에만 저장되는 서비스는 사용자의 요청이 다른 서버로 이동하면 로그인이 풀릴 수 있습니다. 이를 막기 위해 같은 사용자를 일정 시간 같은 서버로 보내는 세션 유지 기능을 사용합니다. 다만 가능하면 세션을 별도 저장소에 공유해 어느 서버에서도 처리할 수 있게 설계하는 편이 좋습니다.
L4 장비 자체가 한 대뿐이면 그 장비가 새로운 장애 지점이 됩니다. 그래서 보통 두 대를 구성하고 VIP 상태를 공유해 한 대가 고장 나면 다른 장비가 역할을 이어받도록 합니다.
장애 점검 순서
- VIP에 도달하는지와 필요한 포트가 열려 있는지 확인합니다.
- Pool에 등록된 실제 서버와 포트가 맞는지 봅니다.
- 헬스 체크가 실패한 이유를 확인합니다.
- L4에서 실제 서버까지, 실제 서버에서 응답이 돌아오는 경로를 확인합니다.
- 세션 유지, NAT, 방화벽 정책과 최근 변경 사항을 확인합니다.
L4 문제를 볼 때는 “사용자 → VIP → 실제 서버 → 사용자”의 왕복 경로를 그려 보면 이해하기 쉽습니다. 요청이 들어가는 길만이 아니라 응답이 돌아오는 길도 반드시 확인해야 합니다.