반응형
HAProxy란
Reverse proxy 형태의 LB
동작원리
- 일반적인 reverse proxy 형태로 동작
- event-driven 방식으로 동작
- 접속한 서버정보를 쿠키로 관리하여, 연결 되었던 서버로 계속 연결
고가용성
주요 Feature
- URL rewriting.
- PROXY Protocol support.
- Gzip compression.
- Supports caching.
- API Support.
- SPOE Support.
- gRPC Support.
- Offers advanced debugging and tracing features.
- Detailed logging.
- Multithreading.
- CLI for server management.
- Supports HTTP authentication.
- Dynamic SSL certificate storage.
- Offers Transparent proxying.
- SSL/TLS termination.
- Load balancing Layer 4 (TCP) and Layer 7 (HTTP).
- Rate limiting.
- Supports protocol for gRPC, FastCGI, HTTP, HTTP/2.
Nginx란
- Apache의 문제점을 해결하면서 만들어진 경량 웹 서버
- 기본적으로 요청에 따른 정적 파일을 응답하는 용도로 많이 쓰임
- Reverse Proxy 기술을 사용하여 LB의 역할로 활용 됨
동작원리
- Event-Driven 방식
- 고정된 프로세스만 생성하여 사용 (고정된 쓰레드풀)
- Master Process : master의 역할, worker process들을 관리
- Worker Process : 요청에 대한 처리
주요 feature
- Reverse proxy with caching.
- FastCGI support with caching.
- IPv6 support.
- Load balancing.
- Supports WebSockets.
- Manages static files, index files and auto indexing.
- Handle 10,000 simultaneous connections.
- OCSP stapling support.
- gRPC support.
- TLS/SSL support.
- A single entry point for users.
- Supports A/B testing features.
- Supports standard HTTP log format.
- 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 | 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://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 |