HAProxy 개념

movhr·2024년 3월 18일
0

HAProxy 란

  • 하드웨어 로드밸런서를 대체하는 Reverse Proxy 기반의 소프트웨어 로드 밸런서
  • 네트워크 스위치에서 제공하는 L4, L7 기능과 로드 밸런서 기능 제공
  • 이중화(HA-High Availability) 구성에 주로 사용

로드 밸런싱이란

  • 간략하게, 부하 분산을 위해 가상 IP를 통해 여러 대의 서버에 접속을 분배하는 기능

사용하는 이유

  • 요청의 수가 늘어나며 서버에는 부하가 걸리고 이를 해결하기 위한 방법은 2가지 존재
    1. Scale-up : 서버의 사양 높임
    2. Scale-out : 부하를 여러 대의 서버에 분산

로드 밸런싱의 주요 기능

  • NAT(Network Address Translation) : 사설 IP 주소를 공인 IP 주소로 바꾸는데 사용
  • DSR(Dynamic Source Routing protocol)
    • 로드 밸런서 사용 시, 서버에서 클라이언트로 되돌아 가는 경우에
      목적지 주소를 스위치의 IP 주소가 아니라
      클라이언트의 IP 주소로 전달해서 네트워크 스위치 거치지 않고 클라이언트로 감
  • Tunelling
    • 인터넷 상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 함
    • 데이터를 캡슐화 하여 연결된 상호 간에 캡슐화된 패킷을 구별해 캡슐화 해제

동작 방식

  • 기본적으로 reverse proxy 형태로 동작
    • reverse proxy : 서버로 들어오는 요청을 대신 받아서 서버에 전달하고 요청한 곳에 그 결과를 다시 전달해주는 역할
  • 동작 흐름
    1. 클라이언트가 서버에 최초 접근 시, 서버에 요청 전달
    2. 해당 요청에 대한 응답을 할 때 쿠키에 서버 정보를 추가하여 반환
    3. 다시 요청 시 Proxy 에서 쿠키 정보 확인하여, 최초 요청 서버로 전달
    4. 서버가 클라이언트에 응답 시 쿠키 없이 추가 전달
      클라이언트에 쿠키 정보가 계속 존재하므로 재사용
  • HAProxy HA
    • HA로 설정된 HAProxy의 동작 흐름이 단일 HAProxy와 다른점은
      최초 접근 시 쿠키에 바로 서버 정보를 입력하지 않고,
      서버에서 Jsessionid가 전달될 때 서버 정보를 합쳐서 전달
    1. 쿠키에 정보가 없고 X-Forwarded-For 에 정보 추가
    2. 쿠키에 추가 없음
    3. Jsessionid 추가
    4. 서버 정보와 Jesessionid를 쿠키에 추가
    5. 쿠키에서 서버를 판별 후에 Jsessionid만 전달

참고

profile
괴발개발

0개의 댓글