InfoSec Log/Docker

[Docker] 로드 밸런싱 구축

GuanJoer 2024. 2. 18. 09:07

로드 밸런싱(Load Balancing)이란, 로드 밸런서(Load Balancer)를 통해, 클라이언트가 서버에 요청함으로써, 가해지는 트래픽을, 여러대의 서버에 고르게 분해하여, 특정 서버의 부하를 덜어주는 행위를 말한다.

 

Load Balancing Schematic

 

 

mkdir 명령어를 통해, /root/docker 경로 내에 3개의 디렉토리를 생성한다(도커 컨테이너의 index.html 파일이 저장된 경로와 마운트 시킬 디렉토리).

mkdir /root/docker/web01

mkdir /root/docker/web02

mkdir /root/docker/web03

 

web01, web02, web03 각각의 디렉토리 내에 index.html 파일을 생성한다.

#vim 텍스트 에디터 사용.
vim ./index.html

<h1> Nginx Webserver Test 01 </h1>

 

nginx web server가 설치된 3개의 도커 컨테이너를 생성한다. 포트포워딩은 각각 HostPC의 8001, 8002, 8003 포트를 사용하고, /root/docker/web0n의 HostPC의 경로와 nginx가 설치된 도커 컨테이너의 /usr/share/nginx/html 경로를 마운트 시킨다.

docker run -itd --name=nginx_01 -p 8001:80 -v /root/docker/web01/:/usr/share/nginx/html/ nginx

docker run -itd --name=nginx_02 -p 8002:80 -v /root/docker/web02/:/usr/share/nginx/html/ nginx

docker run -itd --name=nginx_03 -p 8003:80 -v /root/docker/web03/:/usr/share/nginx/html/ nginx

 

vim 에디터를 이용하여, 위 경로의 nginx.conf 파일을 아래와 같이 수정한다.

vim /etc/nginx/nginx.conf

 

오류가 날 수 있어, 테스트 시, http 내에 있는 모든 내용을 주석처리하고, 박스 내의 내용을 추가한다. 그 후HostPC의 nginx를 restart 한후, 웹 브라우저를 통해 localhost에 접속하면, 아래와 같이, 새로고침을 할 때마다, 서로 다른 웹 서버로 접속함을 보여준다.

upstream backend-lb {
	server 127.0.0.1:8001;
	server 127.0.0.1:8002;
	server 127.0.0.1:8002;
}
server {
	listen 80 default_server;
	listen [::]:80 default_server;

	location / {
		proxy_pass http://backend-lb;
	}
}
service nginx restart

#nginx 설치가 안되었을 경우

apt-get update
apt-get install nginx -y

service nginx start