본문 바로가기

기술자료/기술운영자료

LVS(Linux Virtual Server)

1. 개요

 

 

  A. 리눅스 가상 서버(LVS)

 

 

- 한대의 서버로 증가하는 인터넷 사용자를 처리하기가 힘들어 지면서 고 가용성 서버를 구축하기 위해

 

 

리눅스 머신을 로드 밸런스 하도록 해주는 운영 시스템

 

 

만약 하나의 노드에서 처리량이 너무 많아서 서비스가 불가능 할 경우 간단히 하나의 노드를 병렬

 

 

구성으로 추가함으로써 부하분산을 하도록 하는 것을 말한다.

 

 

 

 

  B. 참고사이트

 

 

    - http://linuxvirtualserver.org

 

 

 

 

 

2. 설치

 

 

A. 설치환경

 

 

- ipvsadm 을 이용한 설치

 

 

  - Direct routing 방식으로 진행

 

 

  - LVS Server : CentOS 6.4 64bit / IP : 192.168.2.113 / VIP : 192.168.2.110

 

   Real Server1 : CentOS 6.4 64bit / IP : 192.168.2.111

 

   Real Server2 : CentOS 6.4 64bit / IP : 192.168.2.112

 

 

 

B. LVS Server 설치

 

 

    - ipvsadm 설치

 

 

      # yum install ipvsadm

 

    - 확인

 

 

      # ipvsadm –L

      그림입니다.
원본 그림의 이름: mem000022740136.tmp
원본 그림의 크기: 가로 604pixel, 세로 120pixel   

 

- LVS Server에 VIP 설정

 

 

      # ifconfig eth0:1 192.168.2.110 netmask 255.255.255.0 up

 

      # ifconfig

 

 

 

      그림입니다.
원본 그림의 이름: mem000022740137.tmp
원본 그림의 크기: 가로 609pixel, 세로 105pixel 

 

- 해당 시스템을 통해 패킷이 포워딩 될 수 있도록 수정

 

 

  # vi /etc/sysctl.conf

 

        net.ipv4.ip_forward=1

 

 

      # sysctl –p

 

    - Round Robin 스케쥴링으로 설정(스케쥴러 종류는 참고내용 확인)

 

 

      # ipvsadm -A -t 192.168.2.110:80 -s rr

 

        > -A : 서비스추가

 

 

        > -t : tcp

 

        > 192.168.2.110:80 : IP:PORT

 

        > -s rr : 스케쥴러 방식

 

 

    - Real Server 설정

 

 

      # ipvsadm -a -t 192.168.2.110:80 -r 192.168.2.111:80 -g

 

      # ipvsadm -a -t 192.168.2.110:80 -r 192.168.2.112:80 -g

 

 

    - 설정확인

 

 

      # ipvsadm

 

 

 

     그림입니다.
원본 그림의 이름: mem000022740138.tmp
원본 그림의 크기: 가로 609pixel, 세로 148pixel   

    - 재부팅 후에도 설정값을 불러 오기위해 설정

 

 

      # /etc/rc.d/init.d/ipvsadm save

 

      # chkconfig ipvsadm on

 

      # vi /etc/rc.local

 

        > ifconfig eth0:1 192.168.2.110 netmask 255.255.255.0 up 추가

 

 

 

 

C. Real Server 설치

 

 

- 포워딩 될 수 있도록 수정

 

 

# vi /etc/sysctl.conf 수정

 

 

      net.ipv4.ip_forward=1

 

      # sysctl –p

 

    - Real Server 에 VIP 설정

 

 

# ifconfig eth0:1 192.168.2.110 netmask 255.255.255.0 up

 

    - 클라이언트가 가상 IP 에 요청했을 때 동일 네트워크에 Virtual 2개 이상 갖고 있기 때문에 경우에 따라서

 

 

      Real Server에서 응답을 하는 경우가 있다. Arptables_jf 를 이용해서 응답하지 않도록 설정해야 한다.

 

 

- arptables_jf 설치

 

 

      # yum install arptables_jf

 

      # arptables -A IN -d 192.168.2.110 -j DROP

 

      # arptables -A OUT -d 192.168.2.110 -j mangle --mangle-ip-s 192.168.2.111

     - loopback 설정

      #ifconfig lo:0 192.168.2.110 netmask 255.255.255.255 broadcast 192.168.2.110 up
      #route add -host 192.168.2.110 dev lo:0

 

   

 

 

 

- 재부팅 후에도 설정값을 불러 오기위해 설정

 

 

      # /etc/rc.d/init.d/arptables_jf save

 

      # chkconfig arptables_jk on

 

      # vi /etc/rc.local

 

      > ifconfig eth0:1 192.168.2.110 netmask 255.255.255.0 up 추가

 

 

 

 

 D. Real Server 2 설치는 Real Server 1과 동일

 

 

 

 

 

 

3. 테스트

 

 

A. MS Stress Tool 을 사용하여 테스트 진행

 

 

    - 192.168.2.120 Client 에서 MS Stress Tool 로 VIP 로 접속

 

 

#ipvsadm

 

 

 

그림입니다.
원본 그림의 이름: mem000022740139.tmp
원본 그림의 크기: 가로 609pixel, 세로 147pixel

# ipvsadm –Lnc

 

 

 

        그림입니다.
원본 그림의 이름: mem00002274013a.tmp
원본 그림의 크기: 가로 609pixel, 세로 281pixel 

 

 

 

 

 

B. 세션 유지가 필요할 경우

 

 

- 스케쥴링 옵션에 –p 30 설정

 

 

# ipvsadm -A -t 192.168.2.110:80 -s rr –p 30

 

 

 

 

 그림입니다.
원본 그림의 이름: mem00002274013b.tmp
원본 그림의 크기: 가로 609pixel, 세로 146pixel

- 192.168.2.120 Client 에서 MS Stress Tool 로 VIP 로 접속

 

 

  # ipvsadm

 

 

 

      그림입니다.
원본 그림의 이름: mem00002274013c.tmp
원본 그림의 크기: 가로 609pixel, 세로 148pixel     

       # ipvsadm –Lnc

 

 

 

      그림입니다.
원본 그림의 이름: mem00002274013d.tmp
원본 그림의 크기: 가로 609pixel, 세로 335pixel 

 

 

   

 

 

 

 

 

4. 참고내용

 

 

 

A. LVS 스케쥴링 종류

- 라운드-로빈(round-robin) : 로드밸런서(L4스위치)에 들어오는 요청 패킷들을 차례대로 실제 서버에

할당하는 방식이다. 이 방식에서 실제 서버의 현재 부하 상황 등은 고려되지 않는다. 단지 차례대로

할당할 뿐이다. 하지만, 이렇게 하더라도 로드밸런싱을 위해 이전에 사용되던 라운드-로빈 DNS 방식에

의해 서버를 할당하는 방식에 비해서는 우수하다. 이유는 DNS방식은 한번 서버가 지정되면 해당 서버에

수많은 요청 패킷이 몰릴 수 있기 때문이다.

- 가중 라운드-로빈(weighted round-robin) : 가중 라운드-로빈 방식은 기본적으로 라운드-로빈 방식과

동일한데, 각 서버에 서로 다른 가중치를 주어서 할당하는 방식이다. 이 방식을 사용해야 하는 경우는

실제 서버들이 CPU의 수와 성능, 메모리 용량 등 서로 다른 성능을 가지고 있어서, 각 서버를 동등하게

취급할 수 없는 경우이다.

- 최소 연결(least connection) : 최소 연결 방식은 실제 서버들 중에서 현재 가장 적은 수의 요청을 처리하고

있는 서버를 선택하여 요청 패킷을 할당하는 방식이다. 이 방식은 실제 서버의 현재 부하 상황을 동적으로

판단하여 요청을 처리하기 때문에, 앞의 두 방식에 비해서 동적으로 우수한 부하 분산효과를 얻을 수 있다.

  - 가중 최소 연결(weighted least connection) : 가중 최소 연결방식은 기본적으로 최소 연결방식과 동일한데,

가중 라운드-로빈 방식과 마찬가지로 각 서버에 서로 다른 가중치를 주어서 할당하는 방식이다.

 

 

그림입니다.
원본 그림의 이름: mem00002274013e.tmp
원본 그림의 크기: 가로 500pixel, 세로 300pixel