[네트워크] 로드 밸런싱

HONG·2023년 8월 26일

기술면접

목록 보기
5/6
post-thumbnail

Load Balancing / Load Balancer

1) 등장 배경

(a) 배경

1. Client가 한 두 명일 경우

🖥️ Server: 사용자가 원하는 결과를 여유롭게 응답해줄 수 있음 👍


2. Client가 수천만 명일 경우

🖥️ Server: 모든 client들에게 응답해주려고 하지만 너무 힘들어서 동작 중단 👎


(b) 해결 방법

  • Scale-up : Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법
  • Scale-out : 하나의 Server가 아닌 여러 대의 Server가 나눠서 일을 하는 방법

→ Scale-up보다는 Scale-out을 주로 사용


(c) Scale-out 장점

  1. 하드웨어 향상 비용 > Server(1대) 추가 비용
  2. 여러 대의 Server → 무중단 서비스 제공 가능

(d) 로드 밸런서 없이 Scale-out 했을 때 문제

Scale-out 방식으로 여러 서버를 두면, 각 서버마다 다른 IP가 필요함.
서버마다 다른 공인 IP 주소를 부여하면, 사용자들마다 각각 다른 IP로 접속할 거고, 운영자가 원하는대로 딱 ! 맞아 떨어지게 부하를 분산하기 어려움 (ㅠㅠ).

1000명의 사용자가 있을 때, 서버 2대에 500명, 500명 접속하지 않고, 한 서버에 999명이, 다른 서버에 1명만이 접속한다면 서버 증설 왜 함 .. ?!

→ 이 때, 여러 대의 Server에 균등하게 Traffic 분산 시켜주는 역할이 Load Balancer



2) 정의

(a) 로드 밸런싱 (Load Balancing)

= 컴퓨터 네트워크 기술의 일종
= 여러 개의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에 작업을 나누는 것
= 서버에 가해지는 부하(load)를 분산 시켜 balance를 맞춰주는 기술


(b) 로드 밸런서 (Load Balancer)

= 여러 대의 Server에게 Traffic을 균등하게 분산 시켜주는 역할

Load Balancing (로드 밸런싱) vs Load Balancer (로드 밸런서)

  1. Load Balancing (로드 밸런싱)
    • 여러 서버(리소스) 사이에서 작업 부하를 분산시켜 시스템 전체의 성능을 향상시키는 기술
    • ex) 웹 서버 클러스터에 들어오는 웹 요청을 여러 대의 서버로 나누어 처리하여 각 서버의 부하를 균등하게 분산시키는 것
    • 장점: 서버 응답 시간 개선, 시스템의 가용성과 안정성 향상

  2. Load Balancer (로드 밸런서)
    • 실제로 로드 밸런싱을 수행하는 장치나 소프트웨어
    • 네트워크 트래픽을 받아들이고 이를 여러 대상 서버(리소스)로 분산시킴
    • 일반적으로 부하 분산 알고리즘을 사용하여 트래픽을 분배하며, 서버의 상태를 모니터링하고 필요에 따라 서버를 추가하거나 제거하여 최적의 성능 유지

간단히 말해서,

로드 밸런싱 : 작업 부하를 분산시키는 개념,
로드 밸런서 : 이러한 작업을 실제로 수행하는 장치나 소프트웨어



3) 주요 기능

(a) NAT (Network Address Translation)

  • 사설 IP 주소 → 공용 IP 주소로 바꾸는 데 사용하는 통신망의 주소 변조기
  • 패킷이 로드 밸런서를 통과할 때 패킷의 IP/Port 정보를 변경하는 역할

(b) Tunneling

  • 인터넷상에 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
  • 데이터를 캡슐화해 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화 해제 가능

(c) DSR (Direct Server Return)

  • 로드 밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우(요청에 대한 응답),
    목적지 주소를 로드 밸런서(스위치의 IP 주소)가 아닌 클라이언트의 IP 주소로 전달해서
    네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념

로드 밸런서 == 스위치의 IP 주소 ?

DSR 기술, 즉 특정한 구성 및 네트워크 환경에서 사용될 때만 해당되는 내용.
일반적인 상황에서는 로드 밸런서의 IP 주소 ≠ 스위치의 IP 주소.
둘은 별개의 엔티티로 사용됨.



4) Architecture



5) 종류

로드 밸런싱 종류는 OSI 7계층을 기반으로 구분.
이 과정에서 DNS에 대한 요청과 응답 발생.

L2

  • MAC 주소를 바탕으로 Load Balancing

L3

  • IP 주소를 바탕으로 Load Balancing

L4

  • Transport Layer Level (L4) 위에서 동작
  • IP, Port 기준으로 Load Balancing
  • 클라이언트에서 로드 밸런서(DNS)로 요청을 보냈을 때,
    최적의 서버로 요청을 전송하고 그 결과를 클라이언트에 알려줌
    = 요청하는 서비스의 종류와 상관없이 공장을 여러 개 돌리는 것



+) 추가 분류 (기준: TLS/SSL Termination 유무)

TLS/SSL Termination 이란?
TLS/SSL 통신이 끝났음을 통보하는 과정으로,
트래픽을 암호화 및 복호화하는 연산으로부터 백엔드 서버를 분리시키기 위한 작업
ex) HTTP/HTTPS 통신

  1. TCP/UDP Termination 로드 밸런서
  • 지연시간 낮음
  • TLS Termination: 로드 밸런서가 수행
  1. TCP/UDP Passthrough 로드 밸런서
  • 연결 추적과 NAT를 수행한 뒤 각 연결에 대한 패킷을 백엔드로 전달
  • TLS Termination 사용 X
    → 로드 밸런서에 가해지는 부하 적음
    → 훨씬 더 많은 연결 및 패킷 처리 가능
  • Termination과 다르게 DSR 가능


L7

  • Applicaion Layer Level (L7) 위에서 동작
  • IP, Port 외에도 URI, Payload, Http Header, Cookie 등의 내용을 기준으로 Load Balancing
    → “콘텐츠 기반 스위칭” 이라고도 함


L4 Load Balancer vs L7 Load Balancer

(1)
L4 Load Balancer = 단지 부하를 분산시키는 것
L7 Load Balancer = 여러 개의 작은 서비스를 운영하고, 요청을 각각의 서버에 분산 (MSA)
ex) L7에서는 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해 가볍고 작은 단위로 여러 개의 서비스를 운영하고, 요청을 각 서버에 맞게 분산시킴

(2)
L7 Load Balancer

  • L4와 달리, 데이터를 분석해서 처리할 수 있음
  • 장점: 악의적이거나 비정상적인 콘텐츠 감지를 통한 보안 지점 구축 가능
  • 단점: 자원 소모가 큼

L4 Load BalancerL7 Load Balancer 가 가장 많이 사용되는 이유

L4 Load Balancer 부터 Port 번호를 바탕으로 부하를 분산하는 것이 가능하기 때문!
L4 Load Balancer는 4계층 이하 모든 계층의 정보를 가지기 때문에 IP 주소Port 번호를 활용 가능
→ 즉, 한 대에 서버에 각기 다른 Port 번호를 부여해 다수의 서버 프로그램을 운영하는 경우라면 최소한 L4 Load Balancer를 사용해야만 함.

L7 Load Balancer는 HTTP Header, Cookie 등과 같은 사용자의 Request를 기준으로 특정 서버에 트래픽을 분산하는 것이 가능!
패킷의 내용을 확인해서 그 내용에 따라 트래픽을 특정 서버에 전송하는 것이 가능하기 때문에 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있음.
또한, L7 Load Balancer는 서버의 응답까지도 알고 분석할 수 있음!
서버들로부터 필요한 정보를 응답 받아 클라이언트의 요청을 전달하기 전에 서버의 상태를 파악한 후 로드밸런싱 진행 가능.
그렇기 때문에 MSA 등장 후 L7 Load Balancer도 많이 사용하고 있음.


정리

계층설명
L2Data Link 계층 사용 / MAC 주소 기반 Load Balancing
L3Network 계층 사용 / IP 주소 기반 Load Balancing
L4Transport 계층 사용 / Port 기반 Load Balancing
L7Application 계층 사용 / 요청(URL) 기반 Load Balancing


6) Load Balancer 동작 방식

(1) Bridge/Transparent Mode

사용자가 서비스를 요청하면 L4로 전달된 목적지 IP 주소를 real server IP 주소로 변조하고
MAC 주소를 변조해서 목적지를 찾아가는 방식

(출발지(source) MAC 주소는 변조 X ← 동일 네트워크 대역)


(2) Router Mode

Bridge/Transparent Mode와 유사하지만 출발지(source) MAC 주소도 변조되는 방식


(3) One Arm Mode

사용자가 real server에 접근할 때 목적지 IP는 L4 스위치 IP를 바라봄.

L4에 도달하면 L4가 클라이언트에게 받은 목적지 IP 주소를 L4 IP 주소에서 real server IP와 real server MAC 주소로 변조하고, 되돌아가는 IP는 L4의 IP pool의 IP 주소로 변조하는 방식


(4) DSR(Direct Server Return) Mode

사용자가 real server에 접근할 때 출발지와 목적지의 IP 주소를 변조하지 않고,
L4에서 관리하는 real server의 MAC 주소 테이블을 확인해서 MAC 주소만 변조하는 방식



7) Load Balancing 알고리즘 종류

(1) Round Robin

  • 클라이언트의 요청을 여러 대의 서버에 순차적으로 분배하는 방식
  • 추가 계산 작업 없이 들어온 요청을 빠르게 서버에 분산해 전송하는 1차원적 주기능에 focus
    → 가장 많이 사용되는 로드 밸런싱 기법
  • 모든 서버의 스펙이 동일하거나 비슷한 경우에 사용

(2) Weighted Round Robin

  • 각 서버에 가중치(처리량)를 지정한 후, 가중치가 높은 서버에 클라이언트 요청을 우선적으로 전달하는 방식
  • 주로 서버의 트래픽 처리 용량이 다를 경우, 즉 특정 서버의 사양이 더 좋을 경우에 사용

(3) Least Connection

  • 요청이 들어온 시점에 가장 적게 연결되어 있는 서버에 요청을 전송하는 방식
  • 서버에 분배된 트래픽이 일정하지 않을 경우에 주로 사용

(4) Weighted Least Connection

  • Least Connection 방식에 가중치를 적용한 방식
  • 서버마다 트래픽 처리 능력이 다른 경우에 사용

(5) Fastest Response Time

  • 서버의 현재 연결 상태와 응답 시간을 모두 고려하여,
    가장 적은 연결 수와 가장 짧은 응답 시간을 가지는 서버에 우선 적으로 요청을 보내는 방식

(6) IP Hash

  • 클라이언트의 IP 주소가 어떤 서버로 클라이언트의 요청이 전달될 지를 결정하는 방식
  • 클라이언트의 IP 주소가 바뀌지 않는 이상, 동일한 서버로 요청이 전송됨을 보장
  • RR 방식과 달리, 서버에 session clustering이 구성되어 있지 않은 경우에 주로 사용


8) Load Balancer 가 Server를 선택하는 기준


(a) Round Robin

  • 단순히 Round Robin 으로 분산하는 방식

(b) Least Connections

  • 연결 개수가 가장 적은 서버를 선택하는 방식
  • 트래픽으로 인해 세션이 길어지는 경우 권장

(c) Source

  • 사용자의 IP를 Hashing 하여 분배하는 방식
  • 사용자는 항상 같은 서버로 연결되는 것을 보장


9) Load Balancer 의 장애 대비

Load Balancer 를 이중화하여 장애를 대비할 수 있음

  1. 이중화된 Load Balancer들은 서로 Health Check
  2. Main LB가 동작하지 않으면 가상IP(VIP, Virtual IP)는 여분의 LB로 변경
  3. 여분의 LB로 운영



10) AWS (참고)

(1) CLB (Classic Load Balancer)

  • L4, L7 Load Balancing
  • listen: TCP, SSL/TLS, HTTP, HTTPS
  • 현재는 거의 사용 X

(2) ALB (Application Load Balancer)

  • L7 Load Balancing
  • listen: HTTP, HTTPS, gRPC
  • target: IP, Instance, Lambda
  • 가장 기본적

(3) NLB (Network Load Balancer)

  • L4 Load Balancing
  • listen: TCP, UDP, TLS
  • target: IP, Instance
  • 탁월한 성능

(4) GLB (Gateway Load Balancer)

  • L3, L4 Load Balancing
  • listen: IP
  • target: IP, Instance# Load Balancing / Load Balancer

0개의 댓글