Study/Network

[Network]HAProxy

seomj 2023. 6. 11. 17:49

HAProxy(High Availbility Proxy)

하드웨어 기반의 L4/L7 스위치를 대체하기 위한 오픈소스 소프트웨어 솔루션

TCP 및 HTTP 기반 애플리케이션을 위한 고가용성, 로드 밸런싱 및 프록시 기능을 제공하는 매우 빠르고 안정적인 무료 Reverse 프록시

 

*Reverse 프록시: 서버로 들어오는 요청을 대신 받아서 서버에 전달하고 요청한 곳에 그 결과를 다시 전달해주는 역할을 함

포워드 프록시와는 반대로 클라이언트와 인터넷, 서버가 있을 때 인터넷과 서버 사이에 프록시가 위치한다.

-> 클라이언트가 서버에게서 받은 응답이 정확히 어떤 서버로부터 받은건지 알 수 없는 형태의 프록시

 

반면 포워드 프록시는 클라이언트와 인터넷 사이에 프록시 서버가 위치한다.

-> 서버로 하여금 클라이언트로부터 온 요청이 정확히 누구에게서 온건지 알 수 없다.

 

 

HAProxy를 알기 위해 Load Balancing 개념을 먼저 필요함

 

[Network]Load Balancing(로드밸런싱)

로드 밸런싱 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법 네트워크 또는 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 기술 *로드 밸런서: 사용

seomj74.tistory.com

 

 

동작 방식

  1. 최초 접근 시 서버에 요청 전달
  2. 응답 시 쿠키에 서버 정보 추가 후 반환
  3. 재요청시 proxy에서 쿠키 정보 확인 후 최초 요청 서버로 전달
  4. 다시 접근 시 쿠키를 추가할 필요없이 서버에 전달(클라이언트에 쿠키 정보가 계속 존재하여 재사용)

 

 

HA 고가용성

VBRP(Virtual Router Redundancy Protocol)을 지원한다.

HAProxy를 이중화하여 master 장애 발생 시 slave가 master의 VIP(Virtual IP)를 가져와 master로 승격된다.

 

 

동작 방식

단일 HAProxy와 다르게 최초 접근 시 쿠키에 바로 서버 정보를 입력하지 않고 서버에서 Jsessionid가 전달될 때 서버 정보를 합쳐서 전달한다.

 

  1. 쿠키게 정보가 없고 X-Forwarded-For에 정보 추가
  2. 쿠키에 정보 추가 없음
  3. Jsessionid 추가
  4. 서버 정보와 Jsessionid를 쿠키에 추가
  5. 쿠키에서 서버 판별 후 Jsessionid만 전달

 

 

 

<출처>

https://velog.io/@suhongkim98/Docker-HAProxy-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1-%ED%95%98%EA%B8%B0

https://hoing.io/archives/2196

https://dev-youngjun.tistory.com/97

 

'Study > Network' 카테고리의 다른 글

[Network]SCAN(스캔) 공격  (0) 2024.07.09
[Network]DNS(Domain name System)  (0) 2023.06.14
[Network]Load Balancing(로드밸런싱)  (0) 2023.06.10
[Network]NAT(Network Address Translation)  (0) 2023.05.26
[Network]ACL(Access Control List)  (0) 2023.05.25