LVS

LVS server 구축

2010. 11. 6. 14:50


 

 IP 설정 및 구축

  ◇LVS server(ipvsdm) : LAN1 - IP Addr   : 220.70.2.xxx             >> Real address

                                                  - Netmask : 255.255.255.0

                                                  - Gateway : 220.70.2.254

                                                  - DNS       : 168.126.63.1

 

                                        LAN2 - IP Addr    : 192.168.1.1             >> Virtual address

                                                 - Netmask : 255.255.255.0

 

 ◇Real Server1      :     IP Addr   : 192.168.1.2

                                     Netmask : 255.255.255.0

                                    Gateway : 192.168.1.1

                                    DNS       : 192.168.1.1

 

 ◇Real Server2     :     IP Addr   : 192.168.1.3

                                     Netmask : 255.255.255.0

                                    Gateway : 192.168.1.1

                                    DNS       : 192.168.1.1

 





 

 LVS Server 설정

◇ipvsadm 설치

  # yum -y install ipvsadm

 

동작확인

# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

ProtProt LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

 

◇시스템을 통해 다른 시스템으로패킷이 포워딩 될수 있도록 수정

# vi  /etc/sysctl.conf

     net.ipv4.ip_forward=1

        -> 적용

            # sysctl -p



ipvsadm 구동

  # service  ipvsadm  start

 

ipvsadm 설정

# ipvsadm -A -t  220.70.2.xxx:80 -s rr

# ipvsadm -a -t  220.70.2.xxx:80 -r 192.168.1.2:80 -m

# ipvsadm -a -t  220.70.2.xxx:80 -r 192.168.1.3:80 -m

                                                                       >> -m : 마스커레이드 방법 사용

 

>>> 목록 저장 - SELinux를 disabled 시켜야 함.

    #service ipvsadm save


SELinux disabled :
  #vim /etc/selinux/config

line#7  SELINUX=enforcing    -->> SELINUX=disabled 로 수정



 

ipvsadm 설정 확인

# ipvsadm -L

IP Virtual Server version 1.2.11.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 220.70.2.x:http rr

-> 192.168.1.2:http Route 1 0 0

-> 192.168.1.3:http Route 1 0 0

 

 

 REAL Server 설정

server 페이지 만들기

# vim /var/www/html/index.html

<내용 입력, 저장 후 종료(wq)>

 

server 구동

 # service httpd start

 

 

 

 

 

 

 

 

 

1. ipvsadm의 기본 문법

- 서비스

ipvsadm [명령] [프로토콜 옵션] [서비스] [스케줄링 방법] [세션유지 옵션]

 

- 리얼서버

ipvsadm [명령] [프로토콜 옵션] [서비스] -r [리얼서버 옵션] [가중치 옵션]

 

서비스/리얼서버 관련 >명령<

-A : 서비스 추가

-E : 서비스 수정

-D : 서비스 삭제

-a : 리얼서버 추가

-e : 리얼서버 수정

-d : 리얼서버 삭제

 

 

>프로토콜<

-t     TCP

-u    UDP

-f     firewall 서비스 추가(NAT 방식에서 사용)



기타

-s [ rr | wrr | lc | wlc | lblc | lblcr | dh | sh | sed | nq ] : 스케줄링 방법을 설정한다.

-p [timeout]: 세션 타임아웃 설정

-r [서버주소:서비스포트] : 리얼서버를 설정한다.

-w [가중치] : 가중치를 설정한다.

   

설정 확인

-L : 서비스/리얼서버 리스트를 출력한다.

-n : 숫자형식(호스트네임->아이피주소)로 출력한다.

-c : 현재 연결을 출력한다.

   

입/출력

-S : 표준출력(화면프린트)으로 현재 설정을 내보낸다.

-R : 표준입력을 통해 설정을 가져온다

 

 

2. 스케줄링 방식 정리(rr,wrr,lc,wlc)

ipvsadm에서 지원하는 스케줄링 방식은 총 8개가 있지만 이 문서에서는 네개의 방식만 정리.

(1) rr

round-robin방식은 가장 기본적인 스케줄링 방식으로 "순차적으로" 작업을 각각의 노드에 분배하는 방식이다. 만약 3 대의 노드(A,B,C)에 round robin 방식을 사용하면, A->B->C->A->B->C와 같이 실행이 된다.

 

 

(2) wrr

노드별로 가중치를 설정하여 작업을 순차적으로 분배하는 방식으로 여러대의 서버가 각각 성능이 다른경우 성능에 맞춰 가중치를 설정해 주면 성능이 낮은 서버에 과도한 부하가 걸리는 것을 방지할 수 있다.

 

 

(3) lc

"현재 활성화 되어있는(ESTABLISHED)" 접속량이 적은 서버부터 작업을 할당하는 방식으로, 불필요한 유휴자원이 발생하는 것을 막을 수 있다. 만약 접속이 오래 유지되지 않는 경우(http) 이 방식을 사용하면, A->A->A->A->...와 같이 리스트 위쪽에 있는 노드 위주로 작업이 할당된다.

 

 

(4) wlc

노드별로 가중치를 설정하여 접속량이 적은 서버부터 작업을 할당하는 방식으로 lc보다 효율적인 자원분배가 가능하다.

 

 

3. 타임아웃

(1)세션 타임아웃

ipvsadm에서 -p 옵션을 이용하여 어떤 서비스에 세션 타임아웃 시간을 설정하면, 한번 세션이 열린후 타임아웃 시간 내에 동일한 주소에서 세션이 다시 열렸을 때 처음에 접속했던 RIP로 접속이 된다.

   

(2)Idle 타임아웃

ipvsadm --set옵션을 이용하면 프로토콜의 Idle timeout 시간을 설정할 수 있다. timeout 시간이 지나면 연결이 끊어지게 된다. 예를 들어,

ivpsadm --set 10 20 30

로 설정을 해 주게 되고 ftp연결후 10초간 아무것도 하지 않으면 연결이 끊어진다. 이는 http와 같이 한번 보내면 해당 연결이 끊겨도 별 문제가 없는 서비스의 경우는 상관없지만, ftp, nfs와 같은 서비스를 사용할 때에는 신중하게 값을 설정해야 한다.

 





'LVS' 카테고리의 다른 글

LVS 구축에 관한 이론 (NAT 부터 WLC 까지)  (2) 2010.12.23
RR 알고리즘 개선 -> N번째 N번 부하 분산  (0) 2010.12.20
커널 소켓 프로그래밍  (0) 2010.11.20
모듈 프로그래밍  (1) 2010.11.10
ipvsadm 소스 파일 make하기  (1) 2010.11.09
 

New Post