맨위로가기

리눅스 버추얼 서버

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

리눅스 버추얼 서버(LVS)는 다양한 부하 분산 스케줄링 알고리즘을 제공하여 트래픽을 효율적으로 분산하는 기술이다. 주요 구성 요소와 함께 라운드 로빈, 가중 라운드 로빈, 최소 연결, 가중 최소 연결, 위치 기반 최소 연결, 복제 기반 위치 최소 연결, 목적지 해싱, 소스 해싱, 최단 예상 지연, 큐 없음, 마그레브 해싱 등 여러 스케줄링 알고리즘을 지원한다. LVS는 LVS 디렉터, 실제 서버, 클라이언트 컴퓨터, VIP, RIP, DIP, CIP 등의 용어를 사용하며, 가상 HTTP 서버 구축과 같은 예시를 통해 구성 방법을 제시한다.

더 읽어볼만한 페이지

  • 자유 네트워크 소프트웨어 - 제로넷
    제로넷은 중앙 서버 없이 P2P 방식으로 운영되어 검열에 저항성을 가지며 사용자가 직접 콘텐츠를 공유할 수 있는 분산 네트워크 플랫폼으로, 웹사이트 개발이 가능하고 제로넷-컨서번시 포크를 통해 기능 추가 및 새로운 P2P 네트워크로의 마이그레이션이 진행 중이다.
  • 자유 네트워크 소프트웨어 - TightVNC
    TightVNC는 저대역폭 연결 성능 향상을 위해 개발된 VNC 소프트웨어로, 자체 기술인 "타이트 인코딩"을 사용하여 JPEG 및 zlib 압축 방식을 결합하고 파일 전송, 화면 업데이트 감지, 그림 확대/축소, 유닉스 환경에서의 자동 SSH 터널링 등의 추가 기능을 제공하며, TightVNC Portable Edition, 터보VNC, 타이거VNC 등의 파생 소프트웨어가 있다.
  • 병렬 컴퓨팅 - 슈퍼컴퓨터
    슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다.
  • 병렬 컴퓨팅 - 컴퓨터 클러스터
    컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
    브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
    광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
리눅스 버추얼 서버 - [IT 관련 정보]에 관한 문서
기본 정보
종류로드 밸런싱 소프트웨어
개발자Wensong Zhang 외
최초 릴리스1998년 5월
프로그래밍 언어C
운영 체제리눅스
라이선스GNU 일반 공중 사용 허가서
웹사이트Linux Virtual Server 공식 웹사이트

2. 역사

2022년 위키미디어 재단에서 사용되는 LVS.


LVS 프로젝트는 현재 고급 IP 부하 분산 소프트웨어(IPVS), 애플리케이션 레벨 부하 분산 소프트웨어(KTCPVS), 클러스터 관리 구성 요소 개발에 주력하고 있다.

  • IPVS: 리눅스 커널 내부에 구현된 고급 IP 부하 분산 소프트웨어이다. IP 가상 서버 코드는 리눅스 커널 메인라인 버전 2.4.x 이상에 통합되었다.[1]
  • KTCPVS: 리눅스 커널 내에서 애플리케이션 레벨 부하 분산을 구현하며, 2011년 2월 기준으로 여전히 개발 중이다.[2]


LVS는 웹, 이메일, 미디어 및 VoIP 서비스와 같이 확장성이 뛰어나고 고가용성 클러스터를 갖춘 네트워크 서비스를 구축하는 데 사용될 수 있다. 또한, 확장 가능한 네트워크 서비스를 대규모의 안정적인 전자 상거래 또는 전자 정부 애플리케이션에 통합하는 데 활용될 수 있다. LVS 기반 솔루션은 이미 위키백과를 포함하여 전 세계 많은 실제 애플리케이션에 배포되었다.

LVS 구성 요소는 리눅스 넷필터 프레임워크에 의존하며, 소스 코드는 리눅스 커널 소스 내의 `net/netfilter/ipvs` 하위 디렉토리에서 확인할 수 있다. LVS는 레이어 7 패킷을 검사하여 UDP, TCP 레이어 4 프로토콜과 FTP 수동 연결을 처리할 수 있다. `/proc` 디렉토리에 카운터 계층 구조를 제공한다.

LVS를 구성하는 데 사용되는 유저랜드 유틸리티 프로그램은 ipvsadm이며, 실행하려면 슈퍼유저 권한이 필요하다.

3. 구성 요소

위키미디어에 사용되는 LVS


LVS 프로젝트의 주요 작업은 고급 IP 부하 분산 소프트웨어(IPVS), 애플리케이션 레벨 부하 분산 소프트웨어(KTCPVS), 클러스터 관리 구성 요소를 개발하는 것이다.

  • IPVS: 리눅스 커널 내부에 구현된 고급 IP 부하 분산 소프트웨어이다. IP 가상 서버 코드는 리눅스 커널 메인라인 버전 2.4.x 이상에 통합되었다.[1]
  • KTCPVS: 리눅스 커널 내에서 애플리케이션 레벨 부하 분산을 구현하며, 여전히 개발 중이다.[2]


LVS 구성 요소는 리눅스 넷필터 프레임워크에 의존하며, 소스 코드는 리눅스 커널 소스 내의 net/netfilter/ipvs 하위 디렉토리에서 찾을 수 있다. LVS는 레이어 7 패킷을 검사하여 UDP, TCP 레이어 4 프로토콜과 FTP 수동 연결을 처리할 수 있다. 또한 /proc 디렉토리에 카운터 계층 구조를 제공한다.

LVS를 구성하는 데 사용되는 유저랜드 유틸리티 프로그램은 ipvsadm이며, 실행하려면 슈퍼유저 권한이 필요하다.

4. 스케줄링 알고리즘

LVS는 다양한 부하 분산 스케줄링 알고리즘을 구현하고 있으며, 각 알고리즘과 관련된 커널 소스 파일은 다음과 같다.[3]

스케줄링 알고리즘관련 소스 파일
라운드 로빈ip_vs_rr.c
가중 라운드 로빈ip_vs_wrr.c
최소 연결ip_vs_lc.c
가중 최소 연결ip_vs_wlc.c
위치 기반 최소 연결ip_vs_lblc.c
복제 기반 위치 최소 연결ip_vs_lblcr.c
목적지 해싱ip_vs_dh.c
소스 해싱ip_vs_sh.c
최단 예상 지연ip_vs_sed.c
큐 없음ip_vs_nq.c
마그레브 해싱ip_vs_mh.c


4. 1. 라운드 로빈 (Round Robin)

리눅스 버추얼 서버(LVS)가 구현하는 여러 부하 분산 스케줄러 중 하나이다.[3] 라운드 로빈 스케줄러의 관련 소스 코드 파일은 ip_vs_rr.c이다.[3]

4. 2. 가중 라운드 로빈 (Weighted Round Robin)

가중 라운드 로빈(Weighted Round-robin)은 LVS에서 제공하는 부하 분산 스케줄링 알고리즘 중 하나이다.[3] 이 스케줄러의 구현은 리눅스 커널 소스 파일 ip_vs_wrr.c에서 찾을 수 있다.[3]

4. 3. 최소 연결 (Least Connection)

리눅스 버추얼 서버(LVS)는 여러 부하 분산 스케줄러를 구현하며, 그중 하나로 최소 연결(Least-connection) 스케줄러가 있다.[3][6] 이 스케줄러의 관련 소스 파일은 ip_vs_lc.c이다.[3][6]

4. 4. 가중 최소 연결 (Weighted Least Connection)

LVS에서 사용하는 부하 분산 스케줄링 알고리즘 중 하나이다. 관련 소스 파일은 ip_vs_wlc.c이다.[3]

4. 5. 위치 기반 최소 연결 (Locality-Based Least Connection)

리눅스 버추얼 서버(LVS)는 다양한 부하 분산 스케줄링 알고리즘을 제공하며, 그중 하나로 위치 기반 최소 연결(Locality-Based Least Connection) 방식을 지원한다.[3] 이 스케줄러의 커널 소스 코드는 'ip_vs_lblc.c' 파일에 구현되어 있다.[3]

또한, 복제(Replication) 기능을 추가하여 개선한 복제 기반 위치 최소 연결(Locality-Based Least Connection with Replication) 방식도 있으며, 관련 소스 코드는 'ip_vs_lblcr.c' 파일이다.[3]

4. 6. 복제 기반 위치 최소 연결 (Locality-Based Least Connection with Replication)

복제 기반 위치 최소 연결(Locality-based least-connection with replicationeng)은 리눅스 버추얼 서버(LVS)에서 제공하는 부하 분산 스케줄링 알고리즘 중 하나이다.[3] 관련 커널 소스 파일은 ip_vs_lblcr.c이다.[3]

4. 7. 목적지 해싱 (Destination Hashing)

LVS가 제공하는 부하 분산 스케줄러 중 하나로, 관련 소스 파일은 'ip_vs_dh.c'이다.[3]

4. 8. 소스 해싱 (Source Hashing)

소스 해싱(Source Hashing)은 리눅스 버추얼 서버(LVS)에서 지원하는 부하 분산 스케줄링 알고리즘 중 하나이다.[3][6] 이 알고리즘의 구현과 관련된 소스 코드 파일은 ip_vs_sh.c이다.[3][6]

4. 9. 최단 예상 지연 (Shortest Expected Delay)

최단 예상 지연(Shortest Expected Delay)은 LVS에서 구현된 부하 분산 스케줄링 알고리즘 중 하나이다.[3][6] 이 스케줄러의 구현은 리눅스 커널 소스 파일 ip_vs_sed.c에서 찾아볼 수 있다.[3][6]

4. 10. 큐 없음 (Never Queue)

`큐 없음(Never queue)`은 LVS에서 제공하는 부하 분산 스케줄링 알고리즘 중 하나이다.[3] 관련 리눅스 커널 소스 파일은 ip_vs_nq.c이다.[3]

4. 11. 마그레브 해싱 (Maglev Hashing)

마그레브 해싱(Maglev hashing)은 리눅스 버추얼 서버(LVS)에서 구현된 부하 분산 스케줄러 중 하나이다. 관련 소스 파일은 ip_vs_mh.c이다.[3]

5. 용어

LVS에서 일반적으로 사용되는 용어는 다음과 같다.[4]

LVS 관련 주요 용어
용어설명
LVS 디렉터 (LVS director)서비스에 대한 모든 수신 클라이언트 요청을 받아 특정 "실제 서버"로 요청을 전달하여 처리하는 로드 밸런서이다.
실제 서버 (Real servers)클러스터를 대신하여 서비스를 제공하는 데 사용되는 LVS 클러스터를 구성하는 노드이다.
클라이언트 컴퓨터 (Client computers)가상 서버에서 서비스를 요청하는 컴퓨터이다.
VIP (가상 IP 주소)디렉터가 클라이언트 컴퓨터에 서비스를 제공하는 데 사용하는 IP 주소이다.
RIP (실제 IP 주소)클러스터 노드에 연결하는 데 사용되는 IP 주소이다.
DIP (디렉터 IP 주소)디렉터가 실제 IP 주소 네트워크에 연결하는 데 사용하는 IP 주소이다.
CIP (클라이언트 IP 주소)클러스터로 전송되는 요청에 대한 소스 IP 주소로 사용하는, 클라이언트 컴퓨터에 할당된 IP 주소이다.


6. LVS 구성 예시



LVS를 구성하기 위해서는 유저랜드 유틸리티 프로그램인 `ipvsadm`을 사용하며, 이를 실행하려면 슈퍼유저 권한이 필요하다.

아래는 두 대의 실제 서버를 사용하여 가상의 HTTP 서버를 구축하는 예시이다.



ipvsadm -A -t 192.168.0.1:80 -s rr

ipvsadm -a -t 192.168.0.1:80 -r 172.16.0.1:80 -m

ipvsadm -a -t 192.168.0.1:80 -r 172.16.0.2:80 -m


  • 첫 번째 명령어는 가상 서버에 IP 주소 192.168.0.1TCP 포트 80번을 할당한다.
  • 부하 분산을 위해 선택된 스케줄링 알고리즘은 라운드 로빈(-s rr) 방식이다.
  • 두 번째와 세 번째 명령어는 실제 서버의 IP 주소(172.16.0.1, 172.16.0.2)를 LVS 설정에 추가하는 것이다.
  • 전달되는 네트워크 패킷은 마스킹(-m, NAT 방식) 처리된다.[5]


위에서 구성한 LVS 설정의 상태를 조회하려면 다음 명령어를 사용한다.



# ipvsadm -L -n

IP Virtual Server version 1.0.8 (size=65536)

Prot LocalAddress:Port Scheduler Flags

  • > RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 192.168.0.1:80 rr

  • > 172.16.0.2:80 Masq 1 3 1
  • > 172.16.0.1:80 Masq 1 4 0


참조

[1] 웹사이트 IPVS Software - Advanced Layer-4 Switching http://www.linuxvirt[...] linuxvirtualserver.org 2011-02-08
[2] 웹사이트 KTCPVS Software - Application-Level Load Balancing http://www.linuxvirt[...] Linuxvirtualserver.org 2011-02-08
[3] 웹사이트 Job Scheduling Algorithms in Linux Virtual Server http://www.linuxvirt[...] linuxvirtualserver.org 2011-02-08
[4] 웹사이트 Linux Virtual Server: Load Balance Your Networked Services http://bobcares.com/[...] bobcares.com 2013-11-24
[5] 뉴스 Understanding Virtual Server https://xaro.net/blo[...] 2023-06-18
[6] 웹인용 Job Scheduling Algorithms in Linux Virtual Server http://www.linuxvirt[...] linuxvirtualserver.org 2011-02-08
[7] 웹인용 Linux Virtual Server: Load Balance Your Networked Services http://bobcares.com/[...] bobcares.com 2013-11-24



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com