부하분산을 위해 가상 IP를 두어서 여러 대의 서버에 접속을 분배하는 기능을 말한다
클라이언트의 수가 많아짐에 따라 요청수가 증가하고, 서버에 부하가 더해진다.
이를 해결하기 위해 여러 대의 서버를 두고 부하를 분산 시키는 것이다.
HAproxy는 2대이상 서버에 요청을 분산시키는 TCP(L4) 및 HTTP(L7) 기반 애플리케이션을 위한 고가용성 로드 밸런서 및 역방향 프록시를 제공하는 무료 오픈 소스 소프트웨어이다.
yum install -y haproxy
vi /etc/haproxy/haproxy.cfg
┌───────────────────────────────────────────────────────────────┐
global
daemon
defaults
mode http
frontend http-in
bind *:80
acl firefox hdr_sub(User-Agent) Firefox
default_backend backend_servers
use_backend bk_firefox if firefox
backend backend_servers
balance roundrobin
server web01 10.31.0.100:80 cookie w1 check
server web02 10.31.0.101:80 cookie w2 check
backend bk_firefox
server web01 10.31.0.101:80
└────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────── 설명 ─────────────────────────────────────────────────────────────┐
global -> daemon : background 실행 설정, global은 전역 설정, daemon이 백그라운드 실행설정
=====================================================================================================================
default -> http : http 기반으로 부하분산한다
=====================================================================================================================
frontend -> http-in : {http-in} 이름, 정하기 나름. 즉 frontend는 80포트로 들어오는 모든 트래픽을 backend로 넘겨준다는 의미
-> bind *:80 : 사용자들이 접속해오는 포트번호 즉, 80포트로 들어오는 모든포트를 bind시킴 바꿀수있음. 포트포워딩
-> acl firefox hdr_sub(User-Agent) Firefox
: acl 부터는 L7 기능이다, ACL(Access Control List) 접근제어 목록
Firefox접속이냐, Chrome 접속이냐에 따라 포워딩을 구분해놓음.
-> default_backend backend_servers
: 위 acl 두개 조건에 안맞으면 default 백엔드로 가라는 뜻. 이런 조건설정으로 모바일, PC접속 다르게 가능
=====================================================================================================================
backend backend_servers : 서버를 여러대 두고, 그 서버 그룹화하여 하나처럼 쓴다. (우리는 2대잇음), L4 S/W기능.
-> balance roundrobin
: 로드밸런스 알고리즘, roundrobin : 순차적 연결 방식, least connection : 최소 연결방식/세션연결이 가장 적은쪽연결(현업용)
-> server web01 172.31.0.100:80 cookie w1 check
: 쿠키에 정보를 담아서 시간 타임아웃 측정
=====================================================================================================================
backend bk_firefox || bk_chrome : 여기부터 Backend쪽 L7기능, firefox냐 chrome접속이냐에 따라 백엔드 나눠둠
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
firwall-cmd --list-all --zone=external
firewall-cmd --permanent --add-port=80/tcp --zone=external
firewall-cmd --reload
systemctl enable --now haproxy