본문 바로가기

Network

Proxy 란? (HAProxy)

반응형

Proxy(프록시) 란?

  - "대신" 이라는 의미를 가지고 있다.

  - 프로토콜에 있어서 대리 응답 등에서 사용하는 개념

  - 보안상 직접 통신을 주고 받을 수 없는 사이에서 프록시를 이용하여 중계를 하는 개념이다

  - 중계하는 서버를 "프록시서버" 라고 부른다.

Proxy(프록시) 특징

  - 클라이언트가 프록시를 바라보면  로 보게되고, 서버가 프록시를 바라보면 [클라이언트] 로 바라보게 된다.

  - 프록시 서버에 요청이 된 내용들을 [캐시]를 이용하여 저장해 두고 재 연결을 하게 된다면

    전송시간을 [절약] 할 수 있다.

 

HAProxy 란?

  - L4, L7와 같은 하드웨어 로드밸런서를 대체하기 위한 [오픈소스] 로 [리버스프록시]를 기반으로 한

    L4, L7 [소프트웨어 로드밸런서]이다.

    [실제 서버 앞단에 존재하며 서버로 오는 요청을 대신 받아 뒷단의 서버에 전달하고 결과를 리턴받아

     요청한 곳에 다시 전달하는 역할을 한다.]

  

HAProxy 동작방식

  1. 최초 접근 시 서버에 요청 전달

  2. 응답 시 쿠키에 서버 정보 추가 후 반환

  3. 재요청 시 proxy에서 정보확인 > 최초 요청 서버로 전달

  4. 다시 접근 시 쿠키 추가 없이 전달 > 클라이언트에 쿠키 정보가 계속 존재한다.

 

HAProxy HA(High Availability) 구성

  - 기본적으로 VRRP(Virtual Router Redundancy Protocol)을 지원한다.

  - 소프트웨어 기반이기 때문에 설치된 서버에서 문제가 발생하면 하드웨어 L4가 불안정 하기 때문에

    이를 대비해 slave Proxy(이중화)를 구 성한다.

  1. 쿠키에 정보 추가 없고 X-Forwarded-For 에 정보 추가

  2. 쿠키에 추가 없음

  3. JsessionID 추가

  4. 서버정보 + JsessionID를 쿠키에 추가

  5. 쿠키에서 서버 판별 후 JsessionID만 전달

 

HAProxy 옵션

  • global # 전역 옵션 섹션
    • daemon: 백그라운드 모드(background mode)로 실행
    • log: syslog 설정
    • log-send-hostname: hostname 설정
    • uid: 프로세스의 userid를 number로 변경
    • user: 프로세스의 userid를 name으로 변경
    • node: 두 개 이상의 프로세스나 서버가 같은 IP 주소를 공유할 때 name 설정(HA 설정)
    • maxconn: 프로세스당 최대 연결 개수
  • Defaults # 기본 옵션 섹션
    • log: syslog 설정
    • maxconn: 프로세스당 최대 연결 개수
  • listen webfarm 10.101.22.76:80 : haproxy name ip:port
    • mode http: 연결 프로토콜
    • option httpchk: health check
    • option log-health-checks: health 로그 남김 여부
    • option forwardfor: 클라이언트 정보 전달
    • option httpclose: keep-alive 문제 발생 시 off 옵션
    • cookie SERVERID rewrite: 쿠키로 서버 구별 시 사용 여부
    • cookie JSESSIONID prefix: HA 구성 시 prefix 이후에 서버 정보 주입 여부
    • balance roundrobin: 순환 분배 방식
    • stats enable: 서버 상태 보기 가능 여부
    • stats uri /admin: 서버 상태 보기 uri
    • server xvadm01.ncli 10.101.22.18:80 cookie admin_portal_1 check inter 1000 rise 2 fall 5: real server 정보(server [host명] [ip]:[port] cookie [서버쿠키명] check inter [주기(m/s)] rise [서버구동여부점검횟수], fall [서비스중단여부점검횟수])

LoadBalance 옵션

  - 기본적으로 HAProxy는 roundrobin 방식으로 사용된다.

  • roundrobin: 순차적으로 분배(최대 연결 가능 서버 4128개)
  • static-rr: 서버에 부여된 가중치에 따라서 분배
  • leastconn: 접속 수가 가장 적은 서버로 분배
  • source: 운영 중인 서버의 가중치를 나눠서 접속자 IP를 해싱(hashing)해서 분배
  • uri: 접속하는 URI를 해싱해서 운영 중인 서버의 가중치를 나눠서 분배(URI의 길이 또는 depth로 해싱)
  • url_param: HTTP GET 요청에 대해서 특정 패턴이 있는지 여부 확인 후 조건에 맞는 서버로 분배(조건 없는 경우 round robin으로 처리)
  • hdr: HTTP 헤더 에서 hdr(<name>)으로 지정된 조건이 있는 경우에 대해서만 분배(조건 없는 경우 round robin으로 처리)
  • rdp-cookie: TCP 요청에 대한 RDP 쿠키에 따른 분배

 * SSL 인증 사용시 반드시 1.5 이후로 버전으로 사용해야 가능하다.

 

---

참고자료

https://milkye.tistory.com/202 ,

https://lascrea.tistory.com/212 .

https://d2.naver.com/helloworld/284659

 

반응형

'Network' 카테고리의 다른 글

유니캐스트, 브로드캐스트, 멀티캐스트, 애니캐스트  (0) 2021.03.25
LoadBalance 란?  (0) 2020.09.16
Switch Protocol  (0) 2020.05.15
Routing(라우팅)  (0) 2020.05.15
자주쓰는 간단한 포트정리(PORT)  (0) 2020.05.15