카테고리 없음

HAProxy란?

idea9329 2025. 1. 10. 17:15
반응형

 

HAProxy(High Availability Proxy)는 TCP 및 HTTP 기반의 애플리케이션 로드 밸런싱 프록시 기능을 제공하는 오픈 소스 소프트웨어입니다. HAProxy는 높은 성능과 안정성 덕분에 웹 서버 및 데이터베이스 서버의 로드 밸런싱을 위해 널리 사용됩니다.


HAProxy의 주요 기능

  1. 로드 밸런싱:
    • 클라이언트 요청을 여러 서버에 분산하여 서버 부하를 줄이고, 서비스의 고가용성을 보장합니다.
  2. 프로토콜 지원:
    • TCP(4계층)와 HTTP(7계층) 로드 밸런싱을 모두 지원.
  3. 고가용성(High Availability):
    • 서버 장애 발생 시 자동으로 트래픽을 다른 서버로 라우팅.
  4. SSL/TLS 지원:
    • HTTPS 트래픽 처리 및 암호화/복호화 기능 제공.
  5. Health Check:
    • 백엔드 서버의 상태를 주기적으로 확인하고, 비정상적인 서버를 로드 밸런싱 대상에서 제외.
  6. 세션 지속성(Session Persistence):
    • 특정 클라이언트가 항상 같은 서버로 연결되도록 세션 관리.
  7. HTTP 요청 라우팅:
    • 특정 URL, 호스트 또는 HTTP 헤더 값을 기준으로 요청을 라우팅 가능.

HAProxy의 주요 구성 요소

  1. Frontend:
    • 클라이언트 요청을 수신하는 엔드포인트.
    • 요청의 처리를 정의(예: 프로토콜, 포트, 로드 밸런싱 알고리즘 등).
  2. Backend:
    • 요청을 처리할 서버 그룹.
    • 서버 상태 확인(헬스 체크) 및 로드 밸런싱 정책 정의.
  3. Default:
    • 기본 설정으로, Frontend와 Backend에서 사용될 공통 설정을 정의.

HAProxy 동작 방식

  1. 클라이언트 요청 수신:
    • 클라이언트가 Frontend에서 정의한 포트로 요청을 보냅니다.
  2. 로드 밸런싱 수행:
    • HAProxy는 정의된 로드 밸런싱 알고리즘(예: Round Robin, Least Connections)을 사용해 Backend 서버 중 하나를 선택합니다.
  3. 요청 전달 및 응답 반환:
    • 선택된 서버로 요청을 전달하고, 서버에서 클라이언트로 응답을 반환합니다.

주요 로드 밸런싱 알고리즘

알고리즘설명

Round Robin 요청을 순서대로 각 서버에 분배.
Least Connections 가장 적은 활성 연결을 가진 서버로 요청을 전달.
Source 클라이언트 IP를 기반으로 요청을 특정 서버로 지속적으로 라우팅.
Random 요청을 무작위로 서버에 전달.

HAProxy의 장점

  1. 고성능:
    • 경량화된 구조와 높은 처리 속도로 대규모 트래픽 처리 가능.
  2. 확장성:
    • 서버를 쉽게 추가하거나 제거하여 트래픽을 유연하게 분산.
  3. 높은 안정성:
    • 비정상적인 서버를 자동으로 제외하여 서비스 중단 방지.
  4. 유연한 설정:
    • 다양한 로드 밸런싱 알고리즘과 고급 라우팅 옵션 지원.
  5. 오픈 소스:
    • 무료로 제공되며, 활발한 커뮤니티와 지속적인 업데이트.

사용 사례

  1. 웹 서버 로드 밸런싱:
    • 다수의 웹 서버(예: Apache, Nginx)로 트래픽 분산.
  2. 데이터베이스 로드 밸런싱:
    • MySQL, PostgreSQL 등의 데이터베이스 서버에 요청 분산.
  3. API Gateway:
    • 마이크로서비스 환경에서 API 요청 라우팅 및 로드 밸런싱.
  4. HTTPS 처리:
    • SSL/TLS 트래픽의 종단점으로 동작하며 암호화/복호화를 처리.

간단한 HAProxy 설정 예제

설정 파일 구조

  • 기본 위치: /etc/haproxy/haproxy.cfg
global
    log /dev/log local0
    maxconn 2048

defaults
    log global
    mode http
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms

frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    balance roundrobin
    server server1 192.168.1.101:80 check
    server server2 192.168.1.102:80 check

설명

  1. Frontend:
    • HTTP 요청을 *:80에서 수신.
    • 기본적으로 http_back Backend로 트래픽 전달.
  2. Backend:
    • Round Robin 알고리즘을 사용해 192.168.1.101과 192.168.1.102 서버로 트래픽 분산.

HAProxy 설치 및 시작

Linux에서 설치(Ubuntu 기준):

sudo apt update
sudo apt install haproxy -y

서비스 시작 및 확인:

sudo systemctl start haproxy
sudo systemctl enable haproxy
sudo systemctl status haproxy

결론

HAProxy는 고성능, 안정성, 유연성을 제공하는 로드 밸런싱 및 프록시 솔루션으로, 대규모 트래픽 처리와 고가용성을 보장하는 환경에 적합합니다. 다양한 설정과 기능을 통해 웹 서버 및 데이터베이스 로드 밸런싱, API Gateway 등 여러 사용 사례에 활용할 수 있습니다. 😊

반응형