LVS, 라운드로빈, L4 분산 개념들

2014.02.19 11:38

소울 조회 수:3747

LVS
- 기본 LVS는 아이피가 2개 필요함 (관리용, 라운드 로빈용 VIP)
- 필히 분배할 L4 서버는 vim /etc/sysctl.conf 에서 net.ipv4.ip_forward = 1 확인할것!
- L4스위치나 같은 네트웍 단에 있는 서버가 VIP로 접근시 통신되지 않음 (타겟쪽 VIP 구성을 DR로 구성하면
같은 네트워크단 서버들도 VIP로 접근 가능함)

DR (Direct Routing)
- 같은 네트워크에 있어야 함 (아이피 대역도 동일해야 분배가능)
- 패킷이 LVS로 갔다가 웹서버에서 바로 디폴트게이트웨이를 통해서 나간다
- 클라이언트 - LVS - 웹 - 디폴트게이트웨이
- 웹쪽 네트워크 루프백 추가 lo:0 으로 해서 LVS IP가 셋팅되게 된다

LVS eth0 (공인 / 사설) : 관리용IP
eth0:0 (공인 / 사설) (공인아이피가 부족하면 사설로 쓴다) : VIP-IP

WEB LVS VIP-IP가 공인/사설이라면 eth0 공인/사설아이피 
lo:0 LVS 아이피 잡아준다

NAT (공유기)
- 클라이언트 - LVS - 웹 - LVS
 - 클라이언트
- LVS 쪽에 위치하며 초기 통신시 주소변환이 일어나게 됨 (변환된것들은 캐싱테이블에 저장될거임)
- 통신이 이루어질때 마다 패킷변경이 이루어지므로 노드나 서비스 증가시 LVS 부하가 증가할 가능성 존재

LVS eth0 : 공인
eth0:0 공인 / 사설

WEB eth0 : 공인 / 사설

LVS서버가 웹과 구조상 같은 네트워크 동등하게 위치하고 있을때는 아래와 같이 셋팅

route add default gw (VIP IP)
route del default gw (기본게이트 웨이)

- 디폴트 게이트웨이 보통 스위치 아이피이지만 L4 VIP가 게이트웨이가 되므로 모든 패킷은 L4를 거쳐서 나감
즉 L4 서버가 다운되면 모든 서버 통신이 단절되는 단점이 있음...


LVS가 네트워크 구조상 웹의 상단 즉 게이트웨이 쪽에 위치하여 패킷이 LVS쪽에로 들어가게 되는구조
ex) 브리지 방화벽
이때는 원래 디폴트 게이트웨이사용 위와 같이 디폴트게이트 수정 불필요

IP 터널링 (IP Encapsulation)
- 같은 네트웍에 없어도 됨

DNS-RR

동일한 이름으로 여러 레코드를 등록시키면 질의 할때마다 다른 결과 반환하는 원리를 이용

서버의 수 만큼 공인아이피 필요

균등하게 분산되는것은 아님 (TTL값을 낮춤으로 어느 정도 개선 가능성? 존재)

헬스체크를 하지 못함 

Round Robin 분산 방식

Round Robin (RR) 방식

- Real 서버로 세션이 순차적으로 맺어짐
- 현재 세션수는 관여하지 않음
- weighting 옵션 지원 (세션의 가중치를 부여하는 옵션)
- 서버의 처리 능력이 동일해야 좋음
- 단순한 방식이여서 부하를 주지 않으며 정확하게 5:5 분산 가능하나 세션보장이 안됨
- 웹서버 동기화가 바로 이루어 지지 않으면 세션이 꼬여서 로그인 유저들 세션 보장 할수 없음

Least Connection 방식

- Real 서버의 세션수를 고려한후 가정 적은 세션을 가진 서버로 세션을 맺어주는 방식
- Maximum Connections : 서버에 할당된 수치에 도달한 경우 그 쪽서버로는 세션을 맺어주지 않는 방식
- 일반적으로 많이 사용 5:5 분산이 가능하나 이것도 세션보장을 할수 없음

Response Time

- LVS 서버가 각 서버와 통신을 하면서 응답시간에 대해 빠른쪽으로 많은 세션을 보내주며 반대로 느린쪽에는 적게 보내주는 방식

Hash

- 동일한 유저에 대해 동일한 리얼서로쪽으로만 연결된다 (세션이 보장된다) 정확한 5:5 분산이 어려움
- Weighting 옵션 불가
- Hashing 값을 가지고 경로 지정 이때 Hash Key는 클라이언트의 IP 혹은 포트를 보고 결정된다

sed (short expected delay)
- 가장 응답속도가 빠른 서버 선택 (실제로 패킷을 날려 체크하는것은 아님)
- ESTABLSHED인 active 수가 가장 적은 수를 사진 서버 우선 선택 분배

nq (vever queue)
- sed와 동일한 알로리즘, active 접속수가 0인 서버를 우선 선택

UTIL


부하분산을 위한 리눅스 유틸들 (Yum 으로 자동 설치가능)

ldirectord

ipvsadm

- IPVS를 개발한 곳에서 제공하는 명령어줄 툴


keepalive

- C언어로 개발된 데몬

윈도우즈는 상용인가? 분배 솔루션을 못 본듯 하다....


[참고자료]
http://blog.naver.com/PostView.nhn?blogId=wnsl0125&logNo=60065183751&widgetTypeCall=true
[출처] ▣ SLB Algorithm |작성자 스톰

번호 제목 글쓴이 날짜 조회 수
10 IPv4 vs IPv6 비교 file 소울 2016.01.21 4048
9 freebsd ip 설정 소울 2014.02.19 3751
» LVS, 라운드로빈, L4 분산 개념들 소울 2014.02.19 3747
7 subnet (netmask) / bit / Host 소울 2014.02.19 3371
6 syn flood 소울 2014.02.19 3501
5 device eth0 entered promiscuous mode 소울 2014.02.19 4890
4 IPTraf 실시간 패킷 분석 프로그램 소울 2014.02.19 6054
3 tcpdump 소울 2014.02.19 3306
2 ethtool 랜카드 속도 제한 소울 2014.02.19 3714
1 SYN IP 확인 소울 2014.02.19 3241