Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자공부일기

로드밸런싱 본문

카테고리 없음

로드밸런싱

JavaCPP 2025. 1. 9. 20:58

1. 로드밸런싱의 정의와 목적

정의

로드밸런싱은 클라이언트의 요청(트래픽)을 여러 서버(노드)로 분산 처리하여 시스템 과부하를 방지하고, 서비스의 안정성과 응답 속도를 높이는 기술입니다.

 

로드밸런싱의 이점

1) 애플리케이션 가용성

  • 서버 장애나 유지 관리로 인한 애플리케이션 가동 중지 방지.
  • 서버 문제 자동 감지 및 클라이언트 트래픽을 사용 가능한 서버로 리다이렉션.
  • 활용 사례:
    • 애플리케이션 서버 유지 관리나 업그레이드 중에도 가동 중지 없음.
    • 백업 사이트를 통한 자동 재해 복구.
    • 상태 확인을 통해 가동 중지 문제 예방.

2) 애플리케이션 확장성

  • 여러 서버 간 네트워크 트래픽 지능적 분산으로 확장성 지원.
  • 이점:
    • 트래픽 병목 현상 방지.
    • 서버 추가 및 제거가 용이하여 애플리케이션 트래픽 예측 가능.
    • 중복성 추가로 안정성 강화.

3) 애플리케이션 보안

  • 내장된 보안 기능으로 인터넷 애플리케이션의 보안 계층 강화.
  • 기능:
    • 트래픽 모니터링 및 악성 콘텐츠 차단.
    • 공격 트래픽을 여러 백엔드 서버로 리다이렉션해 영향 최소화.
    • 네트워크 방화벽 그룹을 통해 트래픽 라우팅으로 추가 보안 제공.

4) 애플리케이션 성능

  • 응답 시간 단축과 네트워크 지연 시간 감소로 성능 향상.
  • 주요 역할:
    • 서버 간 로드 균등 배분으로 애플리케이션 성능 최적화.
    • 클라이언트 요청을 지리적으로 가까운 서버로 리다이렉션해 지연 시간 단축.
    • 물리적 및 가상 리소스의 신뢰성과 성능 보장.

 

2. 로드밸런싱의 과정

로드밸런싱의 기본 과정은 다음과 같습니다:

  1. 클라이언트 요청 수신: 클라이언트가 애플리케이션에 접속하려고 요청을 보냅니다. 이 요청은 로드밸런서로 전달됩니다.
  2. 대상 서버 선택: 로드밸런서는 설정된 알고리즘에 따라 요청을 처리할 서버를 선택합니다.
  3. 요청 전달: 선택된 서버로 클라이언트 요청을 전달하고, 응답 데이터를 다시 클라이언트에게 반환합니다.
  4. 헬스 체크 수행: 주기적으로 서버의 상태(Health)를 점검하여 비정상적인 서버로 트래픽이 전달되지 않도록 합니다.

 

3. 로드밸런싱의 구성 요소

  • 리스너(Listener): 클라이언트 요청을 수신하는 구성 요소로, 프로토콜(HTTP, TCP 등)과 포트를 설정합니다.
  • 대상 그룹(Target Group): 트래픽이 전달될 서버(대상)의 그룹입니다. 각 서버는 IP 주소 또는 특정 포트를 통해 등록됩니다.
  • 헬스 체크(Health Check): 서버의 상태를 점검하여 장애가 발생한 서버를 자동으로 제외합니다.

 

4. 로드밸런싱 알고리즘

로드밸런서는 다양한 알고리즘을 사용하여 요청을 분산합니다. 주요 알고리즘은 다음과 같습니다:

  • 라운드 로빈
    이 알고리즘은 DNS(Domain Name System)를 사용하여 연속적인 순환으로 각 서버에 순차적으로 요청을 할당합니다. 다음에 들어오는 요청을 받을 서버를 각 서버의 이름만 사용하여 결정하므로 가장 기본적인 로드 밸런싱 방법입니다.
  • IP 해시
    이 알고리즘에서는 들어오는 요청의 IP 주소를 해시 키라는 더 작은 값으로 계산(또는 해시)합니다. 이 고유 해시 키(사용자의 IP 주소를 나타냄)를 기준으로 사용하여 요청을 특정 서버로 라우팅하는 방법을 결정합니다.
  • 최소 연결
    이름에서 알 수 있듯이 이 알고리즘은 새 클라이언트 요청이 수신될 때 활성 연결 수가 가장 적은 서버에 우선순위를 부여합니다. 이 방법을 사용하면 서버가 연결에 과부하가 걸리는 것을 방지하고 서버 전반의 부하를 항상 일관적으로 유지할 수 있습니다.
  • 가중 라운드 로빈
    이 알고리즘은 각 서버에는 DNS 이름 외에도 '가중치'를 할당합니다. 가중치는 들어오는 요청을 처리하기 위해 어떤 서버가 다른 서버보다 우선순위를 가져야 하는지 결정합니다. 관리자는 서버의 용량과 네트워크의 필요에 따라 각 서버에 가중치를 부여하는 방법을 결정합니다.
  • 최소 응답 시간
    이 알고리즘은 최소 연결 방법과 가장 짧은 평균 서버 응답 시간을 결합한 알고리즘입니다. 서버가 요청을 수행하고 응답을 전송하는 데 걸리는 시간과 연결 수를 모두 평가합니다. 활성 연결 수가 가장 적고 가장 빠른 서버에 들어오는 요청이 할당됩니다.

 

 

로드밸런서란?

로드밸런서는 네트워크 트래픽을 여러 서버로 분산하여 애플리케이션의 성능, 가용성, 안정성을 유지하도록 설계된 시스템입니다. 로드밸런서는 클라이언트 요청을 여러 서버로 효율적으로 분배하고, 서버 과부하를 방지하며, 장애가 발생한 서버를 우회해 서비스 중단 없이 안정적인 환경을 제공합니다.

 

로드밸런서의 유형

로드 밸런서의 기본 목적은 트래픽을 분산하는 것이지만, 특정 기능을 제공하는 여러 유형의 로드 밸런서도 있습니다.

  • 네트워크 로드 밸런서
    네트워크 로드 밸런서는 로컬 및 광역 네트워크에서 트래픽을 최적화하고 지연 시간을 줄입니다. IP 주소 및 대상 포트와 같은 네트워크 정보와 TCP 및 UDP 프로토콜을 사용하여 네트워크 트래픽을 라우팅하고 사용자 수요를 충족할 수 있는 충분한 처리량을 제공합니다.

  • 애플리케이션 로드 밸런서
    이러한 로드 밸런서는 URL, SSL 세션, HTTP 헤더와 같은 애플리케이션 콘텐츠를 사용하여 API 요청 트래픽을 라우팅합니다. 여러 애플리케이션 서버에 중복된 기능이 존재하므로 애플리케이션 수준 콘텐츠를 검토하면 특정 요청을 빠르고 안정적으로 처리할 수 있는 서버를 파악하는 데 도움이 됩니다.

  • 가상 로드 밸런서
    가상화 및 VMware 기술이 부상하면서 가상 로드 밸런서는 이제 서버, 가상 머신, 컨테이너 전반의 트래픽을 최적화하는 데 사용되고 있습니다. Kubernetes와 같은 오픈 소스 컨테이너 오케스트레이션 툴은 클러스터의 컨테이너에서 노드 간에 요청을 라우팅하는 가상 로드 밸런싱 기능을 제공합니다.

  • 글로벌 서버 로드 밸런서
    이 유형의 로드 밸런서는 여러 지리적 위치의 서버로 트래픽을 라우팅하여 애플리케이션 가용성을 확보합니다. 사용자의 요청은 가장 가까운 위치에서 사용할 수 있는 서버에 할당되거나, 서버 장애가 있는 경우에는 사용할 수 있는 다른 위치의 서버에 할당됩니다. 이러한 장애 조치 기능을 덕분에 전역 서버 로드 밸런싱이 재해 복구의 중요한 구성 요소가 됩니다

 

로드밸런서와 로드밸런싱의 차이

1) 로드밸런서 (Load Balancer)

  • 정의:
    • 로드밸런싱을 수행하는 장치(하드웨어)소프트웨어.
    • 클라이언트 요청을 수신하여, 여러 서버 중 적합한 서버로 트래픽을 분배하는 역할을 담당.
    • 네트워크 계층 또는 애플리케이션 계층에서 동작.
  • 주요 역할:
    • 서버 상태 모니터링.
    • 트래픽 분산 및 균형 유지.
    • 장애 조치(Failover) 수행.
    • 네트워크 및 애플리케이션의 보안 계층 강화.
  • 예:
    • AWS Elastic Load Balancer(ELB), NGINX, HAProxy 등.

2) 로드밸런싱 (Load Balancing)

  • 정의:
    • 여러 서버에 트래픽을 분산하여 서버의 부하를 줄이고, 시스템의 가용성과 성능을 극대화하는 행위 또는 과정.
    • 로드밸런서에 의해 수행되며, 특정 알고리즘과 규칙에 따라 트래픽 분배 방식이 결정됨.
  • 주요 특징:
    • 서버의 작업량을 균등하게 배분.
    • 서버 과부하를 방지하고 안정성을 보장.
    • 요청 처리를 효율화하여 지연 시간 감소.
  • 로드밸런싱 알고리즘:
    • 라운드 로빈(Round Robin): 요청을 순차적으로 분배.
    • 가중 라운드 로빈(Weighted Round Robin): 서버의 처리 능력에 비례해 요청 분배.
    • 최소 연결(Least Connection): 현재 가장 적은 연결을 처리 중인 서버에 요청 전송.
    • IP 해시(IP Hash): 클라이언트 IP를 기반으로 특정 서버에 요청 전달.

 

 

구분  로드밸런서  로드밸런싱
의미 트래픽을 분산하는 도구(장치 또는 소프트웨어) 트래픽을 효율적으로 분배하는 행위나 과정
역할 트래픽을 수신하고 서버로 분배 서버 간 부하를 최소화하고 성능 최적화
구체적 요소 네트워크 장비, 소프트웨어, 가상화 도구 등 알고리즘, 트래픽 분배 방식
AWS ELB, NGINX, HAProxy 라운드 로빈, 최소 연결, IP 해시 등