IMG-LOGO
공지사항 :

HAProxy

lmkfox - 2025-02-28 07:14:54 14 Views 0 Comment

HAProxy 완벽 가이드

1. HAProxy란?

HAProxy(High Availability Proxy)는 오픈소스 로드 밸런서프록시 서버로, 웹 서버의 부하를 분산하고 가용성을 높이기 위해 사용된다. 높은 성능과 안정성을 제공하며, 특히 대규모 트래픽을 처리하는 웹 애플리케이션에서 널리 활용된다.

주요 특징

• TCP 및 HTTP 로드 밸런싱 지원

• 다중 로드 밸런싱 알고리즘 제공

• 리버스 프록시 기능

• SSL/TLS 종료 및 패스스루 지원

• 고성능, 고가용성 (Active-Passive 또는 Active-Active 설정 가능)

• 헬스 체크 및 장애 감지 기능

• HTTP 압축 및 캐싱 지원

2. HAProxy의 주요 기능

2.1 로드 밸런싱

HAProxy는 여러 서버에 트래픽을 분산시켜 부하를 줄이고 서비스의 가용성을 향상시킨다.

라운드 로빈 방식 (기본값)

서버에 순차적으로 요청을 보내는 방식.

frontend http_front
    bind *:80
    default_backend web_servers

backend web_servers
    balance roundrobin
    server web1 192.168.1.101:80 check
    server web2 192.168.1.102:80 check

가중치 부여 방식

서버의 성능에 따라 가중치를 다르게 설정 가능.

backend web_servers
    balance roundrobin
    server web1 192.168.1.101:80 weight 3 check
    server web2 192.168.1.102:80 weight 1 check

최소 연결(Least Connections) 방식

현재 연결 수가 가장 적은 서버로 요청을 보내는 방식.

backend web_servers
    balance leastconn
    server web1 192.168.1.101:80 check
    server web2 192.168.1.102:80 check

2.2 리버스 프록시

클라이언트 요청을 백엔드 서버로 전달하여 웹 서버를 보호하고 최적화할 수 있다.

frontend http_front
    bind *:80
    default_backend web_servers

backend web_servers
    balance roundrobin
    server app1 192.168.1.101:8080 check
    server app2 192.168.1.102:8080 check

2.3 헬스 체크 (Health Check)

서버의 상태를 자동으로 감지하여 문제가 있는 서버를 트래픽 분배에서 제외할 수 있다.

backend web_servers
    balance roundrobin
    server web1 192.168.1.101:80 check inter 2000 rise 2 fall 3
    server web2 192.168.1.102:80 check inter 2000 rise 2 fall 3

• inter 2000: 2초마다 헬스 체크 수행

• rise 2: 2회 연속 정상일 때 다시 활성화

• fall 3: 3회 연속 실패 시 해당 서버를 제거

2.4 SSL/TLS 종료 (HTTPS 지원)

HAProxy가 클라이언트의 SSL 요청을 해독하여 백엔드 서버로 전달할 수 있다.

1) SSL 인증서 생성 (Let’s Encrypt)

sudo certbot certonly --standalone -d example.com

2) HAProxy SSL 설정

frontend https_front
    bind *:443 ssl crt /etc/haproxy/certs/example.com.pem
    default_backend web_servers

backend web_servers
    balance roundrobin
    server web1 192.168.1.101:80 check
    server web2 192.168.1.102:80 check

2.5 고가용성 (HA 설정)

서버 장애 시 자동으로 대체 서버로 전환하는 Active-Passive 또는 Active-Active 설정이 가능하다.

Keepalived를 이용한 Active-Passive 설정

sudo apt install keepalived
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    virtual_ipaddress {
        192.168.1.100
    }
}

• 두 개의 HAProxy 인스턴스를 설정하여 한 서버가 다운되면 자동으로 다른 서버가 트래픽을 처리함.

3. HAProxy vs Nginx vs AWS ELB 비교

비교 항목

HAProxy

Nginx

AWS ELB

주요 기능

로드 밸런싱, 리버스 프록시

웹 서버, 리버스 프록시

클라우드 로드 밸런싱

성능

매우 빠름

빠름

클라우드 최적화

로드 밸런싱 알고리즘

다양함

제한적

자동 관리

SSL 종료

지원

지원

지원

헬스 체크

지원

지원

자동

운영 방식

온프레미스, 클라우드

온프레미스, 클라우드

클라우드 전용

비용

무료

무료

유료

HAProxy고성능 로드 밸런서로, 대규모 트래픽을 처리하는 데 최적화되어 있다.

Nginx는 로드 밸런싱뿐만 아니라 정적 콘텐츠 제공에도 강점이 있다.

AWS ELB는 관리형 서비스로, AWS 환경에서 자동 확장이 필요할 때 유용하다.

4. 주요 명령어

# HAProxy 설치
sudo apt update && sudo apt install haproxy -y

# 설정 파일 검증
haproxy -c -f /etc/haproxy/haproxy.cfg

# 서비스 시작, 중지, 재시작
sudo systemctl start haproxy
sudo systemctl stop haproxy
sudo systemctl restart haproxy

# 로그 확인
sudo tail -f /var/log/haproxy.log

5. HAProxy를 사용하는 이유

1. 높은 성능

• 비동기 이벤트 기반 처리 방식으로 수천만 개의 요청을 빠르게 처리할 수 있음.

2. 다양한 로드 밸런싱 알고리즘 지원

• 라운드 로빈, 최소 연결, IP 해시, 가중치 기반 등 다양한 방법 제공.

3. SSL/TLS 지원

• HTTPS 트래픽을 처리하여 보안을 강화할 수 있음.

4. 헬스 체크 기능 제공

• 백엔드 서버의 상태를 자동으로 감지하여 가용성을 높일 수 있음.

5. 고가용성(HA) 설정 가능

• Keepalived와 함께 설정하여 서버 장애 시 자동으로 다른 서버로 전환 가능.

6. 오픈소스 및 무료

• 기업에서도 자유롭게 사용할 수 있으며, 설정이 유연함.


댓글