본문 바로가기
실습/리눅스 서버 + 스프링 부트

08. HAProxy

by 이민우 2021. 5. 30.
728x90
반응형

HAProxy란?

프록시를 기반의 로드 밸런서 소프트웨어이다.

 

한 서버가 있다고 하자.

사용자들이 서버에 접속할 때 그 수가 적으면 서버는 무리없이 작동할 수 있다.

하지만 사용자들이 많아진다면? 당연히 서버에 무리가 갈 수 밖에 없고 이는 OOM으로 이어져 결국 서버가 닫히고 만다.

 

로드 밸런싱은 이러한 문제를 해결하기 위한 방법이다. 많은 사용자의 접속을 여러 서버에 분산하는 Scale-out을 위한 방법이다.

갑작스러운 과도한 트래픽으로 인한 장애를 해결할 수 있고, 한 서버에 장애가 발생해도 다른 서버에서 서비스를 제공함으로써 고가용성을 제공할 수 있다.

 

HAProxy는 이러한 방법 중, 프록시 기반으로 한 로드 밸런서 소프트웨어이다.

 

이번 포스팅에서는 HAProxy의 설치법과 작동법, 그리고 간단한 구동 예제를 포스팅하겠다.

 

 

1. 리눅스에 설치

 

# sudo apt-get install haproxy

위의 명령어로 haproxy를 설치하게 되면 /etc/haproxy/haproxy.cfg 라는 이름의 설정 파일이 생성된다.

해당 파일 내에서 HAProxy를 설정할 수 있다.

# vim /etc/haproxy/haproxy.cfg

 

 

HAProxy는 각 프록시의 상태 정보를 제공하는 관리 페이지를 제공한다.

관리 페이지는 cfg 파일에 다음과 같이 입력하면 /status uri를 통해 확인할 수 있다.

 

 

그리고 두 개의 서버를 RoundRobin 방식으로 로드 밸런싱 하는 방법은 아래와 같다.

 

위와 같이 설정하게 되면 9996 포트로 들어온 사용자는 RR 방식에 따라 순서대로 9998, 9997 포트에 실행된 서비스에 접근하게 된다.

위 설정 중 default_backend는 use_backend로 대체될 수 있으며, use_backend는 여러 다른 설정들과 함께 사용될 수 있다.

 

 

설정이 완료되었으면 haproxy를 실행시킨다.

# systemctl enable haproxy
# systemctl start haproxy

 

그 후 간단하게 Server의 Port만 알려주는 프로그램을 제작하여 9997, 9998 포트에서 실행시킨다.

# nohup java -jar -Dserver.port=9998 -Djava.net.preferIPv4Stack=true proxyTest-0.0.1-SNAPSHOT.jar &
# nohup java -jar -Dserver.port=9997 -Djava.net.preferIPv4Stack=true proxyTest-0.0.1-SNAPSHOT.jar &

 

물론 굳이 프로그램을 제작하지 않고, CentOS의 경우 아래 명령어만 실행시켜줘도 된다.

# while true ; do nc -l -p 9998 -c 'echo -e "HTTP/1.1 200 OK\n\n 9998"'; done &
# while true ; do nc -l -p 9997 -c 'echo -e "HTTP/1.1 200 OK\n\n 9997"'; done &

 

이제 POSTMAN을 사용해 테스트를 해보면 다음과 같은 결과가 나옴을 알 수 있다.

728x90
반응형

'실습 > 리눅스 서버 + 스프링 부트' 카테고리의 다른 글

[스프링부트] Thymeleaf  (0) 2021.09.26
09. MariaDB CRUD_UI  (0) 2021.09.18
07. Kafka_Pub&Con  (0) 2021.05.30
06. RabbitMQ_Con&Pro  (0) 2021.05.30
05. RestfulAPI_Redis CRUD  (0) 2021.05.23