마짱짱의 지식창고
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 |