Cloud

HAProxy

Tech Crunchy 2025. 4. 27. 14:05
728x90

개요

HAProxy(High Availability Proxy)는 오픈소스 기반의 TCP/HTTP 로드 밸런서 및 프록시 솔루션입니다. 고성능, 안정성, 낮은 메모리 사용량을 특징으로 합니다. 수만 개의 동시 연결을 처리할 수 있어 대규모 웹 서비스, API Gateway, 데이터베이스 로드 밸런싱 등 다양한 환경에서 널리 활용됩니다.

 

내용

시스템 아키텍처에서 프록시는 클라이언트와 서버 사이의 중개자로 동작하며 요청 중계, 캐싱, 보안, 로드 밸런싱 등 다양한 목적으로 사용됩니다.

  • 요청 중계: 클라이언트 요청을 받아 실제 서버로 전달하고, 서버 응답을 다시 클라이언트에 반환
  • 캐싱: 프록시는 자주 요청되는 데이터를 캐시에 저장 후, 동일 요청에 대해 캐시된 데이터를 바로 전달
  • 보안: 외부에서 내부 네트워크로의 직접 접근을 차단하여 보안을 강화
  • 로드 밸런싱: 여러 서버에 트래픽을 분산시켜 서버 과부하를 방지
  • 접근 제어: 특정 웹사이트나 서비스에 대한 접근을 제한할 수 있음
  • 로깅: 클라이언트와 서버 간의 트래픽을 기록함

 

HAProxy는 기본적으로 리버스 프록시(Reverse Proxy) 형태로 동작합니다. 클라이언트의 요청을 받아 백엔드 서버에 전달하고, 서버의 응답을 다시 클라이언트에 반환합니다. 이 과정에서 쿠키나 세션 정보를 활용해 세션 지속성을 유지할 수 있습니다.

 

 

HAProxy의 설정 파일은 네 가지 핵심 섹션으로 구성되어 있습니다.

 

1. Global
HAProxy 전체 프로세스에 적용되는 전역 설정을 정의합니다. 성능, 보안, 로깅, 사용자/그룹, 최대 연결 수 등 프로세스 수준의 튜닝이 여기에 포함됩니다.

 

2. Defaults

frontend, backend 섹션에 공통적으로 적용할 기본값을 지정합니다. 중복 설정을 줄이고, 일관된 환경을 유지하는 데 도움을 줍니다.

 

3. Frontend

외부(클라이언트)에서 들어오는 요청을 수신하는 지점입니다. 어떤 IP와 포트에서 요청을 받을지, 어떤 백엔드로 요청을 전달할지 정의합니다. 다수의 frontend를 만들어 다양한 서비스(예: 여러 웹사이트, API 등)를 구분할 수 있습니다.

 

4. Backend

실제 요청을 처리할 서버 그룹을 정의합니다. 로드 밸런싱 알고리즘, 서버 리스트, 서버 상태 체크, 세션 지속성 등 백엔드 동작 방식을 설정합니다.

 

설치

아래는 Ubuntu에서 HAProxy를 설치하고 기본적인 로드밸런싱 구성을 적용하는 절차와 명령어입니다.

 

1. 설치

sudo apt-get update
sudo apt-get install -y haproxy

 

2. 버전 확인

haproxy -v

 

3. Config 편집

HTTP 80 포트로 인입된 요청을 5대의 백엔드 서버로 분산하도록 설정합니다. 방식은 라운드로빈입니다.

sudo vi /etc/haproxy/haproxy.cfg

 

Frontend는 80입니다.

Backend는 8081-8085입니다.

Listen은 8080입니다.

frontend http-in
    bind *:80
    default_backend backend_servers
    option forwardfor

backend backend_servers
    balance roundrobin
    server html1 127.0.0.1:8081 check
    server html2 127.0.0.1:8082 check
    server html3 127.0.0.1:8083 check
    server html4 127.0.0.1:8084 check
    server html5 127.0.0.1:8085 check

listen stats
    bind :8080
    stats enable
    stats uri /
    stats hide-version
    stats auth admin:admin
    default_backend backend_servers

 

4. Config 검증

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

 

5. 서비스 재시작 및 적용

sudo systemctl restart haproxy

 

6. 상태 확인

sudo systemctl status haproxy

 

7. 리스닝 포트 확인 (8080 포트)

sudo netstat -nltp | grep 8080

 

728x90

'Cloud' 카테고리의 다른 글

RAID  (0) 2025.04.27
Bastion  (0) 2025.04.27
고가용성(High Availability, HA)  (0) 2025.04.07