리눅스 버추얼 서버

리눅스 버추얼 서버(Linux Virtual Server, 약자: LVS)는 리눅스 커널에 통합된 오픈 소스 IP 기반 로드 밸런싱 및 클러스터링 솔루션이다. LVS는 하나의 가상 IP 주소(VIP)를 통해 다수의 실제 서버(실제 IP, Real Server)로 트래픽을 분산시켜 고가용성·고성능 서비스를 제공한다.

개요

  • 구성 요소

    • IPVS(IP Virtual Server): 커널 레벨에서 패킷을 가상 서버와 실제 서버 사이에 전송하는 모듈이며, ipvsadm 명령을 통해 설정한다.
    • 디렉터리(Director): 클라이언트 요청을 받아 실제 서버로 전달하는 로드밸런싱 노드. 디렉터리는 일반적인 리눅스 서버로 구현된다.
    • 실제 서버(Real 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년까지 확인된 공개 자료에 기반한다.)

둘러보기

더 찾아볼 만한 주제