728x90
디렉토리 구성
D:.
│ docker-compose.yml
├─nginx
│ └─config
│ nginx.conf
├─tomcat1
│ └─webapps
│ index.html
└─tomcat2
└─webapps
index.html
docker-compose.yml
version: '3.3'
services:
nginx:
image: nginx
container_name: nginx
restart: always
ports:
- 80:80
volumes:
- ./nginx/config/nginx.conf:/etc/nginx/nginx.conf
tomcat1:
image: tomcat
container_name: tomcat1
ports:
- 10001:8080
volumes:
- ./tomcat1/webapps/:/usr/local/tomcat/webapps/ROOT
tomcat2:
image: tomcat
container_name: tomcat2
ports:
- 10002:8080
volumes:
- ./tomcat2/webapps/:/usr/local/tomcat/webapps/ROOT
nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
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;
#include /etc/nginx/conf.d/*.conf;
upstream tomcat {
server {SERVER_IP}:10001;
server {SERVER_IP}:10002;
}
server {
listen 80;
location / {
proxy_pass http://tomcat;
}
}
}
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
tomcat1 (tomcat 2는 tomcat2로 변경)
</body>
</html>
설정을 마친 뒤 docker-compose.yml 이 있는 디렉토리에서 docker-compose up -d 를 실행하면 준비는 끝난다.
http://localhost (80 포트 생략) 로 접속하면 새로고침할 때마다 tomcat1, 2가 번갈아 접속되는 것을 확인할 수 있다.
nginx.conf upstream 추가 옵션
# 참조 : http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html
########## ip_hash
upstream tomcat {
ip_hash;
server {SERVER_IP}:10001;
server {SERVER_IP}:10002;
}
ip_hash - ip로 분배한다. 만약 A라는 ip가 server1에 접속했으면 이후에도
server1에 계속 접속하게 되며, 한번 접속한 ip는 계속 같은 서버를 사용한다.
########## least_conn
upstream tomcat {
least_conn;
server {SERVER_IP}:10001;
server {SERVER_IP}:10002;
}
least_conn - 가중치를 고려하면서 연결된 접속자가 가장 적은 서버로 분배
########## least_time
upstream tomcat {
least_time;
server {SERVER_IP}:10001;
server {SERVER_IP}:10002;
}
least_time - 연결된 접속자가 가장 적으면서 + 평균 응답시간이 가장 적은 쪽으로 분배
'코딩 공부 > 도커' 카테고리의 다른 글
도커 volume 호스트환경에서 저장 위치 찾기(윈도우 10) (0) | 2023.11.16 |
---|