본문 바로가기

IT/Web

로드밸런서란?(L4, L7)

1. 로드밸런서란?(L4, L7)

로드밸런싱이 필요할까?

서버가 하나만 존재할 수천만명의 사람들이 서버에 동시 접속하면 어떻게 될까요? 하나의 서버는 부하를 감당하지 못할 수도 있을 것입니다. 이를 해결하는 방식에는 장비를 업그레이드하는 Scale-up방식과 장비를 여러개 두는 Scale-out방식이 있습니다.

서버가 하나 있는데, 세계의 사람들이 서버에 동시에 접속한다면?

서버는 자신에게 오는 시스템 부하를 감당하지 못할거에요 이를 해결하는 방법에는, 해당 서버를 업드레이드하는 "SCALE-UP" 방식과, 장비의 대수를 추가하여 서버 부하를 나누는 "SCALE-OUT" 방식이 있습니다.

로드밸런서 없이 서버를 SCALE-UP 했을때 발생하는 문제!

Scale-out 방식으로 여러 서버를 둔다면 해당 서비스에 접근하기 위해서는 서버마다 다른 IP 필요하겠죠? 서버마다 다른 공인 IP 부여한다면 사용자들마다 각각 다른 IP 접속할 것이고, 운영자가 원하는대로 ! 떨어지게 부하를 분산하기 어렵습니다. 운영자가 원하는대로 50:50 비율로 접속할거라는 예상이 맞아떨어지기는 어려울거에요, 1000명의 사용자가 있을때 서버 2대에 500 : 500 접속하지 않고, 999명은 A서버에, 1명은 B서버에 접속한다면, 고가의 비용을 들여 새로운 서버를 증설한것이 헛수고가 되어버리니까요

.. 서버가 한두푼이 아닌데 이렇게 운영될거면 괜히 산거아니야?

이런 상황을 방지하기 위해 서버에 가해지는 트래픽의 부하를 분산하는 작업이 필요합니다. 이렇게 두개이상의 컴퓨터자원에 작업을 나누는것을 로드밸런싱이라고 하고, 이런 작업을 하는 장비를 로드밸런서라고 합니다

2. 로드밸런서의 종류

L2 Data link 계층을 사용, Mac주소 기반 부하 분산
L3 Network 계층을 사용, IP주소 기반 부하 분산
L4 Transport 계층을 사용, Port 기반 부하 분산
L7 Application 계층을 사용, 요청(URL) 기반 부하 분산

로드밸런서의 종류를 나누는 기준은 OSI 7계층을 기준으로 어떻게 부하를 분산하는지에 따라 종류가 나뉩니다. 2계층을 기준으로 부하를 분산한다면 L2 로드밸런서, L2, L3 계층을 기준으로 부하를 분산한다면 L3장비 인거죠. 상위 계층으로 갈수록 섬세한 부하 분산이 가능하지만 가격이 비싸집니다.

3. 로드밸런서의 주요 기능

로드밸런서는 3가지의 주요 기능을 통해 로드밸런싱을 진행합니다. (^^)

Network Address Translation(NAT)

사설 IP 공인 IP 바꿉니다.

Tunneling

데이터를 캡슐화하여 연결되어진 노드만 데이터의 캡슐을 풀어서 볼수있게 해줍니다.

Dynamic Source Routing protocol(DSR)

요청에 대한 응답을 로드밸런서가 아닌 클라이언트의 IP 응답합니다.

2. 로드밸런싱이란 뭘까?

로드() 밸런싱(균형) 길을 가는데 균형을 맞춰주는것입니다. 한도로에 차가 너무 많으면 복잡하니까 이차는 이쪽으로 이동시켜서 주행하도록 하자~ 개념인데, 이것을 네트워크화 시키면 ", 혹은 셋이상의 중앙처리장치 or 저장장치와 같은 컴퓨터 자원들에게 작업을 나눠 분배하는것을 의미합니다.

로드밸런서의 종류

1) 운영체제 로드밸런서

물리적 프로세서 간의 작업을 스케쥴링 합니다.

2) 네트워크 로드밸런서

네트워크 작업을 스케쥴링 합니다. 주로 저희가 하는 로드밸런싱은, 네트워크 로드밸런싱 입니다 (^^)

3. 네트워크 로드밸런서 종류

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

4. 로드밸런서 동작방식(Mode )

 

 

Bridge/Transparent Mode

사용자가 서비스를 요청하면 L4 전달된 목적지 IP 주소를 real server 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 주소만 변조합니다.

5. 로드밸런싱 Failover

로드밸런서도 장애가 있으므로 이중화 구성을 합니다. 평소에는 active 로드벨런서로 연결 장애가 났을경우에는 standby(대기)중인 로드밸런서로 연결이 됩니다, 때문에 이중화된 로드밸런서에서 Health Check(장애여부 체크) 하고장애로 여분 로드밸런서가 동작 경우 이를 통해서 서버에 접근 합니다.

6. 성능관련 용어

로드밸런서 장비들의 스펙표를 보면 스펙을 설명하기 위한 특정 단어들이 있습니다. 단어들에 대해서 설명 드릴게요(^^)

초당 연결수(Connections per second)

- 하나의 TCP 연결은 클라이언트와 서버간의 쓰리-웨이 핸드쉐이크(three-way handshake) 동작(하나의 SYN 개의 ACK 패킷)으로 정의됩니다. 하나의 SYN + 두개의 패킷 = 3가지가 핸드쉐이크(악수, 같이동작한다)라는 의미입니다.

- TCP 세션을 열고(opening) 닫는(closing) 작업은 L4 레벨의 기본 세션 관리의 가장 핵심적인 동작입니다. L4 포워딩 엔진 부분에 가장 많은 작업량을 요구하는 작업이므로, 지표는 L4 네트워크 기계나 커널의 성능에 따라 좌우됩니다. 초당 얼마나 많은 패킷이 연결이 되나~ 하는 기준 지표라고 생각해주세요 (^^)

동시 연결수(Concurrent connections)

- TCP 세션을 유지 있는 수치입니다초당연결수와 다른점은 "일시적동작" 아닌, "연결 유지" 입니다.

- TCP 세션이 열리면 바로 닫히는 것이 아니라 사용자는 세션을 유지합니다.

- 많은 세션을 관리해야되므로 메모리에 의해 결정되는 경우가 많습니다.

처리용량(Throughput)

- 위치 자체가 처리할 잇는 처리 용량을 의미합니다. L4 스위치에 병목 현상이 걸리지 않도록  방화벽 보다 높은 성능으로 선정되어야 합니다.

7. L4 vs L7

공통점

- 들어온 packet 적절한 목적지로 전달(스위치) 역할 수행합니다.

- 적절한 알고리즘을 통해 로드밸런서로서의 역할을 수행합니다.

- 스위치 서버별 Health Check 통해, 이중화 구성후 장애시 Standby 상태의 기기는 장애스위치의 패킷을 넘겨와 active 동작해 서버에 넘겨줍니다.

차이점

- L4 로드밸런서에서 알고리즘을 통해 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 패킷 분석을 통한 바이러스 감염 패킷 필터링이 가능합니다.

- L7 L4 서비스 단위 로드밸런싱을 극복하기 위한 포트 + 페이로드 패턴을 이용하여 패킷스위칭을 합니다.

- L4 TCP/UDP 패킷 정보를 분석하고 해당 패킷이 사용하는 서비스 종류별(HTTP, FTP ) 처리하기 때문에 프록시 문제가 발생 있습니다.