로드벨런서란?(L4, L7)
요약
- 로드밸런싱 : 부하분산 용어(운영체제용, 네트워크용)
- L2 : Mac주소를 바탕으로 로드벨런싱 처리
- L3 : IP주소를 바탕으로 로드벨런싱 처리
- L4 : Transport Layer(IP와 Port) Level에서 로드벨런싱(TCP, UDP)
- L7 : Application Layer(사용자의 Request) Level에서 Load Balancing을 합니다.(HTTP, HTTPS, FTP)
로드밸런싱
- 부하분산 또는 로드 밸런싱(load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미
로드밸런서 종류
- 운영체제 로드밸런서
- 물리적 프로세서 간에 작업을 스케줄링 - 네트워크 로드밸런서
- 사용 가능한 백엔드에서 네트워크 작업을 스케줄링
- 이번 설명에서는 네트워크 로드밸런서 위주로 설명하겠다.
네트워크 로드밸런서 종류
- L2(Data Link Layer)
- Mac Address Load Balancing
- 예시 : Mac > 80–00–20–30–1C-47
- 브릿지, 허브 등
- 장점 : 구조가 간단, 신뢰성이 높다, 가격저렴, 성능이 좋다.
- 단점 : Broadcast 패킷에 의해 성능저하 발생, 라우팅 등 상위레이어 프로토콜 기반 스위칭 불가 - L3(Network Layer)
- IP Address Load Balancing
- 예시 : IP > 213.12.32.123
- L2 + Routing
- Router, ICMP 프로토콜, IP
- 장점: Broadcast 트래픽으로 전체 성능 저하 방지, 트레픽체크
- 단점: 특정 프로토콜을 이용해야 스위칭 가능 - L4(Transport Layer)
- Transport Layer(IP+Port) Load Balancing
- 예시: IP+Port > 213.12.32.123:80, 213.12.32.123:1024
- TCP, UDP Protocol
- 장점 : Port기반 스위칭 지원, VIP를 이용하여 여러대를 한대로 묶어 부하분산
- 주로 Round Robin 방식 사용 - L7(Application Layer)
- Application Layer(사용자 Request) Load Balancing
- 예시 : IP+Port+패킷 내용 >
213.12.32.123:80, 213.12.32.123:1024 + GET/ img/aaa.jpg
- HTTP, FTP, SMTP Protocol
로드밸런서 동작(L4)
- 아래 그림은 대표적인 로드밸런싱(L4)이 어떻게 이루어지는지에 대한 그림이다.
Load Balancing Architecture(L4기준)
- 브라우저에서 aaa.co.kr 이라고 입력
PC에 설정된 Local DNS 서버로 DNS Query
Local DNS 서버는 aaa.co.kr을 관리하는 DNS서버(Authoritative DNS서버)에 DNS Query, L4의 VIP주소 획득 - Local DNS는 획득한 VIP 주소를 전송
- 획득한 DNS를 기반으로 L4 VIP로 http 요청
- L/B장비는 최적의 서비스 서버를 내부 알고리즘(라운드로빈 등)을 통하여 선별, 요청을 전송
그 후 서버 작업 결과를 L/B장비 전송 - 전달받은 http결과를 L/B장비를 통해 Client에 전송함으로 요청 처리를 끝낸다.
로드밸런서 동작방식(Mode 별)
- Bridge/Transparent Mode
사용자가 서비스를 요청하면 L4로 전달된 목적지 IP 주소를 real server IP 주소로 변조하고 MAC 주소를 변조해서 목적지를 찾아가는 방식이다.
[요청 전달 시 변조]
사용자 → L4 → NAT(IP/MAC 주소 변조) → real server
— ->사용자가 L4를 호출하면 중간에 NAT가 목적지 IP 주소를 real server IP 주소로 변조하고 MAC 주소도 변조한다.
[응답 전달 시 변조]
real server → NAT → L4 → 사용자
— -> real server에서 L4를 거치면서 출발지(source) IP 주소를 L4 가상 IP 주소로 변조한다. 동일 네트워크 대역이므로 MAC 주소는 변조하지 않는다. - Router Mode
Bridge/Transparent Mode와 유사하지만 출발지(source) MAC 주소도 변조된다. - One Arm Mode
사용자가 real server에 접근할 때 목적지 IP는 L4 스위치 IP를 바라본다. L4에 도달하면 L4가 클라이언트에게 받은 목적지 IP 주소를 L4 IP 주소에서 real server IP와 real server MAC 주소로 변조한다. 되돌아가는 IP는 L4의 IP pool의 IP 주소로 변조한다. - DSR (Direct Server Return) Mode
사용자가 real server에 접근할 때 출발지와 목적지의 IP 주소를 변조하지 않고, L4에서 관리하는 real server의 MAC 주소 테이블을 확인해서 MAC 주소만 변조한다. - _네트워크 주소 변환(NAT, Network Address Translation)
- TCP/UDP 포트숫자 와 소스 및 목적지 IP 주소 등 재기록하여 라우터를 통해 네트워크 트래픽을 주고 받는 기술.
- 여러개의 호스트가 하나의 공인 IP주소(VIP)를 통해 접속이 목적
로드밸런싱 Failover
- 로드밸런서도 장애가 날 수 있으므로 이중화 구성을 한다.
로드밸런싱 Failover 구성
- vip로 접속을하고 active된 로드벨런서로 연결
- 장애가 났을경우 standby중인 로드밸런서로 연결
- 이중화된 로드밸런서에서 Health Check
- 장애로 여분 로드밸런서가 동작 할 경우 이를 통해 서버에 접근
로드밸런서 주요 기술
- NAT(Network Address Translation)
- 사설 ip주소를 공인 IP주소로 변경, 주소변경의 역할 - DSR(Dynamic Source Routing protocol)
- 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념 - Tunneling
- 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
- 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제
로드밸런서 알고리즘 종류
- Round Robin(순차방식)
- 요청을 순서대로 각 서버에 균등하게 분배하는 방식
- 서버 커넥션 수나 응답시간에 상관없이 모든 서버를 동일하게 처리
- 다른 알고리즘에 비해서 가장 빠르다 - Least Connection(최소접속방식)
- 서버에 연결되어 있는 Connection 개수만 갖고 단순비교하여 가장 적은곳에 연결 - Weighted Least Connections(가중치 최소접속방식)
- 서버에 부여된 Weight 값을 기반으로 Connection 수의 개수와 같이 고려하여 할당 - Fastest Response Time(응답시간방식)
- 가장 빨리 응답하는 서버에 이용자 요구를 연결하는 방법. 응답시간은 각 서버가 패킷 형태의 요구를 송수신하는데 걸리는 시간을 측정한 것이다. - Adaptive(최소대기방식)
- Open또는 Pending(계류중인) 커넥션을 적게 가지고 있는 서버로 네트웍 커넥션 방향을 지정한다. Pending 커넥션은 Full TCP Handshake를 완성하지 않은 것으로, 이것은 초당 클라이언트 Thread의 수가 증가할 때 더욱 잘 수행된다. - Fixed, Hashing, Random, URL-based, Cookie 등 여러 알고리즘 존재
단순하게 한가지 알고리즘만 선택하지 않고 Least Connection 알고리즘 선택 후 동등한 수의 Connection일 경우 Round Robin을 선택하는 방식으로 결합하여 사용
성능평가
*L2, L3와 같은 국제 표준에 의해 정해진 기능이나 지표가 없다.
- 초당 연결수(Connections per second)
- 하나의 TCP 연결은 클라이언트와 서버간의 쓰리-웨이 핸드쉐이크(three-way handshake) 동작(하나의 SYN과 두 개의 ACK 패킷)으로 정의
- TCP 세션을 열고(opening) 닫는(closing) 작업은 L4 레벨의 기본 세션 관리의 가장 핵심적인 동작, L4의 포워딩 엔진 부분에 가장 많은 작업량을 요구하는 작업이므로, 이 지표는 L4의 네트워크 프로세서 디바이스나 커널의 성능에 따라 좌우 - 동시 연결수(Concurrent connections)
- TCP 세션을 유지 할 수 있는 수치.
- TCP 세션이 열리면 바로 닫히는 것이 아니라 사용자는 세션을 유지함. 이를 얼마나 관리하고 유지 할 수 있느냐가 관건.
- 많은 세션을 관리해야되므로 메모리에 의존적.
- 시중에 수천에서 무제한까지 제공하는 state-less 로드밸런싱(해싱알고리즘) 장비도 있음. 다른 네트워크 장벽이나 서버에서 제한 될 수 있음. - 처리용량(Throughput)
- 스위칭 용량 이 수십Gbps라 적혀있어도 L2레벨의 패킷처리 용량. L4는 한가지 지표로 표현할 수 없음
- 업링크(Uplink) 포트의 인터페이스 규격(패스트 이더넷(100Mbps~1Gbps), 기가바이트 이더넷) 에 따라 제한이 된다.
- bps(bit per second) or pps(packet per second)로 나눠 계산 할 수 있다. - 임계치(Threshold)
- 내부 알고리즘 혹은 처리 방식(url 파싱, 쿠키기반처리(cookie-based persistence) 등)에 따라서 많은 임계치는 각각 다르게 설정 될 수 있다.
L7 스위치(로드밸런서)
- L7 Layer만 다루지 않고 L2, L3기능을 포함하고 부분적인 L4 스위치 기능을 지원
- 콘텐츠(HTTP, FTP, Telnet, Email 등)를 인지하여 원하는 포트로 전달하는 스위치(콘텐츠 기반 스위칭)
- L5 ~ L7(Session, Presentation, Application) packet payload를 분석하여 스위칭 하는 장비
* payload — 흥미, 관심있는 데이터로 해석 - URL-based
- TCP/UDP port(0–65535)에 대한 인지
- 쿠키(Cookie) 기반 연결지속성
- 클라이언트 IP가 공인 IP 치환되어 전송(X-Forwarded-For에 client ip기록) - 패킷 분석을 통한 바이러스 감염 패킷 필터링
L7 동작
- aaa.co.kr로 접속을 하게 될 경우 L4의 경우 서비스 종류(포트별 구분 HTTP, FTP 등)별로 처리
L4 vs L7
-
공통점
- 들어온 packet을 적절한 목적지로 전달(스위치) 역할 수행, 적절한 알고리즘을 통해 로드밸런서로서의 역할 수행
- 스위치 및 서버별 Health Check -
차이점
- L4는 L/B에서 알고리즘을 통해 server1 또는 server2로 데이터를 전송할지 결정을 하고 Client와 3way handshake 실시 하나의 TCP세션을 갖게 된다. (L/B는 중계)그 후 application 층에서 클라이언트의 요청정보(HTTP, FTP 등)를 전달받는다.
- L7는 L/B에서 콘텐츠 기반 스위칭을 위해 3way handshake를 보류한다. L/B와 client 간 3way handshake를 실시하여 따로 TCP 세션을 형성, L7과 server서버는 또 다른 TCP 세션을 형성하고 데이터를 중계한다.
- L7 Dos/SYN Attack에 대한 방어
- L7 패킷 분석을 통한 바이러스 감염 패킷 필터링
- 자원 독점 방지 등을 통한 시스템 보안 강화
- L7은 L4의 서비스 단위 로드밸런싱을 극복하기 위한 포트 + 페이로드 패턴을 이용하여 패킷스위칭
- L4는 TCP/UDP 패킷 정보를 분석하고 해당 패킷이 사용하는 서비스 종류별(HTTP, FTP 등)로 처리.(L4 Mega Proxy 문제 발생)* Mega Proxy
→ IP기반 분리는 요청 양의 불균형이 일어날 수 있다.
Mega Proxy Problem
위의 메가프락시 문제에 대해 L7 스위칭을 사용하게 되면 좀더 정교한 클라이언트별 로드밸런싱을 수행할 수 있다. 즉, 쿠키를 이용하면 같은 IP를 가진 클라이언트에 대해 HTTP 헤더에 서로 다른 쿠키값(예; user=1, user=2)을 할당함으로써 서로 다른 서버로 로드밸런싱 하더라도 세션의 연결지속성을 유지할 수 있다
참고
-
부하분산 https://ko.wikipedia.org/wiki/%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0
-
L4/L7 스위치 개요 (로드밸런서) https://www.freeism.co.kr/wp/archives/698
-
[번역] 최신 네트워크 로드 밸런싱 및 프록시 소개https://ziwon.github.io/post/modern-network-load-balancing-and-proxying/
-
로드밸런서란?
https://nesoy.github.io/articles/2018-06/Load-Balancer -
L4/L7 스위치의 대안, 오픈소스 로드밸런서 HAProxy
https://d2.naver.com/helloworld/284659 -
L4 Server Load Balancing
http://starplaying.tistory.com/275 -
L4스위치와 L7스위치의 차이점
http://knight76.tistory.com/entry/30022588363?category=227874 -
L4/L7 스위치의 개요
http://hiruu.tistory.com/entry/L4L7-%EC%8A%A4%EC%9C%84%EC%B9%98%EC%9D%98-%EA%B0%9C%EC%9A%94 -
전문