Skip to content

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

조회 수 20446 추천 수 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/d9d/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort

rsync 에러

리눅스에서 일정기간 이상된 파일 삭제하기

FreeBSD CPU 개수 확인 등.(mptable, sysctl)

콘솔에 남는 메세지로그파일로 남기기

ethtool 사용법

vim 편집기 색상변경

grep 옵션~!

find 찾아바꾸기

서버로그 관리

MRTG 로그 데이터 시간확인하기

실시간 접근정보 확인

iscsi-target 설정 에러 모음

hdparm - 하드디스크의 자세한 정보 보기

아파치 모듈 mod_status file

특정 디랙토리 인증걸기 htpasswd, htaccess

syslogd : 콘솔에 남는 메세지 로그파일로 남기기

apm설치시 configure error

리눅스 언어 인코딩 설정

sysctl 커널 파라미터

제로보드4의 데이터를 XE 로 이전하는 방법 file

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234