본문 바로가기
DevOps

HAProxy란? (고성능 로드밸런서, nginx controller 비교)

by BenKangKang 2025. 7. 11.

들어가며

현대 웹 애플리케이션은 수많은 사용자의 요청을 처리해야 합니다. 단일 서버로는 이러한 대용량 트래픽을 감당하기 어렵죠. 이때 필요한 것이 바로 로드밸런서(Load Balancer)입니다. 그 중에서도 HAProxy는 업계 표준으로 자리잡은 고성능 로드밸런서입니다.

HAProxy가 무엇인가요?

HAProxy(High Availability Proxy)는 오픈소스 로드밸런서이자 리버스 프록시 서버입니다. 2000년부터 개발되기 시작해 현재까지 꾸준히 발전해온 성숙한 솔루션으로, 전 세계 수많은 기업에서 사용되고 있습니다.

주요 특징

고성능: HAProxy는 C언어로 개발되어 매우 빠른 처리 속도를 자랑합니다. 단일 프로세스에서 수만 개의 동시 연결을 처리할 수 있습니다.

안정성: 무중단 서비스를 위한 다양한 기능을 제공하며, 서버 장애 시 자동으로 트래픽을 다른 서버로 전환합니다.

유연성: 다양한 로드밸런싱 알고리즘과 상세한 설정 옵션을 제공하여 복잡한 요구사항도 만족시킬 수 있습니다.

왜 HAProxy를 사용해야 할까요?

1. 부하 분산

여러 서버에 트래픽을 분산시켜 단일 서버의 부하를 줄이고 전체 시스템의 처리 능력을 향상시킵니다.

2. 고가용성

서버 장애 시 자동으로 정상적인 서버로 트래픽을 전환하여 서비스 중단을 최소화합니다.

3. SSL 종료

SSL 암호화/복호화를 HAProxy에서 처리하여 백엔드 서버의 부하를 줄일 수 있습니다.

4. 상세한 모니터링

실시간 통계와 로깅 기능을 통해 서비스 상태를 정확히 파악할 수 있습니다.

주요 기능들

로드밸런싱 알고리즘

  • Round Robin: 순차적으로 서버에 요청 분배
  • Least Connections: 연결 수가 가장 적은 서버로 분배
  • IP Hash: 클라이언트 IP를 기반으로 특정 서버로 분배
  • Weighted: 서버별 가중치를 설정하여 분배

헬스체크

  • HTTP, TCP, MySQL 등 다양한 프로토콜 지원
  • 정기적인 서버 상태 확인
  • 장애 서버 자동 제외 및 복구 시 자동 포함

세션 지속성

  • 쿠키 기반 세션 지속성
  • IP 기반 세션 지속성
  • 애플리케이션 세션 관리

HAProxy 설정 예시

기본적인 HAProxy 설정 파일의 구조를 살펴보겠습니다:

global
    daemon
    maxconn 4096
    log stdout local0

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

frontend web_frontend
    bind *:80
    default_backend web_servers

backend web_servers
    balance roundrobin
    option httpchk GET /health
    server web1 192.168.1.10:8080 check
    server web2 192.168.1.11:8080 check
    server web3 192.168.1.12:8080 check

이 설정은 80번 포트로 들어오는 요청을 3개의 웹 서버에 라운드로빈 방식으로 분배합니다.

실제 사용 사례

1. 웹 애플리케이션 로드밸런싱

여러 웹 서버 인스턴스 간 트래픽 분산으로 성능 향상과 가용성 확보

2. 데이터베이스 로드밸런싱

읽기 전용 데이터베이스 복제본들 간의 쿼리 분산

3. 마이크로서비스 아키텍처

서비스 간 통신에서 로드밸런싱 및 서비스 디스커버리 역할

4. SSL 오프로딩

SSL 처리를 HAProxy에서 담당하여 백엔드 서버 리소스 절약

HAProxy vs 다른 로드밸런서

vs Nginx

  • HAProxy는 순수 로드밸런서로 더 세밀한 제어 가능
  • Nginx는 웹 서버 기능도 포함하여 더 다양한 용도로 사용

vs AWS ELB

  • HAProxy는 온프레미스 환경에서 더 유연한 설정 가능
  • AWS ELB는 클라우드 환경에서 관리 부담 적음

모니터링과 관리

HAProxy는 웹 기반 통계 페이지를 제공하여 실시간으로 서버 상태를 확인할 수 있습니다. 또한 다양한 메트릭을 제공하여 Prometheus, Grafana 등과 연동한 모니터링 시스템 구축도 가능합니다.

성능 최적화 팁

1. 적절한 타임아웃 설정

클라이언트와 서버 타임아웃을 애플리케이션 특성에 맞게 조정

2. 연결 풀링

maxconn 설정을 통한 적절한 연결 수 관리

3. 압축 활용

HTTP 압축 기능을 통한 대역폭 절약

4. 캐싱 전략

정적 컨텐츠 캐싱으로 백엔드 서버 부하 감소

보안 고려사항

HAProxy는 DDoS 공격 방어, IP 기반 접근 제어, 요청 속도 제한 등 다양한 보안 기능을 제공합니다. 또한 SSL/TLS 구성을 통해 안전한 통신을 보장할 수 있습니다.

 

쿠버네티스 클러스터에서 NGINX Controller와 HAProxy를 함께 사용할 수 있어요

일반적인 사용 패턴들

1. Multi-tier 로드밸런싱

외부 트래픽 → HAProxy (L4) → NGINX Controller (L7) → 서비스들
  • HAProxy: TCP 레벨에서 1차 로드밸런싱
  • NGINX Controller: HTTP 레벨에서 세밀한 라우팅

2. 서비스별 분리

# HAProxy로 특정 서비스 처리
apiVersion: v1
kind: Service
metadata:
  name: haproxy-service
spec:
  type: LoadBalancer
  selector:
    app: haproxy
---
# NGINX Controller로 웹 앱들 처리
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-ingress
  annotations:
    kubernetes.io/ingress.class: nginx

3. 클래스 기반 분리

# HAProxy Ingress Controller
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    kubernetes.io/ingress.class: haproxy
spec:
  rules:
  - host: api.example.com
---
# NGINX Ingress Controller  
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: web.example.com

실제 사용 사례

트래픽 타입별 분리

  • HAProxy: 데이터베이스, gRPC, TCP 연결
  • NGINX: 웹 애플리케이션, REST API

성능 최적화

  • HAProxy: 고성능이 필요한 서비스
  • NGINX: 정적 파일 서빙, 캐싱이 필요한 서비스

점진적 마이그레이션

  • 기존 NGINX Controller 유지
  • 새로운 서비스는 HAProxy로 처리

주의사항

포트 충돌 방지

# HAProxy는 8080 포트 사용
service:
  type: LoadBalancer
  ports:
  - port: 8080
---
# NGINX는 80 포트 사용  
service:
  type: LoadBalancer
  ports:
  - port: 80

리소스 관리

  • 각각 별도의 네임스페이스 사용 권장
  • CPU/메모리 리소스 제한 설정

모니터링

  • 두 컨트롤러 모두 모니터링 필요
  • 메트릭 수집 경로 분리

권장사항

현재 NGINX Controller를 잘 사용하고 계시다면:

  1. 먼저 현재 구성의 한계점 파악
  2. 특정 요구사항이 생겼을 때 HAProxy 추가 고려
  3. 점진적 도입으로 리스크 최소화

 

마무리

HAProxy는 검증된 성능과 안정성을 바탕으로 많은 기업에서 신뢰하고 사용하는 로드밸런서입니다. 무료 오픈소스이면서도 상용 솔루션에 버금가는 기능을 제공하여 비용 효율적인 선택이 될 수 있습니다.

웹 애플리케이션의 확장성과 가용성을 고민하고 있다면, HAProxy를 검토해보시는 것을 추천드립니다. 처음에는 학습 곡선이 있을 수 있지만, 한번 익숙해지면 강력하고 유연한 도구로 활용할 수 있을 것입니다.

댓글