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 - 연결된 접속자가 가장 적으면서 + 평균 응답시간이 가장 적은 쪽으로 분배

+ Recent posts