개발 일지

Nginx vs HAProxy

북극곰은콜라 2022. 11. 23. 21:39
반응형

HAProxy란

HAPROXY

Reverse proxy 형태의 LB


동작원리

haproxy flow

  • 일반적인 reverse proxy 형태로 동작
  • event-driven 방식으로 동작
  • 접속한 서버정보를 쿠키로 관리하여, 연결 되었던 서버로 계속 연결
  •  

고가용성


주요 Feature

  1. URL rewriting.
  2. PROXY Protocol support.
  3. Gzip compression.
  4. Supports caching.
  5. API Support.
  6. SPOE Support.
  7. gRPC Support.
  8. Offers advanced debugging and tracing features.
  9. Detailed logging.
  10. Multithreading.
  11. CLI for server management.
  12. Supports HTTP authentication.
  13. Dynamic SSL certificate storage.
  14. Offers Transparent proxying.
  15. SSL/TLS termination.
  16. Load balancing Layer 4 (TCP) and Layer 7 (HTTP).
  17. Rate limiting.
  18. Supports protocol for gRPC, FastCGI, HTTP, HTTP/2.

Nginx란

nginx

  • Apache의 문제점을 해결하면서 만들어진 경량 웹 서버
  • 기본적으로 요청에 따른 정적 파일을 응답하는 용도로 많이 쓰임
  • Reverse Proxy 기술을 사용하여 LB의 역할로 활용 됨

동작원리

flow
Architecture

  • Event-Driven 방식
  • 고정된 프로세스만 생성하여 사용 (고정된 쓰레드풀)
  • Master Process : master의 역할, worker process들을 관리
  • Worker Process : 요청에 대한 처리

주요 feature

  1. Reverse proxy with caching.
  2. FastCGI support with caching.
  3. IPv6 support.
  4. Load balancing.
  5. Supports WebSockets.
  6. Manages static files, index files and auto indexing.
  7. Handle 10,000 simultaneous connections.
  8. OCSP stapling support.
  9. gRPC support.
  10. TLS/SSL support.
  11. A single entry point for users.
  12. Supports A/B testing features.
  13. Supports standard HTTP log format.
  14. Health check features.

Nginx vs HAProxy

비교표

항목 Nginx HAProxy
목적 오픈소스 LB 오픈소스 웹서버 + LB
Key Factors LB, 고가용성, reverse proxy, 빠름 고성능 HTTP 서버, 이메일 proxy 서버, reverse proxy, 간단한 설정
Web server O X
reverse proxy O
size 경량 경량 (상대적으로 쫌 더 가벼움)
SSL 지원 1.5 버전부터 지원
UDP O 2.3 버전부터 지원
Server management X O
failover X O
healthcheck △ (유료만 가능) O

성능 벤치마크

  • 전체적으로 HAProxy가 LB의 측면에서 보면 nginx보다 우수한 성능을 보임 (Envoy가 전체적으로는 제일 좋게 나옴..ㅎㅎ)
  • 다만 전체 적으로 비슷한 수준의 부하를 견딜 수 있음 (거대한 시스템에서 요청이 몰리는 상황에 성능상 차이가 발생)

결론 요약

  • HAProxy는 LB의 역할에만 충실, Nginx는 웹서버에 LB 역할이 추가 된 형태
  • HA 이점
    • LB의 목적으로는 성능 상 이점 (고 부하 상황에서)
    • Application 모니터링 측면
  • Nginx 이점
    • 상대적으로 설정이 간단
    • 웹 서버 기능

Reference

 - https://www.loggly.com/blog/benchmarking-5-popular-load-balancers-nginx-haproxy-envoy-traefik-and-alb/

 - https://cloudinfrastructureservices.co.uk/haproxy-vs-nginx-whats-the-difference/

 

반응형

'개발 일지' 카테고리의 다른 글

MDC 란  (0) 2022.11.23
QuerydslPredicate 란  (0) 2022.11.23
OIDC 란  (0) 2022.11.23
Logstash 란  (0) 2022.11.23
[외부자료] Java ClassLoader 요약 글  (0) 2022.11.22