Proxy란?
- Proxy란 ‘대리’라는 의미로, 클라이언트와 서버 간의 통신을 중계하는 중간 매개체
- 중계 기능을 수행하는 주체가 Proxy Server
- Proxy Server는 클라이언트와 서버 사이에 위치하여 클라이언트의 요청을 받아서 서버로 전달하고, 서버의 응답을 받아서 클라이언트에게 전달

HAProxy란?
- 고가용성 및 부하 분산을 위한 오픈 소스 TCP/HTTP 로드밸런서 소프트웨어
- High Availability Proxy 고가용 프록시의 약자로, C언어로 작성된 고성능 오픈소스 소프트웨어
- 장점 : 고가용성 및 부하 분산
가상 호스트와 여러 네트워크 레이어(L4, L7)를 지원
사용자가 트래픽을 세밀하게 제어 가능 - 단점 : 단일 포인트 오브 실패(SPOF)
Windows는 지원하지 않음

실습 구성 환경
HAProxy Server : centos-7.8, 223.130.X.X => 로드 밸런서 및 포트 포워딩 해주는 역할
Web01 Server : centos-7.8, 175.45.X.X
Web02 Server : centos-7.8, 223.130.X.X
실습1. HAProxy를 이용한 로드 밸런싱
방화벽
HAProxy Server_Inbound : My IP 22포트, My IP 80포트
web server_Inbound : My IP 22포트, MyIP 80포트, HAProxy Server IP 80포트
web01-server, web02-server
Apache 설치
# yum install -y httpd
index.html 수정
web01-server)
# cd /var/www/html
# vi index.html
web01-server
:wq
web02-server)
# cd /var/www/html
# vi index.html
web02-server
:wq
Apache 서비스 시작
# systemctl start httpd.service
각각 web01-server, web02-server IP로 웹페이지 접속 확인


HAProxy Server
haproxy server 설치
# yum install -y haproxy
# haproxy -v => HA Proxy 버전 확인

haproxy.cfg 수정
# vi /etc/haproxy/haproxy.cfg
...
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:80
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server server01 <web01-server ip>:80 check
server server02 <web02-server ip>:80 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server server01 <web01-server ip>:80 check
server server02 <web02-server ip>:80 check

haproxy 서비스 재시작
# systemctl restart haproxy.service
haproxy-server IP로 웹페이지 접속 확인
새로고침을 하면 HAProxy가 로드밸런싱을 수행하여, 각각의 요청을 백엔드 서버로 번갈아가며 전달하는 것을 확인할 수 있다.


실습2. HAProxy를 이용한 포트 포워딩
방화벽
HAProxy Server_Inbound : My IP 22포트, My IP 8333포트
web server_Inbound : My IP 22포트, HAProxy Server IP 80포트
HAProxy Server
haproxy.cfg 수정
# vi /etc/haproxy/haproxy.cfg
... 밑부분에 원래 있던 내용 삭제하고 추가
frontend front
bind *:8333
mode tcp
default_backend back
backend back
mode tcp
balance roundrobin
server server01 <web01-server ip>:80 check
server server02 <web02-server ip>:80 check

- frontend front: 프론트엔드 섹션의 이름을 'front'라고 지정
- bind *:8333: 8333 포트에서 들어오는 트래픽을 받도록 설정
- mode tcp: TCP 모드
- default_backend back: 기본적으로 백엔드 서버 그룹인 'back'으로 연결을 전달
- backend back: 백엔드 섹션의 이름으로 'back'으로 지정
- mode tcp: TCP 모드
- balance roundrobin: 라운드 로빈 방식으로 로드 밸런싱을 수행
- server server01 175.45.X.X:80 : 'server01'이라는 이름의 첫 번째 서버를 정의
- check : 해당 서버의 상태를 정기적으로 확인하라는 옵션
haproxy-server IP:8333로 웹페이지 접속 확인
새로고침을 하면 HAProxy가 로드밸런싱 및 포트포워딩을 수행하여 요청을 백엔드 서버로 분산하는 것을 확인할 수 있다.


'SW > WEB WAS' 카테고리의 다른 글
| [Apache] 아파치 로그(Access log, Error log) 살펴보기 (0) | 2024.09.13 |
|---|---|
| [Apache] 아파치 모듈(mod_dav, mod_ssl, mod_security) 살펴보기 (2) | 2024.09.07 |
| [2tier] Apache-Tomcat 연동 _1. mod_jk 방식 (0) | 2024.03.09 |
| [linux] nginx 컴파일 설치 및 서비스(systemctl) 등록하기 (0) | 2024.01.23 |
| [Squid] Squid 프록시 구성 방법 _ feat.네이버 클라우드 (1) | 2023.12.27 |