의식여행
[System Network] L4 Mode비교(Inline vs DSR) 및 설정하기 본문
Overview
서비스(웹서버) Load Balancing을 위한 매커니즘으로 구성환경에 따라 L4Inline Mode 또는 DSR Mode를 사용합니다.
Inline vs DSR 구성
보통 서비스에서는 Inbound Traffic 대비 Outbound Traffic이 월등히 높은데
SLB에서 모두 수용하게 될 경우 리소스 소모가 커질 수 밖에 없습니다.
이러한 문제점을 극복하고자 사용하는 구성이 DSR(Direct Server Return) 구성입니다.
1. Inline(Proxy) Mode
■ 개념 : Server에서 Client로 응답시 L4를 경유하여 응답하는 구조
■ 동작구조 : Client → L4 → Server → L4 → Client
※ L4에서 Server로 패킷 전달 시, Client IP가 L4 장비의 IP로 변경되어짐 ※
■ 장점 : 1) 같은 서브넷이 아닌 다른 IP대역의 L4 수용이 가능
2) 하나의 포토에 여러가지 리얼 포트로 전달해 줄 수 있는 멀티 포트 지원 가능
■ 단점 : 1) 모든 트래픽이 L4를 경유하기 때문에 인터페이스 병목현상 및 장비에 부하를 준다
2) Client IP를 전달하기 위해서는 L4에서 HTTP 헤더 값을 추가하고 관련 가이드를 따라야 한다.(HTTPS 프로토콜만 지원)
2. DSR 구성
■ 개념 : Server에서 Client로 응답시, L4를 경유하지 않고 Direct로 응답하는 구조
■ 동작구조 : Client → L4 → Server → Client
※ Client IP가 그대로 Server로 전달 ※
■ 장점 : L4를 경유하지 않고 Client로 바로 응답하여 L4 장비 부하를 줄임 (응답속도 ↑)
2) Client IP를 그대로 전달하여 서버에 로그를 남기거나 ACL Control이 가능(보안성 ↑)
■ 단점 : 1) 같은 서브넷 안에 있는 서버(IP) 대역이 아닐 경우 L4 수용이 어려움
2) 하나의 포트에서 여러가지의 리얼 포트로 전달해줄 수 있는 멀티포트 기능지원이 어려움
3. CentOS L4 Mode 변경(Inline → DSR)
# vi /etc/sysconfig/network-scripts/ifcfg-lo:0
-DEVICE=lo:0
-IPADDR=X.X.X.X (L4 VIP)
-NETMASK=255.255.255.255 (BroadCast 방지)
-ifup /etc/sysconfig/network-scripts/ifcfg-lo:0
DSR 구성의 부하 분산 방식
1) Round Robin
-모든 서버에 균일한 횟수록 접속
-서버의 부하 상태 등에 대한 고려 없이 일률적으로 부하를 분산함으로써 효과적인 부하 분산을 기대하기 어려움
2) Least Connection
-서버들 중 세션수가 가장 적은 서버로 접속을 유도하는 방식
※ 서버 1대를 추가로 투입할 경우 현재 세션수가 0인 신규 투입서버로 Request가 몰리는 단점도 있음※
L4 HealthCheck
1. L2 : ARP 응답 확인
2. L3 : ICMP(Ping) 응답 확인
3. L4 : 서버에 TCP/UDP 서비스 포트 활성화 여부
4. L7 : 어플리케이션 올바르게 동작하는지 여부
[L4]
TCP 서비스의 경우 LB 장비에서는 바인딩된 서버의 포트로 TCP "SYN"을 전송하여 "SYN+ACK" 응답이 오는지를 확인하여
응답이 없으면 서비스 상태에 문제가 있다고 판한한다.
(Socket 낭비를 막기 위해 이후, 바로 "RST"를 통해 세션을 끊음)
[L7]
L4는 Socket의 낭비를 막는다는 이점은 있지만, 실제 Application 단은 체크할 수 없다는 문제점이 있음
L7은 기본적으로 서버와 TCP 세션을 맺고 Request를 통해 응답 코드를 확인하는 방식입니다.
이는 어플리케이션 상태까지 확실한 Health Check가 가능합니다.
감사합니다.