LVS server 구축
2010. 11. 6. 14:50
IP 설정 및 구축
◇LVS server(ipvsdm) : LAN1 - IP Addr : 220.70.2.xxx >> Real address
- Netmask : 255.255.255.0
- Gateway : 220.70.2.254
- DNS : 168.126.63.1
LAN2 - IP Addr : 192.168.1.1 >> Virtual address
- Netmask : 255.255.255.0
◇Real Server1 : IP Addr : 192.168.1.2
Netmask : 255.255.255.0
Gateway : 192.168.1.1
DNS : 192.168.1.1
◇Real Server2 : IP Addr : 192.168.1.3
Netmask : 255.255.255.0
Gateway : 192.168.1.1
DNS : 192.168.1.1
LVS Server 설정
◇ipvsadm 설치
# yum -y install ipvsadm
◇동작확인
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
ProtProt LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
◇시스템을 통해 다른 시스템으로패킷이 포워딩 될수 있도록 수정
# vi /etc/sysctl.conf
net.ipv4.ip_forward=1
-> 적용
# sysctl -p
◇ipvsadm 구동
# service ipvsadm start
◇ipvsadm 설정
# ipvsadm -A -t 220.70.2.xxx:80 -s rr
# ipvsadm -a -t 220.70.2.xxx:80 -r 192.168.1.2:80 -m
# ipvsadm -a -t 220.70.2.xxx:80 -r 192.168.1.3:80 -m
SELinux disabled :
#vim /etc/selinux/config
line#7 SELINUX=enforcing -->> SELINUX=disabled 로 수정
◇ipvsadm 설정 확인
# ipvsadm -L
IP Virtual Server version 1.2.11.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 220.70.2.x:http rr
-> 192.168.1.2:http Route 1 0 0
-> 192.168.1.3:http Route 1 0 0
REAL Server 설정
◇server 페이지 만들기
# vim /var/www/html/index.html
<내용 입력, 저장 후 종료(wq)>
◇ server 구동
# service httpd start
1. ipvsadm의 기본 문법
- 서비스
ipvsadm [명령] [프로토콜 옵션] [서비스] [스케줄링 방법] [세션유지 옵션]
- 리얼서버
ipvsadm [명령] [프로토콜 옵션] [서비스] -r [리얼서버 옵션] [가중치 옵션]
서비스/리얼서버 관련 >명령<
-A : 서비스 추가
-E : 서비스 수정
-D : 서비스 삭제
-a : 리얼서버 추가
-e : 리얼서버 수정
-d : 리얼서버 삭제
>프로토콜<
-t TCP
-u UDP
-f firewall 서비스 추가(NAT 방식에서 사용)
기타
-s [ rr | wrr | lc | wlc | lblc | lblcr | dh | sh | sed | nq ] : 스케줄링 방법을 설정한다.
-p [timeout]: 세션 타임아웃 설정
-r [서버주소:서비스포트] : 리얼서버를 설정한다.
-w [가중치] : 가중치를 설정한다.
설정 확인
-L : 서비스/리얼서버 리스트를 출력한다.
-n : 숫자형식(호스트네임->아이피주소)로 출력한다.
-c : 현재 연결을 출력한다.
입/출력
-S : 표준출력(화면프린트)으로 현재 설정을 내보낸다.
-R : 표준입력을 통해 설정을 가져온다
2. 스케줄링 방식 정리(rr,wrr,lc,wlc)
ipvsadm에서 지원하는 스케줄링 방식은 총 8개가 있지만 이 문서에서는 네개의 방식만 정리.
(1) rr
round-robin방식은 가장 기본적인 스케줄링 방식으로 "순차적으로" 작업을 각각의 노드에 분배하는 방식이다. 만약 3 대의 노드(A,B,C)에 round robin 방식을 사용하면, A->B->C->A->B->C와 같이 실행이 된다.
(2) wrr
노드별로 가중치를 설정하여 작업을 순차적으로 분배하는 방식으로 여러대의 서버가 각각 성능이 다른경우 성능에 맞춰 가중치를 설정해 주면 성능이 낮은 서버에 과도한 부하가 걸리는 것을 방지할 수 있다.
(3) lc
"현재 활성화 되어있는(ESTABLISHED)" 접속량이 적은 서버부터 작업을 할당하는 방식으로, 불필요한 유휴자원이 발생하는 것을 막을 수 있다. 만약 접속이 오래 유지되지 않는 경우(http) 이 방식을 사용하면, A->A->A->A->...와 같이 리스트 위쪽에 있는 노드 위주로 작업이 할당된다.
(4) wlc
노드별로 가중치를 설정하여 접속량이 적은 서버부터 작업을 할당하는 방식으로 lc보다 효율적인 자원분배가 가능하다.
3. 타임아웃
(1)세션 타임아웃
ipvsadm에서 -p 옵션을 이용하여 어떤 서비스에 세션 타임아웃 시간을 설정하면, 한번 세션이 열린후 타임아웃 시간 내에 동일한 주소에서 세션이 다시 열렸을 때 처음에 접속했던 RIP로 접속이 된다.
(2)Idle 타임아웃
ipvsadm --set옵션을 이용하면 프로토콜의 Idle timeout 시간을 설정할 수 있다. timeout 시간이 지나면 연결이 끊어지게 된다. 예를 들어,
ivpsadm --set 10 20 30
로 설정을 해 주게 되고 ftp연결후 10초간 아무것도 하지 않으면 연결이 끊어진다. 이는 http와 같이 한번 보내면 해당 연결이 끊겨도 별 문제가 없는 서비스의 경우는 상관없지만, ftp, nfs와 같은 서비스를 사용할 때에는 신중하게 값을 설정해야 한다.
'LVS' 카테고리의 다른 글
LVS 구축에 관한 이론 (NAT 부터 WLC 까지) (2) | 2010.12.23 |
---|---|
RR 알고리즘 개선 -> N번째 N번 부하 분산 (0) | 2010.12.20 |
커널 소켓 프로그래밍 (0) | 2010.11.20 |
모듈 프로그래밍 (1) | 2010.11.10 |
ipvsadm 소스 파일 make하기 (1) | 2010.11.09 |