0. Scale-up vs Scale-out
로드밸런서에 대해서 설명하기에 앞서, scale-up, scale-out에 대해서 알아보자.
scale-up, scale-out은 규모 확장을 통해 성능을 개선하는 방법이다.
이 둘은 차이가 있다.
- scale-up
- 정의: 수직적 규모 확장(vertical scaling). 서버에 고사양 자원(CPU, 많은RAM 등)을 추가하는 행위
- 용도: 서버로 유입되는 트래픽의 양이 적을 때 사용
- 장점: 단순함
- 단점
- 수직적 규모 확장에 한계가 있음. 한 개의 서버에 CPU나 RAM을 무한대로 증설할 방법이 X
- 장애에 대한 자동복구 방안이나 다중화 방안 제시 X. 만약 서버에 장애가 발생한다면 웹/앱 완전 중단됨
👉 이러한 단점 때문에, 대규모 애플리케이션을 지원하는 데는 scale-out이 보다 적절함
- scale-out
- 정의: 수평적 규모 확장. 더 많은 서버를 추가하여 성능을 개선하는 행위
- 용도: 대규모 애플리케이션 지원
위와 같은 설계에서는 사용자는 웹 서버에 바로 연결된다.
이때 발생하는 문제점이 여러 가지가 있다.
첫째, 웹 서버가 다운되면 사용자는 웹 사이트에 접속할 수 없다.
둘째, 너무 많은 사용자가 접속하여 웹 서버가 한계 상황에 도달하게 되면 응답 속도가 느려지거나 서버 접속이 불가능해질 수가 있다.
👉 이러한 문제를 해결하기 위해 로드밸런서(Load balancer)를 도입한다.
1. 정의
로드밸런서는 부하 분산 집합(load balancing set)에 속한 웹 서버들에게 트래픽 부하를 고르게 분산하는 역할을 한다.
2. 동작 및 장점
사용자는 로드밸런서의 공개 IP 주소로 접속한다.
👉 웹 서버는 클라이언트의 접속을 직접 처리하지 않는다.
더 나은 보안을 위해, 서버 간 통신에는 사설 IP 주소가 이용된다.
사설 IP 주소는 같은 네트워크에 속한 서버 사이의 통신에만 쓰일 수 있는 IP 주소로, 인터넷을 통해서는 접속할 수 없다.
로드밸런서는 웹 서버와 통신을 하기 위해 바로 이 사설 주소를 이용한다.
위 그림에서 보듯이 부하 분산 집합에 또 하나의 웹 서버를 추가하고 나면 장애를 자동복구하지 못하는 문제는 해소되며, 웹 계층의 가용성은 향상된다.
- 서버 1이 다운되면 모든 트래픽은 서버2로 전송
👉 웹 사이트 전체가 다운되는 일이 방지됨
부하를 나누기 위해 새로운 서버를 추가할 수도 있음 - 웹 사이트로 유입되는 트래픽이 가파르게 증가하면 두 대의 서버로 트래픽을 감당할 수 없는 시점이 오는데, 로드밸런스를 통해 대처할 수 있음. 웹 서버 계층에 더 많은 서버를 추가하기만 하면 됨. 그럼 로드밸런서가 자동으로 트래픽을 분산할 것임
위 구조에서 데이터 계층을 살펴보면 하나의 데이터베이스 서버뿐이다.
이는 장애의 자동복구나 다중화를 지원하는 구성이 아니다.
이를 해결하기 위해 데이터베이스 다중화 기술(데이터베이스를 여러 대로 복제하여 운영하는 방법)을 이용한다.
- 장점
- 트래픽 분산
- 효율적인 자원 활용: 여러 서버에 트래픽을 고루게 분산하여 서버 자원을 효율적으로 사용함
- 성능 향상: 각 서버에 가해지는 부하를 줄여 응답 시간을 단축하고, 전체 시스템의 성능을 향상함
- 고가용성 및 장애 조치
- 서버 장애 시 자동 복구: 서버 하나가 다운되더라도 웹 사이트 전체가 다운되는 일 방지
- 무중단 유지보수: 서버를 순차적으로 유지보수하거나 업데이트할 수 있어, 전체 시스템의 가용성을 유지할 수 있음
- 보안 강화
- DDoS 공격 방어: 로드밸런서는 DDoS 공격을 분산하여 트래픽을 처리함 👉 서버에 집중된 공격을 완화 가능
- SSL 종료: 로드밸런서에서 SSL 인증을 처리하여 서버의 부하를 줄이고, 보안을 유지할 수 있음
3. L4/L7 로드 밸런싱
OSI 7 계층 중 부하 분산에서는 L4 Load Balancer와 L7 Load Balancer가 가장 많이 사용된다.
L4 Load Blanacer로부터 포트 정보를 바탕으로 로드(부하)를 분산하는 것이 가능하기 때문이다.
OSI 7 계층이 궁금하다면? ↓↓
2024.05.29 - [Computer Science/Network] - [Network] OSI 7계층과 TCP/IP 4계층
L4와 L7의 차이점
- L4 Load Balancer
네트워크 계층이나 트랜스포트 계층의 정보 즉, IP, Port를 기준으로 스케줄링 알고리즘을 통해 부하를 분산한다.
요청하는 서비스의 종류와 상관없이 여러 곳에서 처리하는 방식이다.
- L7 Load Balancer
애플리케이션 계층에서 로드를 분산한다.
HTTP, Cookie 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산한다.
즉, 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능하다.
URL에 따라 부하를 분산시키거나 HTTP 헤더의 쿠키값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화하여 서버에 전달할 수 있다.
- 차이점 정리
L4 로드밸런서 | L7 로드밸런서 | |
네트워크 계층 |
Layer 4 전송계층 | Layer 7 응용계층 |
특징 | TCP/UDP 포트 정보를 바탕으로 함 | TCP/UDP 정보는 물론 HTTP의 URI, FTP의 파일명, 쿠키 정보 등을 바탕으로 함 |
장점 | - 데이터 안을 들여다보지 않고 패킷 레벨에서만 로드를 분산함 👉 속도가 빠르고 효율이 높음 - 데이터의 내용을 복호화할 필요가 없기에 안전함 - L7 로드밸런서보다 가격이 저렴함 |
- 상위 계층에서 로드를 분산하기 때문에 훨씬 더 섬세한 라우팅이 가능함 - 캐싱 기능을 제공함 - 비정상적인 트래픽을 사전에 필터링할 수 있어 서비스 안정성이 높음 |
단점 | - 패킷의 내용을 살펴볼 수 없기 때문에 섬세한 라우팅이 불가능함 - 사용자의 IP가 수시로 바뀌는 경우라면 연속적인 서비스를 제공하지 않음 |
- 패킷의 내용을 복호화해야 하기에 더 높은 비용을 지불해야 함 - 클라이언트가 로드밸런서와 인증서를 공유해야 하기 때문에 공격자가 로드밸런서를 통해서 클라이언트에 데이터를 접근할 때 보안상의 위험성이 존재함 |
4. 로드밸런싱 알고리즘
- 라운드 로빈 Round Robin
- 원리: 순차적으로 각 서버에 요청을 분배함
- 특징: 단순하고 균등하게 트래픽을 분산함 BUT 각 서버의 상태나 성능을 고려하지 않음
- 가중치 라운드 로빈 Weighted Round Robin
- 원리: 각 서버에 가중치를 부여하여 트래픽을 분산함
- 특징: 서버의 처리 능력에 따라 가중치를 조절하여 효율적인 분산을 함
- 최소 연결 Least Connection
- 원리: 현재 연결된 클라이언트 수가 가장 적은 서버로 트래픽을 분배함
- 특징: 각 서버의 부하를 고려하므로보다 효율적임
- 최소 응답 시간 Least Response Time
- 원리: 가장 빠른 응답 시간을 보이는 서버로 트래픽을 분산함
- 특징: 서버 성능과 네트워크 상태를 고려하여 가장 빠른 응답을 제공함
- IP 해싱 IP Hash
- 원리: 클라이언트 IP 주소, 세션 정보 등을 해싱하여 특정 서버에 분배함
- 특징: 동일 클라이언트가 같은 서버에 연결되는 것을 보장할 수 있음
- 예) 게임
참고
https://trillium.tistory.com/124
'Computer Science > Network' 카테고리의 다른 글
[Network] 대칭키, 비대칭키 (1) | 2024.06.05 |
---|---|
[Network] 유니캐스트/브로드캐스트/멀티캐스트/애니캐스트 (0) | 2024.06.03 |
[Network] 흐름제어와 혼잡제어 (1) | 2024.06.03 |
[Network] TCP 3way handshake & 4way handshake (0) | 2024.06.03 |
[Network] TCP와 UDP (0) | 2024.05.30 |