[CS Study] Network - Load balancing

Frye 'de Bacon·2023년 11월 6일
0

Computer Science(CS)

목록 보기
6/40

로드 밸런싱(Load balancing)

로드 밸런싱의 정의

로드 밸런싱은 네트워크나 서버에 가해지는 부하(Load)를 분산해주는 기술로, CPU 혹은 Data storage와 같은 컴퓨터 자원에 작업을 나누는 것을 의미한다. 이를 통해 가용성과 응답시간 등을 최적화할 수 있다.

로드 밸런싱의 필요성

로드 밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다. 일반적으로 서비스에 접속하는 클라이언트의 수가 늘어나게 되면 그에 따라 서버의 확장이 필요하게 되는데, 이때 대처 가능한 방법은 크게 Scale-out과 Scale-up 두 가지이다. 이에 대한 자세한 사항은 뒤에서 다룰 것인데, 간단히 정리하면 다음과 같다.

  • Scale-out : 서버를 여러 대로 증설하여 운영하는 것
  • Scale-up : 서버 자체의 성능을 확장시키는 것

이때 Scale-out을 통해 서버를 확장할 경우 여러 대의 서버에 대하여 부하(트래픽)를 균등하게 분산해 주는 로드 밸런싱이 반드시 필요하다.

로드 밸런싱의 기본 기능

  1. 상태 확인(Health check)
    서버에 대한 주기적인 health check를 통해 서버의 장애 여부를 판단, 정상 동작 중인 서버에만 트래픽을 보낸다.
  • L3 체크 : ICMP(네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜)를 이용해 서버의 IP 주소가 통신 가능한 상태인지 확인
  • L4 체크 : 3 way handshaking 기반 통신인 TCP의 특징을 바탕으로 각 포트 상태를 확인
  • L7 체크 : 어플리케이션 계층에서 실제 웹페이지에 통신을 시도함으로써 이상 유무를 파악
  1. 터널링(Tunneling)
    데이터 스트림을 인터넷상에서 가상의 파이프를 통해 전달시키는 기술로, 패킷 내에 터널링할 대상을 캡슐화시켜 목적지까지 전송한다. 연결된 상호 간에만 캡슐화된 패킷을 구별하여 캡슐화를 해제하도록 한다.
  2. NAT(Network Address Translation)
    내부 네트워크에서 사용하는 사설 IP 주소와 로드 밸런서 외부의 공인 IP 주소 간의 변환을 담당한다. 로드 밸런싱 관점에서는 여러 개의 호스트(클라이언트)가 하나의 공인 IP 주소를 통해 접속하도록 하는 것이 주 목적이다.
  • SNAT(Source Network Address Translation) : 내부에서 외부로 트래픽이 나갈 경우 내부 사설 IP 주소를 외부 공인 IP 주소로 변환
  • DNAT(Destination Network Address Translation) : 외부에서 내부로 트래픽이 들어오는 경우 외부 공인 IP 주소를 내부 사설 IP 주소로 변환
  1. DSR(Direct Server Return)
    서버에서 클라이언트로 트래픽이 되돌아가는 경우 목적지를 클라이언트로 설정한 뒤 네트워크 장비나 로드 밸런서를 거치지 않고 바로 클라이언트를 찾아 가도록 하는 기능이다. 이를 통해 로드 밸런서의 부하를 줄일 수 있다.


로드 밸런서(Load balancer)

정의

로드 밸런서는 로드 밸런싱 기술을 제공하는 서비스 혹은 장치를 말하며, 클라이언트와 네트워크 트래픽이 집중되는 서버들 혹은 네트워크 허브 사이에 위치한다.

로드 밸런서의 종류

  • L4 load balancer
    전송 계층에서 로드를 분산하며, IP 주소나 포트 번호, MAC 주소 등에 따라 트래픽을 나누고 분산 처리하는 것이 가능하다. CLB(Connection Load Balacer) 혹은 SLB(Session Load Balacer) 등으로 불리기도 한다.
  • L7 load balancer
    애플리케이션 계층에서 로드를 분산하며, OSI 7계층의 프로토콜(HTTP, SMTP, FTP 등)을 바탕으로도 분산 처리가 가능하다.


Load balancing algorithm

라운드 로빈 방식(Round robin method)

서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식으로, 여러 대의 서버가 동일한 스펙을 가지고 있으며 서버와의 연결(세션)이 오래 지속되지 않는 경우 적합하다.

가중 라운드 로빈 방식(Weighted round robin method)

각 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분하는 방식이다. 주로 서버의 트래픽 처리 능력이 상이한 경우 사용된다.

IP 해시 방식(IP hash method)

클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식으로, 사용자의 IP를 해싱해 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되도록 할 수 있다.

최소 연결 방식(Least connection method)

요청이 들어온 시점에 가장 적은 연결 상태에 있는 서버에 우선적으로 트래픽을 배분하는 방식으로, 세션이 길어지는 경우가 많거나 서버에 분배된 트래픽이 일정하지 않은 경우 적합한 방식이다.

최소 응답 시간 방식(Least response time method)

서버의 현재 연결 상태와 응답 시간(response time: 서버에 요청을 보내고 최초의 응답을 받을 때까지의 소요 시간)을 모두 고려하여 트래픽을 배분하는 방식이며, 연결 상태가 가장 적고 응답 시간도 가장 짧은 서버에 우선적으로 로드를 배분한다.



Scale out, scale up

Scale-out

스케일 아웃은 서버 자체를 추가함으로써 확장하는 방식을 말한다. 기존의 서버와 비슷한 사양의 서버를 추가로 연결함으로써 데이터 용량을 증가시키고 성능을 향상시키는 것이다.
서버를 추가로 확장하기 때문에 수평 스케일링(Horizontal scaling)이라고도 불린다.

Scale-up

스케일 업은 쉽게 말해 서버를 기존 서버보다 높은 사양으로 업그레이드하는 것을 말한다. CPU나 메모리를 업그레이드하는 방식 혹은 서버에 디스크를 추가하는 방식 등이 이에 해당한다. 소프트웨어적으로는 AWS의 EC2 인스턴스 사양을 micro에서 small로, small에서 medium으로 높이는 것이 해당할 것이다.
하나의 서버가 가진 능력을 증강하는 것으로 수직 스케일링(Vertical scaling)이라고도 한다.

두 방식의 장단점 비교

스케일 아웃vs스케일 업
하나의 서버에서 처리하던 일을 여러 서버에서 나눠서 처리
수평 확장으로서 지속적인 확장이 가능
확장성CPU 혹은 RAM 변경, Data storage 추가 등으로 서버의 성능을 높임
성능 확장에 한계가 있음
성능 증가에 따른 비용의 증가 폭이 큼비용비교적 저렴한 서버 사용으로 비용의 부담이 적음
하나의 서버에 부하가 집중되므로 장애 영향도가 큼장애부하가 여러 대의 서버에 분산 처리되므오, 장애 시 전면 장애의 가능성이 낮음

전반적으로 스케일 아웃이 스케일 업보다 합리적인 방식으로 보이지만, 무작정 스케일 아웃이 더 낫다고 할 수는 없다. 제공하는 서비스의 종류나 스토리지 용도 등에 따라 적절히 선택하여야 할 것이다.



참고 자료

profile
AI, NLP, Data analysis로 나아가고자 하는 개발자 지망생

0개의 댓글