리눅스 버추얼 서버(Linux Virtual Server, 약자: LVS)는 리눅스 커널에 통합된 오픈 소스 IP 기반 로드 밸런싱 및 클러스터링 솔루션이다. LVS는 하나의 가상 IP 주소(VIP)를 통해 다수의 실제 서버(실제 IP, Real Server)로 트래픽을 분산시켜 고가용성·고성능 서비스를 제공한다.
개요
-
구성 요소
- IPVS(IP Virtual Server): 커널 레벨에서 패킷을 가상 서버와 실제 서버 사이에 전송하는 모듈이며,
ipvsadm명령을 통해 설정한다. - 디렉터리(Director): 클라이언트 요청을 받아 실제 서버로 전달하는 로드밸런싱 노드. 디렉터리는 일반적인 리눅스 서버로 구현된다.
- 실제 서버(Real Server): 디렉터가 트래픽을 전달받아 실제 서비스를 제공하는 서버군.
- IPVS(IP Virtual Server): 커널 레벨에서 패킷을 가상 서버와 실제 서버 사이에 전송하는 모듈이며,
-
동작 방식
- NAT 모드(또는 Masquerading): 디렉터가 클라이언트와 실제 서버 사이에 중계 역할을 하며, 패킷의 소스·목적지를 변환한다.
- DR 모드(Direct Routing): 디렉터가 패킷을 실제 서버에 직접 전달하고, 실제 서버는 응답을 직접 클라이언트에게 전송한다.
- TUN 모드(Tunneling): IPIP 터널을 이용해 패킷을 전달한다.
-
스케줄링 알고리즘
- 라운드 로빈(Round Robin)
- 가중 라운드 로빈(Weighted Round Robin)
- 최소 연결(Least Connections)
- 가중 최소 연결(Weighted Least Connections) 등
역사
- 초기 개발: 1998년 중국 학자 Zhou Wensong(周文松)에 의해 시작되었으며, 이후 Linux 커뮤니티에 공개되었다.
- 커널 통합: 2001년 Linux 2.4 커널에 IPVS가 정식으로 포함되면서 광범위한 배포가 가능해졌다.
- 프로젝트: 현재는 LVS 프로젝트(https://github.com/lvsproject)에서 유지·보수되고 있다.
주요 활용 사례
- 대규모 웹 서비스·포털 사이트의 트래픽 분산
- 데이터베이스 클러스터 앞단에서의 부하 분산
- 클라우드 환경에서 가상 머신·컨테이너에 대한 로드 밸런싱
장점 및 제한점
-
장점
- 커널 레벨에서 동작하므로 높은 처리량과 낮은 레이턴시 제공
- 오픈 소스이며 자유롭게 커스터마이징 가능
- 다양한 스케줄링 정책과 운영 모드 지원
-
제한점
- 상태 저장형 세션 지속성(Sticky Session) 구현이 별도 설정을 필요로 함
- 복잡한 트래픽 분석·모니터링은 외부 도구(e.g., Keepalived, HAProxy)와 연동해야 함
관련 기술
- Keepalived: LVS와 연계하여 고가용성(HA) 및 VRRP(Virtual Router Redundancy Protocol) 기능을 제공하는 데몬.
- HAProxy: 애플리케이션 레벨 로드 밸런서로, LVS와 병행 사용되는 경우가 많다.
참고
- Linux Virtual Server 공식 문서 및 커널 매뉴얼
- “Linux Virtual Server: Load Balancing for Linux” (Zhou, 2001)
(※ 본 내용은 2024년까지 확인된 공개 자료에 기반한다.)