Skip to content

[LVS] CentOS5.2 기반 LVS 셋팅(Piranha)

조회 수 21752 추천 수 0 2009.11.04 18:10:25

>> 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 {
&nbsp;&nbsp;&nbsp;&nbsp; active = 1
&nbsp;&nbsp;&nbsp;&nbsp; address = 210.124.122.86 eth0:1
&nbsp;&nbsp;&nbsp;&nbsp; vip_nmask = 255.255.255.0
&nbsp;&nbsp;&nbsp;&nbsp; port = 80
&nbsp;&nbsp;&nbsp;&nbsp; persistent = 1800
&nbsp;&nbsp;&nbsp;&nbsp; pmask = 255.255.255.255
&nbsp;&nbsp;&nbsp;&nbsp; send = \"GET / HTTP/1.0\\r\\n\\r\\n\"
&nbsp;&nbsp;&nbsp;&nbsp; expEct = \"HTTP\"
&nbsp;&nbsp;&nbsp;&nbsp; load_monitor = none
&nbsp;&nbsp;&nbsp;&nbsp; scheduler = wlc
&nbsp;&nbsp;&nbsp;&nbsp; protocol = tcp
&nbsp;&nbsp;&nbsp;&nbsp; timeout = 6
&nbsp;&nbsp;&nbsp;&nbsp; reentry = 15
&nbsp;&nbsp;&nbsp;&nbsp; quiesce_server = 0
&nbsp;&nbsp;&nbsp;&nbsp; server www1.tunelinux.pe.kr {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address = 210.124.122.90
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;active = 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight = 100
&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp; server www2.tunelinux.pe.kr {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address = 210.124.122.91
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;active = 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight = 100
&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp; server www3.tunelinux.pe.kr {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address = 210.124.122.98
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;active = 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight = 100
&nbsp;&nbsp;&nbsp;&nbsp; }
}


위와 같이 설정파일을 만들었으면 이제 LVS 서비스를 시작하면 됩니다.
# /etc/init.d/pulse start

관련된 프로세서는 다음과 같습니다.
pulse : LVS 대몬 시작. primary/secondary heartbeat
lvs : ipvsadm 서비스 호출, nanny 프로세스 시작
nanny : 개별 실제 서버의 상태 모니터링

# pstree
init-+-crond
&nbsp;&nbsp;&nbsp;&nbsp; |-httpd---8*[httpd]
&nbsp;&nbsp;&nbsp;&nbsp; |-4*[keventd]
&nbsp;&nbsp;&nbsp;&nbsp; |-khubd
&nbsp;&nbsp;&nbsp;&nbsp; |-5*[kjournald]
&nbsp;&nbsp;&nbsp;&nbsp; |-klogd
&nbsp;&nbsp;&nbsp;&nbsp; |-2*[login---bash]
&nbsp;&nbsp;&nbsp;&nbsp; |-mdrecoveryd
&nbsp;&nbsp;&nbsp;&nbsp; |-4*[mingetty]
&nbsp;&nbsp;&nbsp;&nbsp; |-piranha_gui---2*[piranha_gui]
&nbsp;&nbsp;&nbsp;&nbsp; |-pulse---lvs---2*[nanny]
&nbsp;&nbsp;&nbsp;&nbsp; |-scsi_eh_0
&nbsp;&nbsp;&nbsp;&nbsp; |-sshd---bash---su---bash---pstree
&nbsp;&nbsp;&nbsp;&nbsp; |-sshd---bash---su---bash---tail
&nbsp;&nbsp;&nbsp;&nbsp; |-sshd
&nbsp;&nbsp;&nbsp;&nbsp; |-syslogd
&nbsp;&nbsp;&nbsp;&nbsp; `-xinetd

# tail -f /var/log/messages
Jul&nbsp;&nbsp;1 13:47:32 web1 pulse[18559]: STARTING PULSE AS MASTER
Jul&nbsp;&nbsp;1 13:47:32 web1 pulse: pulse startup succeeded
Jul&nbsp;&nbsp;1 13:47:50 web1 pulse[18559]: partner dead: activating lvs
Jul&nbsp;&nbsp;1 13:47:50 web1 lvs[18562]: starting virtual service http active: 80
Jul&nbsp;&nbsp;1 13:47:50 web1 lvs[18562]: create_monitor for http/contents running as pid 18569
Jul&nbsp;&nbsp;1 13:47:50 web1 lvs[18562]: create_monitor for http/contents running as pid 18570
Jul&nbsp;&nbsp;1 13:47:50 web1 nanny[18569]: starting LVS client monitor for 61.74.60.27:80
Jul&nbsp;&nbsp;1 13:47:50 web1 nanny[18569]: making 61.74.60.7:80 available
Jul&nbsp;&nbsp;1 13:47:50 web1 nanny[18570]: starting LVS client monitor for 61.74.60.27:80
Jul&nbsp;&nbsp;1 13:47:50 web1 nanny[18570]: making 61.74.60.23:80 available
Jul&nbsp;&nbsp;1 13:47:55 web1 pulse[18565]: gratuitous lvs arps finished

Jul&nbsp;&nbsp;1 13:48:20 web1 nanny[18570]: shutting down 61.74.60.23:80 due to connection failure -&gt; 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

profile

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

엮인글 :
http://adminplay.com/3348/2ad/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort

도메인 Status 상태별 설명 안내

HDD Guardian (a graphical user interface for smartctl)

dpkg 사용법

top 화면 내용중 load average와 PRI : priority(우선순위...

ubuntu 10.04 에서 Nginx, Mysql, PHP5

HP 서버 disk 증설 (hpacucli 사용)

리눅스 메모리 관리, 왜 메모리 여유공간이 없을까? (top ...

windows smartctl

ZFS 파일에 ACL 설정

make 정리

SSL 패스워드 삭제 하기

EXT4 파일 시스템을 Btrfs 파일 시스템으로 변환하기

tar 압축을 실수로 디렉토리 생성 안하고 풀었을때 대처법

ll 명령시 날짜 전체가 보이도록 하기

hddtemp와 mrtg를 이용한 하드디스크 온도 체크 file

python과 mysql 연동시 libmysqlclient_r.so.* 에러가 날 ...

linux 커널 파라메터 수정

우분투(Ubuntu) ssh 설정하기

error: Hm, kex protocol error: type 30 seq 1 [preauth]... file

운영중인 Linux 서버에서 NTFS 파일 시스템 삭제하기

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234