>> CentOS5.2 기반 LVS 셋팅(Piranha) <<
1. CentOS5.2 CD를 깐다..
깔때, 웹(Http, PHP)와 클러스터 항목을 추가하여 깔아야 한다.
2. 리눅스 콘솔 한글 설정
vi /etc/sysconfig/i18n 파일을 편집기로 연 다음에,
LANG="en_US"
SUPPORTED="en_US.UTF-8:en_en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"
SYSFONTACM="iso01"
LC_CTYPE="ko_KR"
위 부분으로 대체한다.
또한, 원할한 yum 업데이트나 네임서버 경로설정을 위해서 다음 파일을 열어 삽입한다.
vi /etc/resolv.conf
search 164.124.101.2
nameserver 168.126.63.1
nameserver 168.126.63.2
그리고, 프롬프트상에서 문자가 깨져보일경우, vi /etc/crontab 을 열어 LANG=c 를 추가한다.
타임싱크를 위해 0,5,10,15,20,25,30,35,40,45,50,55 * * * * root rdate -s time.bora.net 삽입! 다음, 리부팅한다.
3. vi /etc/sysctl.conf
net.ipv4.ip_forward = 0 부분의 0을 "1"로 수정한다.
그런다음
sysctl -p 명령을 입력하여 커널파라미터를 적용한다.
4. ntsysv에서 불필요한 데몬은 지운다.
단, avahi-daemon, haldaemon, hidd, ipvsadm, kudzu, modclustderd, piranha-gui. pulse 은 부팅시 자동활성화 되도록 체크하고
httpd는 자동활성화 시키면 안된다. 자동활성화가 되게 되면 piranha-gui 데몬과 충돌나게 된다.
--------------------------------------------------------------------------------------------------------------
먼저 /usr/sbin/piranha-passwd 를 이용하여 piranha에 접속할 패스워드를 설정한다.
# piranha-passwd
New Password:
Verify:
Updating password for user piranha
/etc/rc.d/init.d/piranha-gui 를 실행하여 piranha gui 에 접속한다.
# /etc/rc.d/init.d/piranha-gui start
처음 설치시 기본 port는 3636으로 웹으로 접속을 한다. 아이디는 piranha 이다.
설정내용은 웹환경에서 쉽게 이해할 수 있다.
기본적으로는 lvs 세팅을 할 수 있으며 lvs 서버를 이중화하는 것도 가능하다.
** global setting
Primary server public ip : LVS 서버의 공인 ip
Primary server private ip : nic가 두개이고 공인과 사설로 분리할 경우 사설 IP
LVS type : LVS 타입은 lvs 만 지원
Use network type: NAT의 경우 LVS 를 통하여 들어온 패킷이 real server 로 전달되고 다시 LVS를 통하여 클라이언트로 응답을 해준다. 이경우 real server 의 gateway는 LVS의 사설 IP가 된다. Direct Routing 을 사용하면 real server 에서 바로 router 로 나간다. 이경우 리얼서버에서 별도의 세팅이 필요하다. 이에 대해서는 별도로 설명한다.
NAT를 이용할 경우에는 NAT 에 해당하는 몇가지 항목들을 더 입력해야한다.
** redundancy
** virtual servers
virtual server 를 추가한다.
Name : 가상서버를 구별할 이름
Application port: 서비스에 사용할 포트
Device: vip 에서 사용할 네트워크 장치
Re-entry Time: 실제 서버에 고장일 난 경우 활성 LVS 라우터가 고장난 실제 서버를 다시 클러스터로 불러오기 위해 시도하는 초단위 주기
Service timeout: 실제 서버가 활동을 멈춘 후 고장으로 판단되어 클러스터에서 제거될 때까지의 초단위 주기
Persistence: 클라이언트로부터의 요청을 서비스하는 도중에 서버 관리자가 가상 서버로의 지속성 연결을 할 경우 연결 타임아웃 제한이 만료되기 전에 허용되는 비활성 시간(초)
이제 위에서 만든 가상 서버에 real 서버를 추가하면 됩니다.
여기서 세팅한 내용은 아래 파일에 저장이 된다.
/etc/sysconfig/ha/lvs.cf
rimary = 210.124.122.81
primary_private = 192.168.7.81
service = lvs
backup_active = 1
backup = 210.124.122.82
backup_private = 192.168.7.82
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
reservation_conflict_action = preempt
debug_level = NONE
virtual www.tunelinux.pe.kr {
active = 1
address = 210.124.122.86 eth0:1
vip_nmask = 255.255.255.0
port = 80
persistent = 1800
pmask = 255.255.255.255
send = \"GET / HTTP/1.0\\r\\n\\r\\n\"
expEct = \"HTTP\"
load_monitor = none
scheduler = wlc
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
server www1.tunelinux.pe.kr {
address = 210.124.122.90
active = 1
weight = 100
}
server www2.tunelinux.pe.kr {
address = 210.124.122.91
active = 1
weight = 100
}
server www3.tunelinux.pe.kr {
address = 210.124.122.98
active = 1
weight = 100
}
}
위와 같이 설정파일을 만들었으면 이제 LVS 서비스를 시작하면 됩니다.
# /etc/init.d/pulse start
관련된 프로세서는 다음과 같습니다.
pulse : LVS 대몬 시작. primary/secondary heartbeat
lvs : ipvsadm 서비스 호출, nanny 프로세스 시작
nanny : 개별 실제 서버의 상태 모니터링
# pstree
init-+-crond
|-httpd---8*[httpd]
|-4*[keventd]
|-khubd
|-5*[kjournald]
|-klogd
|-2*[login---bash]
|-mdrecoveryd
|-4*[mingetty]
|-piranha_gui---2*[piranha_gui]
|-pulse---lvs---2*[nanny]
|-scsi_eh_0
|-sshd---bash---su---bash---pstree
|-sshd---bash---su---bash---tail
|-sshd
|-syslogd
`-xinetd
# tail -f /var/log/messages
Jul 1 13:47:32 web1 pulse[18559]: STARTING PULSE AS MASTER
Jul 1 13:47:32 web1 pulse: pulse startup succeeded
Jul 1 13:47:50 web1 pulse[18559]: partner dead: activating lvs
Jul 1 13:47:50 web1 lvs[18562]: starting virtual service http active: 80
Jul 1 13:47:50 web1 lvs[18562]: create_monitor for http/contents running as pid 18569
Jul 1 13:47:50 web1 lvs[18562]: create_monitor for http/contents running as pid 18570
Jul 1 13:47:50 web1 nanny[18569]: starting LVS client monitor for 61.74.60.27:80
Jul 1 13:47:50 web1 nanny[18569]: making 61.74.60.7:80 available
Jul 1 13:47:50 web1 nanny[18570]: starting LVS client monitor for 61.74.60.27:80
Jul 1 13:47:50 web1 nanny[18570]: making 61.74.60.23:80 available
Jul 1 13:47:55 web1 pulse[18565]: gratuitous lvs arps finished
Jul 1 13:48:20 web1 nanny[18570]: shutting down 61.74.60.23:80 due to connection failure -> 23서버가 죽은경우 나오는 메시지
이중으로 구성한 경우 primary 의 네트워크 회선을 뽑으면 backup으로 넘어가고 다시 네트워크 회선을 연결하면 자동으로 primary로 넘어왔다. 그러나 pulse 를 stop 하고 다시 start 하는 경우에는 backup으로 넘어갔다가 다시 primary 로 넘어가지 않았다.
realserver 는 DR 알고리즘을 사용하는 경우 hidden 패치를 하고 loop device에 vip를 등록하여 사용하면 된다.
ifconfig lo:0 61.74.60.27 netmask 255.255.255.255 broadcast 61.74.60.27 up
route add -host 61.74.60.27 dev lo:0