강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스 버퓨얼 서버 프로젝트

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle65.gif

번역 : 김미경 /mee@linuxlab.co.kr
원문 : wensong Exp [http://proxy.iinchina.net/~wensong/ippfvs]

 

1. 버츄얼 서버?

리눅스 버츄얼서버는 리눅스 오퍼레이팅 시스템에 부하 평형기를 가지고 있는 실제 서버로 구성되어진 매우 확장성이 높고 유용한 서버이다. 클러스터의 구조는 일반사용자에게는 투명하다. 일반 사용자는 하나의 가상 서버만 인식할 수 있다. 아래 그림을 보라.

실제 서버는 고속 랜에 의해서 또는 지역적으로 분산된 WAN에 의해 연결될 수 있다. 실제 서버의 전면은 부하 평형기인데 이는 다른 서버들에 대한 요청에 대해 스케쥴을 관리하고 클러스터의 서비스를 일치하게 만들어 한 개의 IP주소에 대해 가상 서비스가 이루어 지게 한다.

 

2. 리눅스 버츄얼서버의 응용

리눅스 버츄얼서버는 확장 웹서버, 메일 혹은 미디어 서비스 같은 고용량, 초고속 네트워크 서비스를 제공할 수 있다. 확장성은 클러스터에서 노드를 제거하거나 더해서 투명하게 이루어진다. 높은 가동성은 하드웨어 실패나 데몬 실패를 감지하고 시스템을 재배치함으로써 보장된다.

 

3. 목표

리눅스 가상서버의 기본적인 목표는 고성능 고가동성 서버이며 클러스터를 기반으로 높은 확장성과 신뢰성으로 갖는 간편하게 구축할 수 있는 서버를 만드는 것이다.

 

4. 버츄얼 서버 작동 원리

버츄얼서버에는 3가지 방법이 있다. LinuxDirector에 3개의 IP 부하 평준화 기술이 있다. (패킷 포워딩 기법). 그들은 NAT를 통한 버츄얼 서버, IP 턴넬링, 직접 라우팅 방식 버츄얼서버이다. 이들이 작동하는 원리와 구성은 3가지로 나뉘어 설명한다. 그리고 커널을 어떻게 생성하고 사용하는지 자세하게 설명하였다.

* Virtual Server via NAT
* Virtual Server via IP Tunneling
* Virtual Server via Direct Routing

다음은 NAT(network Address Translation), 턴넬링(TR), 직접라우팅을 비교한 표이다.
 

 

NAT

TUN

DR

서버

계약 없음

터넬링

비ARP 장치

서버 네트워크

사적

LAN/WAN

LAN

서버 숫자

적음(10~20)

많음

많음

서버 게이트웨이

부하평형기

자신의 라우터

자신의 라우터

 

4.1 NAT를 이용한 버츄얼 서버

NAT 버츄얼서버의 유리한점은 실제 서버들은 TCP/IP 프로토콜을 지원하는 어떤 운영체제도 사용할 수 있다는 점이다. 실제 서버에는 내부 주소가 부여되고 부하평형기 (load balancer) 에만 공인 IP가 필요하다.

NAT 버츄얼서버의 단점은 확장성에 한계가 있다는 점이다. 부하평형기는 서버의 수가 20 이상일 때 병목으로 작용한다. 왜냐하면 요구하는 패킷과 응답하는 패킷이 모두 부하평형기에서 재구성 되야 하기 때문이다. TCP 패킷의 평균길이가 536 바이트(Bytes)라면 한 개의 패킷을 재구성하는데 소요되는 시간은 평균 60 us 이고 (펜티엄 프로세서일 경우. 고성능 프로세서라면 단축될 수 있다) 부하평형기의 최대 처리속도는 8.93 Mbytes/s 이다. 실제 서버의 평균 처리량이 400K bytes/s 라면 부하평형기는 22개의 실제 서버들을 관리할 수 있다.

NAT 버츄얼서버는 많은 서버의 용량을 지원한다. 부하 평형기가 병목현상을 일으켰을 때 두 가지 해결 방법이 있는데 한가지는 혼합 방식 접근이고 다른 한가지는 턴넬링이나 직접라우팅 방법이다.

DNS 혼합방식은 자신의 서버 클러스터를 갖는 많은 부하평형기가 있다. 부하평형기는 Round-Round DNS에 의하여 하나의 도메인네임 그룹으로 구성된다. 높은 확장성을 필요로 하면 턴넬링이나 직접라우팅을 사용할 수 있고 중첩 부하 평형방식도 가능하다. 이 경우 맨 앞단은 턴넬링 혹은 직접라우팅 평형기이고 2번 계층에 여러 개의 NAT 부하평형기가 위치하면 이들이 자신의 클러스터를 갖는다.

 

4.2. IP 턴넬링 버츄얼서버

NAT 버츄얼서버는 요청과 응답 패킷이 모두 부하평형기를 통과한다. 서버의 노드가 20이상 증가할 때 부하평형기가 병목 현상을 일으킨다. 왜냐하면 네트워크 인터페이스의 처리속도에는 한계가 있기 때문이다. 우리는 종종 인터넷 서비스에서 요청 패킷은 짧고 응답 패킷은 매우 많은 것을 볼 수 있다.

턴넬링의 경우는 부하평형기는 요청에 대해 실제 서버의 지정만을 담당하고 실제 서버가 직접 사용자에게 응답을 한다. 따라서 부하평형기는 많은 양의 요청을 처리할 수 있다. 100 개 이상의 실제 서버를 관리할 수 있다. 턴넬링에서는 부하평형기는 병목요인이 아니다. 턴넬링에서는 한 개의 부하평형기가 관리하는 서버 노드를 상당히 늘릴 수 있다. 비록 부하평형기가 100Mbps 전이 중 네트워크 인터페이스를 갖고 있어도 버츄얼서버의 최대 용량은 1 Gbps 이상이 가능하다.

IP 턴넬링 기능은 고성능 버츄얼서버 구성에 사용할 수 있다. IP 턴넬링 기능은 특히 고성능 프락시 서버의 생성에 적합하다. 프락시 서버는 대상을 가져오기 위해 직접 인터넷에 연결하고 이를 사용자에게 제공한다.

그러나 모든 서버는 IP 턴넬링 프로토콜을 설정해 주어야 한다. 나는 리눅스에서 IP 턴넬링을 테스트했다. 다른 OS 시스템에서 IP tunneling 을 가지고 버츄얼서버를 작동시킨다면 나에게 알려주십시오.

 

4.3 직접 라우팅 버츄얼서버

턴넬링에서와 같이 Linux Director는 직접 라우팅 방식도 연결의 절반만 처리한다. 그리고 반응 패킷은 사용자에게 별도의 네트워크 경로로 도달한다.. 이것은 버츄얼서버의 용량을 크게 증가 시킬 수 있다.
턴넬링에 비해 이 기법은 턴넬링 부하(이 부하가 크지는 않다.)가 없다는 이점이 있다. 그러나 부하평형기와 서버의 인터페이스카드가 물리적으로 같은 세그먼트에 있어야 한다.

 

5. 소프트웨어

5.1리눅스 버츄얼서버 패치

버츄얼서버 패치의 상태는 다음과 같다; 커늘 2.2로 컴파일된 패치 v0.9.7은 사용 가능하다. 커널 2.2로 컴파일된 패치 0.8.3은 사용할 수 있을 만큼 안정되었지만 여러 개의 동시 서비스에 대해 잘못 계산 오류가 있다. 커늘 2.0 패치는 약간 오래 되었다.

변화표는 아래와 같다.
 

* Virtual Server patch for Linux 2.2.15 - Version 0.9.12 - May 10, 2000
* Virtual Server patch for Linux 2.2.14 - Version 0.9.12 - May 2, 2000
* Virtual Server patch for Linux 2.2.14 - Version 0.9.11 - April 17, 2000
* Virtual Server patch for Linux 2.2.14 - Version 0.9.10 - April 9, 2000
* Virtual Server patch for Linux 2.2.14 - Version 0.9.9 - March 16, 2000
* Virtual Server patch for Linux 2.2.14 - Version 0.9.8 - March 13, 2000
* Virtual Server patch for Linux 2.2.14 - Version 0.9.7 - January 19, 2000
* Virtual Server patch for Linux 2.2.13 - Version 0.9.7 - December 22, 1999
* Virtual Server patch for Linux 2.2.12 - Version 0.8.3 - September 8, 1999

 

5.2 버츄얼서버의 다른 구성 소프트웨어

1) Linux-HA heartbeat package
    (http://www.linux-ha.org/)

이 패키지는 2-노드 클러스터를 모니터해 그들 중에 하나가 죽었을 때 알려준다. 그리고 IP address 를 받은 상태에서 “fake”로부터 Horms’s code 를 가진다. 시리얼, UDP broadcast, PPP/UDP heartbeats 등을 사용할 수 있다.

2) Mon(http://www.kernel.org/software/mon/)

이것은 일반적인 목적의 자원 모니터링 시스템이다. 버츄얼서버 클러스터 관리에 사용될 수 있다.

3)lvs-gui (http://www.au.vergenet.net/linux/lvs-gui/)

lvs-gui 는 가상서버가 버츄얼서버 커널 패치를 한 서버들의 구성을 가능하게 해준다. 최신의 ipvsadm RPMS도 있다.

4) Piranha(http://www.redhat.com/support/wpapers/piranha/)

Piranha 는 Red Hat Inc.의 클러스터링 제품인데 이것은 버츄얼서버 커널 코드와 GUI 에 기반한 구성툴과 모니터링툴을 갖고 있다.

레드햇 웹사이트에서 Piranha HOWTO를 볼 수 있다. piranha 의 RPMS 와 SRPMS 는 레드햇 6.1배포판에 들어있고 ftp.redhat.com 에서 다운 받을 수 있다.

$Id: index.html,v 1.11 2000/05/02 10:41:44 wensong Exp $


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,045 명
  • 현재 강좌수 :  35,861 개
  • 현재 접속자 :  82 명