(Docker)Nginx와 Tomcat을 활용한 로드 밸런싱 및 무중단 배포하기 DEV / DOCKER
2020-05-18 posted by sang12
도커환경에서 Nginx를 이용해 Tomcat을 이중화 하여 무중단 배포 하는 방법을 알아 보겠습니다.
1. nginx에서 로드밸런싱을 설정해주기 위해 nginx.conf를 외부 volume으로 연동해줍니다.
-.docker-compose.yml
version: '3.7'
services:
nginx:
image: nginx:1.18.0
restart: always
volumes:
- ./vol/nginx/nginx.conf:/etc/nginx/nginx.conf
ports:
- '10001:80'
2. nginx설정에서 80포트로 들어오면 지정해둔 api서버로 로드밸런싱해주게 설정합니다. 여기서 작업할때 기본으로 있는 include /etc/nginx/conf.d/*.conf; 부분을 꼭 제거해주세요. 제거하지 않으면 설정해도 기본 설정을 타게 됩니다 ^^; 한참 삽질했네요
-nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
location / {
proxy_pass http://apiserver;
}
}
upstream apiserver {
server 127.0.0.1:10002;
server 127.0.0.1:10003;
}
}
3. 톰캣 설정입니다. 외부 volume으로 설정해둔 부분에는 각각 MIAN1, MAIN2를 보여주는 ROOT.war파일을 위치시켰습니다
-tomcat docker-compose.yml
version: '3.8'
services:
tomcat1:
image: tomcat:8.5.46-jdk8-openjdk
ports:
- "10002:8080"
volumes:
- ./vol/tomcat/webapps1/:/usr/local/tomcat/webapps/
tomcat2:
image: tomcat:8.5.46-jdk8-openjdk
ports:
- "10003:8080"
volumes:
- ./vol/tomcat/webapps2/:/usr/local/tomcat/webapps/
80포트로 접속하면 nginx에서 tomcat 10002, 10003 포트로 로드밸런싱 하는걸 볼 수 있습니다 ^^. 배포할때는 docker-compose 파일을 tomcat1, tomcat2로 분리해서 하나하나씩 올리고내리면 무중단 배포를 할 수 있습니다.
#docker nginx 이중화
REPLY