[Ops Engineer] HAproxy 설치 및 설정

HyeonSeok·2023년 4월 12일
0

Ops Engineering

목록 보기
13/13

1. HAproxy란

로드밸런싱(Load Balancing)

부하분산을 위해 가상 IP를 두어서 여러 대의 서버에 접속을 분배하는 기능을 말한다

왜 쓰는가?

클라이언트의 수가 많아짐에 따라 요청수가 증가하고, 서버에 부하가 더해진다.
이를 해결하기 위해 여러 대의 서버를 두고 부하를 분산 시키는 것이다.

  • Scale-up : 서버의 사양을 높임
  • Scale-out : 부하를 여러대에 분산함

HAproxy(High Availability proxy, 고가용성 프록시)

HAproxy는 2대이상 서버에 요청을 분산시키는 TCP(L4) 및 HTTP(L7) 기반 애플리케이션을 위한 고가용성 로드 밸런서 및 역방향 프록시를 제공하는 무료 오픈 소스 소프트웨어이다.

좀 더 자세히 알아보기

2. 설치

1. 설치 및 설정

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접속이냐에 따라 백엔드 나눠둠
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

2. 방화벽 설정 및 daemon 실행

firwall-cmd --list-all --zone=external	
firewall-cmd --permanent --add-port=80/tcp --zone=external
firewall-cmd --reload	

systemctl enable --now haproxy
profile
즐겁게 사는 개발자가 됩시다

0개의 댓글