RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'lvs'에 해당되는 글 1
2009.07.24  LVS (Linux Virtual Server)  

시스템 구현

LVS Load Balancing method
 NAT 이용한 가상서버
 IP 터널링 이용한 가상서버
 다이렉트 라우팅 이용한 가상서버

 

LVS Direct Routing
 사용자의 요청은 가상 IP 주소를 가진 부하분산서버로 간다
 부하분산서버는 스케줄링 알고리즘에 따라 클러스터에서 실제 서버를 선택
 접속을 기록하는 해시 테이블에 새로운 접속을 추가
 부하분산서버에서 선택한 서버로 직접 패킷을 전송
 리얼서버는 요청을 처리하고 결과를 사용자에게 직접 전송

 

스케줄링 알고리즘
 Round-Robin Scheduling
 Weighted Round-Robin Scheduling
 Least-Connection Scheduling
 Weighted least-Connection Scheduling

 

Technology
1. heartbeat
2. Ldirectord
3. ipvsadm

 

1. Heeartbeat
-  heartbeat 프로토콜을 이용하는 오픈 소스 프로젝트
-  정해진 시간간격을 두고 특정한 패킷을 물리적으로 연결된 호스트에 보내 일정시간 응답이 없으면 정해진 응급 복 구 프로세스를 수행

- Master 호스트가 서비스를 책임
- Master 호스트에 문제발생시 Hot standby 호스트가 가상 IP를 인계받아 서비스 재계


2. Ldirectord
 리얼서버의 상태를 모니터링 하는 PERL 스크립트
 설정파일에 정해진 URL에 주기적으로 특정문자열 요구
 타임아웃, 응답된 문자열 유효성 등으로 서버상태 결정
 리얼서버의 다운시 IPVS 테이블에서 삭제
 리얼서버 복구시 IPVS 테이블에 재 등록
 라이렉트 라우팅은 Linux Director서버의 IPVS 테이블을 이용해 커널에서 처리
 모든 리얼 서버가 다운 되었을 경우 fall-back 서버가 응답


3. ipvsadm
 2개 이상의 노드를 가진 클러스터링 시스템에서 커널내부의 IPVS 테이블을 설정하고 유지하는 유틸리티
 IPVS테이블은 커널이 로드밸런서로 들어오는 패킷을 각각의 리얼서버 노드로 전달하기 위해 참조
 2개의 프로토콜 지원(TCP, UDP)
 3가지 방식의 패킷 포워딩 방식 지원(NAT, Tunneling, Direct routing)
 4가지 스케줄 알고리즘 지원

 

구축
Network 설정(공통)
/etc/hosts
X.X.X.100 www.dunet.co.kr www virtual ip (VIP)
X.X.X.101 ha1.dunet.co.kr ha1 master
X.X.X.102 ha2.dunet.co.kr ha2 standby
X.X.X.103 node1.dunet.co.kr node1 real server1
X.X.X.104 node2.dunet.co.kr node2 real server2

 

real server 서버들은 VIP를 로컬주소로 인식하도록 설정 되어야 함
- loopback device 에 IP alias 기능을 이용
- /etc/sysconfig/network-scripts/ifcfg-lo:0 스크립트를 다음과 같이 설정

DEVICE=lo:0
IPADDR=X.X.X.100
NETMASK=255.255.255.255
NETWORK=X.X.X.X
BROADCAST=X.X.X.X
ONBOOT=yes
NAME=loopback

 

GATEWAY혼돈을 막기 위해 /etc/sysconfig/network 파일에 아래 항목 추가
GATEWAYDEV=eth0

 

각 real server에서 /etc/ha.d/conf/ldirectord.cf에 포함
Test Page of node1.dunet.co.kr
Test Page of node2.dunet.co.kr


ARP 응답문제
loopback devices에서 Alias된 VIP가 추가된 경우 로컬네트워크의 ARP 요청이 로드밸런서로 가지 않고 리얼 서버가 먼저 응답하므로 부하분산이 되지 않는 문제가 생길 수 있다.


커널 2.2.14 – Hidden Device 기능을 이용
커널 2.4.X  - Hidden patch 필요
커널 2.6.X  - /etc/sysctl.conf 파일에 수정 후 활성화


# ARP hidden configure
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


활성화
# sysctl -p

TIP) 확인법으론 windows나 linux에서 arp -a 명령을 실행. 로드밸런서 서버 맥어드레스가 나오면 정상적으로 셋팅이 된 것이다.

 

Linux Director Server 설정
- kernel 2.4 이상에서는 IPVS기능 사용가능
- Director서버는 반드시 자신에게 접속하는 클라이언트 패킷을 real server로 보낼 수 있는 IPforward기능이 필요


# vi /etc/sysctl.conf
net.ipv.ip_forward = 1 로 변경 후 저장


활성화

# sysctl -p


실행을 위해 /etc/ha.d/conf/ldirectord.cf에 설정파일 필요


# vi /vietc/ha.d/conf/ldirectord.cf
checktimeout=3
checkinterval=1                     # 테스트페이지 요청 주기
fallback=127.0.0.1:80gate         # 모든 리얼서버 다운시 이동할 웹 서버
autoreload=yes
logfile=”/var/log/ldirectord.log”
quiescent=yes
virtual=X.X.X.100:80                # 리얼서버 IP및 포트, 포워딩 방식
   real=X.X.X.103:80 gate 3          - gate = Direct Routing
real=X.X.X.104:80 gate 2             - masq = Network address translation
service=http                              - ipip = IP Tunneling
  checkport=80
  checktype=connect
  request=”index.html”
  receive=”Test Page”
  scheduler=wlc                    # 스케줄링 방식
  #persistent=600                    - rr, wrr, lc, wlc

- Real Server 동일 사양에서 똑같게 구성
- Director Server 동일하게 구성

 

LVS 각 서버들 httpd 실행
# /etc/rc.d/init.d/ldirectord start
- 부팅 시 자동 실행되지 않게 설정!!!


ipvsadm을 통해 테이블 확인
# ipvsadm - L

장애 로그로 결과를 분석

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31