Skip to content

리눅스 클러스터링 LVS(Linux Virtual Server)

조회 수 20448 추천 수 0 2009.11.04 18:17:27
리눅스 LVS세팅은 여러가지 방법이 있다. 

그중에 레드햇계열이라면 piranha를 통해 구축할수가 있다. 레드햇이던 센트os이던 처음 설치할때

클러스터부분을 체크하여 리눅스 설치를 해주면 설치완료후 따로 패키지 설치할게 없다.




@@piranha로 LVS 세팅해보자
기본적으로 apm에 + piranha라고 가정하자

# vi /etc/sysctl.conf             -- 파일을 열어 
net.ipv4.ip_forward = 0          -- 이부분을 1 으로 변경해주자
# sysctl -p                          -- 커널 파라미터 적용하기

그리고
ntsysv에서 avahi-daemon, haldaemon, hidd, ipvsadm, kudzu, modclustderd, piranha-gui. pulse은 체크하고
httpd는 체크해제 자동활성화가 되게 되면 piranha-gui 데몬과 충돌나게 된다.

piranha 패스워드설정
# /usr/sbin/piranha-passwd 
New Password: 
Verify: 
Updating password for user piranha

깔끔하게 서버 리부팅한번 해주고 ps -ef를 통해 piranha 데몬이 떠있는것을 볼수있다.
piranha 데몬 실행 스톱은 
# /etc/init.d/piranha-gui start/stop/restart 이다 

혹 데몬재시작시 서버네임관련된 에러가 뜬다면 /etc/sysconfig/ha/conf/httpd.conf 에서
적당한곳에 ServerName 을 적어주자 일반적인 httpd.conf와 똑같다.

[98]Address 이런 에러가 뜬다면 
# netstat -anp | grep piranha 에서 해당 데몬을 죽여버리자
LISTEN      2167/piranha_gui
# kill -9 2167


이제 웹으로 접속을 해보자 포트는 3636이다. 웹접속이 안된다면 호스트pc방화벽이나 서버의 iptables등 설정을 확인해보자
웹설정을 통해 lvs세팅을 할수가있다.

global setting -
Primary server public IP  : lvs서버의 공인ip (lvs서버의 실제 ip)
Primary server private IP  : nic가 두개이고 공인과 사설로 분리할경우 사설ip
Use network type  : 네트워크 타입설정
http://wiki.kldp.org/Translations/html/Virtual_Server-KLDP/index.htm 에 자세한 의미가 나와있다.

nat방식으로 하면 리얼서버엔 특별히 설정할것이 없지만
DR방식으로 하면 리얼서버에 설정해주는 부분이 있다.
/etc/sysctl.conf 에서

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

# for ipvs
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

# endof ipvs

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# sysctl -p   -- 적용


redundancy - lvs서버에 대한 이중화 설정이다.


virtual servers - (lvs서버의 가상ip)

Name : 가상서버를 구별할 이름 

Application port: 서비스에 사용할 포트 

Device: vip 에서 사용할 네트워크 장치 

Re-entry Time: 실제 서버에 고장일 난 경우 활성 LVS 라우터가 고장난 실제 서버를 다시 클러스터로 불러오기 위해 시도하는 초단위 주기 

Service timeout: 실제 서버가 활동을 멈춘 후 고장으로 판단되어 클러스터에서 제거될 때까지의 초단위 주기 

Persistence: 클라이언트로부터의 요청을 서비스하는 도중에 서버 관리자가 가상 서버로의 지속성 연결을 할 경우 연결 

타임아웃 제한이 만료되기 전에 허용되는 비활성 시간(초)


real server - (로드밸런싱이 되어질 웹서버들)


이렇게 웹에서 설정한 부분이 /etc/sysconfig/ha/lvs.cf 파일에 고스란히 저장이된다.


이제 LVS를 시작해보자

# /etc/init.d/pulse start

ps -ef를 통해 관련 프로세스 떠있는지 보자 pulse, lvs, nanny 등


해당로그는 /var/log/messages에 쌓인다.


레드햇 계열은 piranha로 인해 LVS와 HA 두가지 설정을 할수 있다.







@@이번엔 ipvsadm을 이용하여 구축 해보도록 하자

가상서버ip : 192.168.21.119
리얼서버ip : 192.168.21.100, 192.168.21.108

# yum install ipvsadm 으로 설치할수있다

설치가 되있다면 확인해보자
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn


lvs서버에서 가상ip를 설정해주자 (현재 사용중인 실제 ip말고 가상으로 사용할 ip)
# ifconfig eth0:1 192.168.21.119 netmask 255.255.255.0 up    --디바이스명이 eth0일때 가상디바이스 eth0:1를 만든다
# ifconfig   --확인

재부팅시 디바이스가 자동으로 올라오게 하려면
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 파일을 만들어주자 내용은 
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.21.119
NETMASK=255.255.255.0


# /etc/sysctl.conf
net.ipv4.ip_forward=0   -- 1로 변경해주자
# sysctl -p

ipvsadm 설정해주자
# ipvsadm -A -t 192.168.21.119:80 -s wlc

-A : 서비스를 추가한다는 옵션

-t : tcp 서비스 추가 /  ?u : udp, -f : fire wall

-IP:80 : ip/port

-s : 스케줄러 방식 선언

-wlc : weighted least-connection 알고리즘, -wrr : weighted round-robon, -rr, -lc


알고리즘에는 몇가지방식이 더있다.
Round robin -순차적 방식
                  -서버의 연결 대수나 반응시간 고려되지 않음
Weighted round robin  -가중치 기반 라운드 로빈
                                -서버마다 서로 다은 가중치를 지정
                                -서로 다른 시스템 운영시 효과적
                                -스케줄링 과부하가 적어 많은 서버 운영가능
                                -요청에 대한 부하가 많을 시 서버사이에 동적인 불균형 상태 발생 가능
Least-connection   -가장 접속이 적은 서버로 연결
                            -각 서버의 실제 접속한 숫자를 세어야 하는 동적 스케줄링
                            -접속부하가 큰 경우 효과적
                            -시스템이 다양할 시 부하분산 효과적이지 못함
                            -실제는 TCP TIME_WAIT 상태 때문에 아주 좋은 성능을 내기는 힘듬
Weighted least-connection    -가중치 기반 최소 접속 스케줄링
                                         -최소 접속 스케줄링의 일부분으로 각 실서버에 성능 가중치 할당



다음은 리얼서버에 arptables_jf 와 디바이스를 설정해주자

먼저 # yum install arptables_jf 설치해주자
Real Server에도 가상 IP를 설정해 주어야 하는데, 이렇게 되는 경우 클라인트가 가상 IP를 요청했을 때 동일 네트워크에 Virtual IP를 2개 이상 갖고 있기 때문에 경우에 따라서 Real Server에서 응답을 주는 경우가 있다고 한다. 이렇게 되면 로드밸런싱이 되지 않기 때문에 arptables_jf를 이용해서 응답하지 않도록 해줘야 한다.

# arptables -A IN -d 192.168.21.119 -j DROP
# arptables -A OUT -d 192.168.21.119 -j mangle --mangle-ip-s 192.168.21.100    
# service arptables_jf save
# chkconfig arptables_if on

192.168.21.108 서버에도 위와같이 설정해주자 당연히 뒤에 아이피는 108로 변경해야된다.

arptables_if 를 설치하지 않고 단순히 커널파라미터 값을 변경해도 될것같은데?
/etc/sysctl.conf 에서

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

# for ipvs
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

# endof ipvs

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1



리얼서버에서 가상서버ip를 설정해주자
# ifconfig eth0:1 192.168.21.119 netmask 255.255.255.0

재부팅시 디바이스가 자동으로 올라오게 하려면
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 파일을 만들어주자 내용은 
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.21.119
NETMASK=255.255.255.0




이제 LVS서버에서 리얼서버ip추가해주자
# ipvsadm -a -t 192.168.21.119:80 -r 192.168.21.100 -g -w 5
# ipvsadm -a -t 192.168.21.119:80 -r 192.168.21.108 -g -w 2

-a : 서비스를 추가한다는 옵션, -e : edit, -d : delete

-r : real server

-w 5 : 가중치 5, -w 1 : 가중치 1

-g : 다이렉트 라우팅으로
# service ipvsadm save
# chkconfig ipvsadm on


음 어렵다 어려워 사실 이러니 저러니해도 L4스위치 중고라도 장만해서 사용하는게 가장 안심이 되는게 사실인거같다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/3350/0fa/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
147 제로보드4의 데이터를 XE 로 이전하는 방법 file ADMINPLAY 2009-11-23 21924
146 LVS-NAT 구축(Linux Virtual Server) file ADMINPLAY 2009-11-04 23011
» 리눅스 클러스터링 LVS(Linux Virtual Server) ADMINPLAY 2009-11-04 20448
144 [LVS] CentOS5.2 기반 LVS 셋팅(Piranha) ADMINPLAY 2009-11-04 21754
143 LVS 기능 및 장점과 설치프로그램 및 적용사이트 ADMINPLAY 2009-11-04 23440
142 oracle IP 변경시 변경 해야될 파일 ADMINPLAY 2009-11-01 26315
141 리눅스 하드디스크 에러메세지 ADMINPLAY 2009-11-01 26461
140 가볍고 강력한 SNMP를 이용한 모니터링 프로그램입니다. file ADMINPLAY 2009-10-31 24910
139 네트워크 관리자를 위한 통합 모니터링 툴 - N.E.W.T file [2] ADMINPLAY 2009-10-31 24759
138 Dstat - 모니터링 file ADMINPLAY 2009-10-30 30737
137 mrtg on freebsd , monitor windows2003 ADMINPLAY 2009-10-11 16817
136 favicon 만들기 ADMINPLAY 2009-09-30 24876
135 rm -rf * 잘못 쳤을 때 울지 않기! ADMINPLAY 2009-09-30 19210
134 CentOS 5.0~5.1 :: 커널 2.6.17~2.6.24.1 vmsplice 커널버... ADMINPLAY 2009-09-28 22562
133 [Linux]RedHat Enterprise Linux 5 계열 VNC Server 설정 ADMINPLAY 2009-09-25 23756
132 [설치/설정] APM 튜닝정보 조금 ADMINPLAY 2009-09-24 19136
131 Making Linux Streaming Server RED5 스트리밍 리눅스서버... ADMINPLAY 2009-09-24 26679
130 CentOS 리눅스에서 완벽 동영상 재생하기 ADMINPLAY 2009-09-24 20523
129 Red Hat Linux 9 ADMINPLAY 2009-09-24 51605
128 chkconfig ADMINPLAY 2009-09-24 19860

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234