티스토리 뷰


궁핍한 서버관리자 분들에게 추천되는 방법이다. 돈 많으시면 그냥 L4 장비로 가십시요.ㅋㅋ 성능은 L4장비가 좋다. 셋팅하기위해서 아래와 같이 설정하겠다. 공인 아이피대신 그냥 사설아이피를 쓰겠다. 웹서비스를 위한 예제이다.
 
로드밸런싱 서버 IP : 192.168.1.10    eth0
▶ Real 서버 1번 IP   : 192.168.1.11    eth0 
▶ Real 서버 2번 IP   : 192.168.1.12    eth0
Virtual IP : 192.168.1.5 (DNS에 셋팅할 도메인과 맵핑할 Web IP 예를들어 192.168.1.5 = 
www.empas.com  ...ㅋ )
 
★ 로드밸런싱 서버 설정
LBSERVER# yum intall ipvsadm             ==> RPM으로 ipvsadm 설치
LBSERVER# ifconfig eth0:0 192.168.1.5 netmask 255.255.255.255 up  
                                                   ==> 물리 랜카드 하나에 2개 아이피셋팅 etho 192.168.1.10, eth0:0 192.168.1.5           
LBSERVER# ipvsadm -A -t 192.168.1.5:80 -s wlc
                                                             --라운드로빈(rr)-차례대로 리얼서버로                                                    
                                                             --가중라운드로빈(wrr)-라운드로빈+가중치                               
                                                             --최소연결(lc)-리얼 서버들중 가장 적은 수의 요청을 처리하는 서버 선택.
                                                             --가중최소연결(wlc)-최소연결+가중치                                   
LBSERVER# ipvsadm -a -t 192.168.1.5:80 -r 192.168.1.11:80 -g -w 5     ==> ipvs 테이블 설정
LBSERVER# ipvsadm -a -t 192.168.1.5:80 -r 192.168.1.12:80 -g -w 10
                                                 -a 추가, -t 대상타겟, -r 리소스 주소, -g 다이렉트 라우팅, -w 가중치 설정
LBSERVER# vi /etc/sysctl.conf
----------------------------------------------------------------
net.ipv4.ip_forward = 1               ===>  0을 1로 변경후 저장
----------------------------------------------------------------
LBSERVER# sysctl -p           ====> sysctl.conf 설정 적용    
LBSERVER# ipvsadm  ==>설정확인 , ipvsadm -C 설정 모두 삭제, ipvsadm -e -t ..설정 수정
----------------------------------------------------------------------
IP Virtual Server version 1.2.0 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  211.233.5.72:http wlc
  -> 211.233.5.71:http            Route   10      0          0        
  -> 211.233.5.70:http            Route   10      0          0  
----------------------------------------------------------------------

★ Real 1번 서버 설정 ★
Real_1# ifconfig lo:0 192.168.1.5 netmask 255.255.255.255 up
Real_1# vi /etc/sysctl.conf
-------------------------------------------------------------
net.ipv4.ip_forward = 1            ===>  0을 1로 변경
#linux-1 part
# ARP 문제 해결을위해 arp에 대한 응답 없음으로 설정(추가부분)
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
------------------------------------------------------------------
Real_1# sysctl -p       ====> sysctl.conf 설정 적용
Real_1# vi /usr/local/apache/conf/httpd.conf 에서 virtualhost를 가상아이피(192.168.1.5)로 설정을 한다.
 
★ Real 2번 서버 설정 ★
리얼서버 1번과 같이 설정한다.
 
확인하기
그리고 나서 로드밸런싱서버, 리얼 서버1, 리얼서버2 에서 /etc/rc.d/init.d/network restart 해준다.
당연히 웹서비스 로드밸런싱이기 때문에 리얼서버 1,2 번에는 웹이 돌아가야지 테스트 확인이가능하다.
리얼1에는 index.htm 파일에 리얼1번이라는 웹페이지를 만들어주고 리얼2에는 index.htm 파일에 리얼2번이라는 웹페이지를
만들어준다. 
이제 www.empas.com 도메인으로 접속하면 한번은 리얼1번에가따가 또 한번은 리얼2번으로 갈것이다.
위에서 지정한  rr, wrr, lc, wlc 를 용도에 맞게 바꿔 가면서 스케줄링을 하면된다.

[출처] 간단한 로드밸런싱 IPVSADM 설정 |작성자 삽질맨

 

 

[펌] ipvsadm 을 이용한 로드밸런싱 구성 하기

1) xxx.xxx.xxx.19, xxx.xxx.xxx.20, xxx.xxx.xxx.21번 서버는 거의 동일한 사양으로 구성

2) direct routing 방식으로 분산 서버에는 거의 부하가 걸리지 않음

3) round robin 스케쥴링으로 가중없이 균등 분산으로 구성

 

2. 기본 사양

1) OS는 su-linux 1.5 (커널 2.6.9) 버전으로 동일하게 테스트 되었다.

 

3. 부하분산서버 셋팅

1) #yum install ipvsadm

: su-linux에는 yum이 기본 설정되어 있다.

: ipvsadm 설치가 완료되면 더 수정할 것 없이 그대로 사용하면 된다.

2) #vi /etc/sysctl.conf

net.ipv4.ip_forward = 1 로 변경

(초기값은  net.ipv4.ip_forward = 0 이다.)

3) #sysctl -p

: 변경한 설정 파일을 적용해 준다.

4) #vi /etc/hosts

xxx.xxx.xxx.18   www.domain.com   wwwvip

xxx.xxx.xxx.20  www.domain.com   r1-web

xxx.xxx.xxx.20  www.domain.com   r2-web

위와 같이 등록해 주고 저장한다.

5) #vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE=eth0:0

ONBOOT=yes

BOOTPROTO=static

IPADDR=xxx.xxx.xxx.18

NETMASK=255.255.255.255

위와 같이 추가 후 저장한다.

6) 가상 랜카드 및 가상 아이피 설정 후 네트워크 데몬을 리로드해 주거나 아래의 명령어로 적용한다.

#ifconfig eth0:0 xxx.xxx.xxx.18 up 또는

#/etc/init.d/network restart

7) 로드밸런싱을 설정한다.

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

: 부하분산 서버의 가상 아이피와 포트를 지정하고, 어떤 스케쥴링을 사용할 것인지 지정한다. (마지막 옵션인 rr이 라운드로빈 방식)

#ipvsadm -a -t xxx.xxx.xxx.18:80 -r xxx.xxx.xxx.20:80 -g

#ipvsadm -a -t xxx.xxx.xxx.18:80 -r xxx.xxx.xxx.21:80 -g

8) #ipvsadm -L

: 제대로 작동하고 있는지 모니터링 해 본다.

 

4. 리얼서버 셋팅

1) #vi /etc/hosts

xxx.xxx.xxx.18   www.domain.com   wwwvip

xxx.xxx.xxx.20  www.domain.com   r1-web

xxx.xxx.xxx.20  www.domain.com   r2-web

위와 같이 등록해 주고 저장한다.

: 분산서버와 리얼서버 모두 동일하게 설정해 준다.

2) #vi /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

ONBOOT=yes

IPADDR=xxx.xxx.xxx.18

NETWORK=xxx.xxx.xxx.xxx

BROADCAST=xxx.xxx.xxx.xxx

NAME=loopback

위와 같이 저장하고 네트워트 데몬을 리로드 해 준다.

3) #vi /etc/sysconfig/network

: 네트워크 파일을 열어 아래와 같이 게이트웨이를 지정해 준다.

GATEWAYDEV=eth0

4) #vi /etc/sysctl.conf

#ARP Hidden configure

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

수정 후 sysctl -p 로 활성화

5) #arp -a

:위의 명령어로 실행 시 맥 어드레스가 분산서버의 맥어드레스로 나타나면 설정이 완료된 것임

 

5. 리얼서버 웹서버 시작

1) 리얼서버 두 대에서 웹서버를 실행할 때 테스트를 위해 각각 다른 페이지를 띄워둔다.

2) 가상IP를 통해 접근을 시도하면 순차적으로 리얼서버1번과 리얼서버2의 페이지를 볼 수 있다.

3) 만약 하나의 아이피에서 접근되는 세션을 일정 시간동안 유지하고 싶다면 아래 명령어로 옵션을 추가해 준다.

#ipvsadm -A -t xxx.xxx.xxx.18:80 -s -rr -p 300

: -p는 persistance 옵션으로 뒤에 지정해주는 시간(초) 만큼 세션을 접속한 리얼아이피로만 연결시켜준다.

: 단, 두 대의 리얼아이피 서버 중 한대에 문제가 생기면 위에 지정한 시간이 끝나기 전에는 다른 리얼아이피 페이지로 접근할 수 없기 때문에 페이지가 안보이는 문제가 생길 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크