로드 밸런서(Load Balancer)

문딤·2022년 9월 6일
0

로드 밸런서란?

서버에 가해지는 트래픽을 여러대의 서버에게 균등하게 분산시켜주는 역활을 하는 것이다.

서버에 가해지는 트래픽에 따라 서비스의 작동에 에러가 있을텐데, 이러한 문제해결을 위해서는 크게 두가지 방법이 있다.

서버의 인스턴스 성능을 올리는 SCALE-UP 과 서버를 여러대로 나누어서 트래픽을 처리하는 SCALE-OUT 방식이있다.

💨 로드 밸런서는 SCALE-OUT 방식이다.

또한 지속적으로 IP주소가 바뀌기 때문에 도메인 기반으로 사용해야한다.

⭕ 장점

📍 비용 절감
📍 무중단 서비스 제공

주요 기능
📍 NAT
📍 터널링

  • 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 해주는 개념
  • 데이터를 캡슐화해 연결된 상호간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.
    📍 DSR(Dynamic Source Routing protocol)
    로드 밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념이다.

로드 밸런싱 알고리즘

  • 라운드 로빈(Round Robin)

서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식 서버와의 연결이 오래 지속되지 않을 경우 적합하다.

  • 가중 라운드 로빈
    각 서버에 가중치를 매기고 가중치가 높은 서버에 요청을 우선적으로 배정하는 방식
    서버의 트래픽 처리 능력이 다를 경우 사용

  • 최소 연결 방식(Least Connections)
    요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 트래픽을 배정하는 방식
    서버에 들어온 트래픽들이 일정하지 않은 경우에 적합하다.

  • IP 해시 방식(Source)
    클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식
    사용자가 항상 동일한 서버로 연결된다.

로드 밸런싱 종류

L2

  • MAC 주소를 바탕으로 Load Balancing 한다.

L3

  • IP주소를 바탕으로 Load Balancing 한다.

L4

  • Transport 계층(전송 계층) 에서 Load Balancing 합니다. (IP와 Port)
  • 데이터를 변경/수정 할 수 없다.
  • 패킷 레벨에서만 트래픽을 분산하기 때문에 속도가 빠르고 효울이 높다.
  • 섬세한 라우팅이 불가능하지만 L7로드 밸런서보다 가격이 저렴하다.
  • TCP,UDP

L7

  • Application 계층(응용 계층) 에서 Load Balancing 한다.
  • 포트나 헤더등의 정보를 수정 할 수 있다.
  • 패킷 내용을 확인하고 그 내용에 따라 트래픽을 특정 서버에 분산하는 것이 가능하다.
  • 섬세한 라우팅이 가능하고, 비정상적인 트래픽을 필터링 할 수 있다.
  • 패킷의 내용을 복호화 하기 때문에 더 많은 비용이 든다.
  • HTTP(80), HTTPS(443), FTP(21), WebSocket

타겟 그룹

타겟그룹이란 EC2인스턴스를 오토스케일링 할 수 있는 단위로 사용된다.
각각의 타겟그룹에 있는 인스턴스들은 정의된 Health Checks(상태 확인)를 수행하게된다.

Auto Scailing

오토 스케일링은 미리 정의한 용량 정책에 따라 EC2 인스턴스의 용량을 확대하거나 축소할 수 있다. EC2와 토오 스케일링을 결합해 고가용성 아키텍처를 구현할 수 있으며, 언제든 원하는 수만큼의 인스턴스를 운용할 수 있다.

서버의 과부하, 장애 등과 같이 서비스 불능 상황 발생시 자동으로 서버를 복제하여 서버 대수를 늘려주는 작업을 해주는 AWS 서비스라고 생각하시면 된다.

고가용성: 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질, 보통 고가용성을 위해 2개의 서버를 연결하는 방식을 사용한다.

Health Checks(상태 확인)

로드밸런서에는 Health Checks를 할 수 있다.
Health Checks는 타겟그룹에 원하는 경로와 포트를 설정하여 HTTP 응답이 정상적으로 오는지 확인하고, 오지 않는다면 비정상 상태의 인스턴스를 제외한 다른 인스턴스로만 트래픽을 분산한다.

  • InService (정상적으로 응답)
  • OurOfService (응답 실패)

참고

https://yoo11052.tistory.com/63

profile
풀스택개발자가 될래요

0개의 댓글