본문 바로가기
Docker

HAProxy - Multi LoadBalancing

by Nirah 2022. 12. 13.

 

Docker + HAProxy + WEB(httpd,nginx)

 

HAProxy에서 다중 port를 활용하여 Multi LoadBalancing 을 구현해 보겠다.

사실 Proxy서버는 WEB서버랑 분리되어 있는 것이 맞지만 편의상 안에 들어가 있게 설계해 보겠다.

 

HAProxy에 대한 자세한 설정 글은 이전 글을 참조하자.

https://raid-1.tistory.com/54

 

 

설계도는 다음과 같다.

WEB 페이지는 Docker Container로 실행되는 a와 n 두쌍이 존재한다.

a1 컨테이너와 a2 컨테이너가 로드밸런싱하고

n1 컨테이너와 n2 컨테이너가 로드벨런싱 하는것이다.

 

 

Container 구성

설계도에 따라 Docker 1번 머신에서 설정한다.

 

pull httpd

pull nginx

 

docker run -itd -p 61080:80 --name a1 httpd:latest

docker run -itd -p 62080:80 --name a2 httpd:latest

docker run -itd -p 63080:80 --name n1 nginx

docker run -itd -p 63080:80 --name n2 nginx

 

 

 

WEB

설계도에 따라 Docker 1번 머신에서 설정한다.

먼저 html을 간단히 작성해서 각각의 컨테이너의 알맞는 아파치 위치로 넣어주자.

vi index.html 로 각각 4개의 파일을 만들어 다음과 같이 a1,a2,n1,n2에 넣어주면 된다 (이름은 알아서 수정 바람)

 

docker cp index.html a1:/usr/local/apache2/htdocs/index.html

 

 docker cp index.html a2:/usr/local/apache2/htdocs/index.html

docker cp index.html n1:/usr/share/nginx/html/index.html

docker cp index.html n2:/usr/share/nginx/html/index.html

 

 

html 파일이 잘 작동하는 지 확인하자.

curl [컨테이너 ip주소]

 

 

HAProxy 설정

설계도에 따라 Docker 2번 머신에서 설정한다.

 

# vi /etc/haproxy/haproxy.cfg

 

HAProxy에서 다중 port를 다뤄줄 때는 다음과 같이 frontend- backend 를 여러쌍 만들어 주면 된다.

일단 토폴로지 대로 두쌍 만들었다. 중요한 부분은 빨간 줄을 쳤다.

의미를 이해하기 쉽도록 http 한쌍으로 예시를 들겠다.

 

 

80번포트로 오는 신호를 받는 프론트엔드를  [backend이름] 을 가진 백엔드와 이어준다.

frontend [아무이름]   *: 80

default_backend           [backend이름]

----------------------------------------------------------------------------------

----------------------------------------------------------------------------------

[backend이름] 을 가진 백엔드는 a1과 a2를 지정한 주소:포트로 로드밸런싱

backend [backend이름]

server a1 10.0.0.21:61080 check

server a2 10.0.0.21:62080 check

 

 

# systemctl restart haproxy

# firewall-cmd --permanent --add-port=80/tcp

# firewall-cmd --permanent --add-port=88/tcp

# firewall-cmd --reload

 

# netstat -natp 로 보면 80번과 88번이 떠있어야 한다.

 

 

 

VMware 세팅

 

외부 PC에서 접속하기 위해서 설정

65001 -> 프록시 80

65002 -> 프록시 88

 

 

 

HostPC 방화벽 설정

65001, 65002 접속 허용

 

 

 

외부 PC 결과

 

65001 접속 후 F5 새로고침.

a1과 a2 페이지가 번갈아 뜬다.

httpd 쪽은 로드밸런스가 잘 작동한다

 

 

 

65002 포트 접속 후 F5 새로고침

n1과 n2 페이지가 번갈아 뜬다.

nginx쪽도 로드밸런스가 잘 작동한다.

 

'Docker' 카테고리의 다른 글

Dockerfile (개인 프로젝트)  (0) 2022.12.21
LXC (개인 프로젝트)  (0) 2022.12.19
Docker : Link  (0) 2022.12.09
Docker : Network  (0) 2022.12.09
Volume / bind mount ( Container Data 공유)  (0) 2022.12.09