Docker 下 nginx + tomcat 负债均衡

nginx 的安装请参考Docker 安装 nginx 并挂载宿主目录到容器中

多个 tomcat 安装

  • 按照Docker 安装 tomcat 并挂载宿主目录到容器中 方式,启动三个 tomcat,宿主端口分别为 8081,8082,8083。同时在宿主的 home/ubuntu/tomcat/ 分别创建 service1 , service2,service3 目录,并在该目录下创建 webapps 目录,同时把 war 包放在该目录下。

    • service1:
    docker run --name tomcat-service1 -d -p 8081:8080 -v /home/ubuntu/tomcat/service1/webapps:/usr/local/tomcat/webapps tomcat  
    
    • service2:
    docker run --name tomcat-service2 -d -p 8082:8080 -v /home/ubuntu/tomcat/service2/webapps:/usr/local/tomcat/webapps tomcat 
    
    • service3:
    docker run --name tomcat-service3 -d -p 8083:8080 -v /home/ubuntu/tomcat/service3/webapps:/usr/local/tomcat/webapps tomcat 
    
  • 通过 ip + 端口 的方式,可以访问到 war 的接口

nginx 配置实现负债均衡

  • 在安装 nginx 的时候,发现配置文件有两个

    • /etc/nginx/nginx.conf
    • /etc/nginx/conf.d/default.conf
  • 打开 /etc/nginx/nginx.conf 的配置文件,在 http 模块 的最后可以看到 include /etc/nginx/conf.d/*.conf; 可以看到第二个配置文件是第一个配置文件的 http 模块的内容,只不过分开配置了。配置信息如下:

    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;
    
        include /etc/nginx/conf.d/*.conf;
    }
    
    
  • 配置 /etc/nginx/conf.d/default.conf 实现负载均衡

    upstream balance{
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
        server 127.0.0.1:8083;
    }
    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location /springboot/ {
                    proxy_pass http://balance;
        }
    
        location / {
                    root   /usr/share/nginx/html;
                    index  index.html index.htm;
        }
    
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
    }
    
    • 在原有的基础上添加了 upstream 模块,和在 server 中添加了 location 模块。
  • 完成配置文件以后,重启 docker restart CONTAINER_ID

  • 网页请求相关的接口,可以看到实现了负债均衡。

参考: Docker+Nginx+tomcat实现一个服务器上多个tomcat的负载均衡

原文地址:https://www.cnblogs.com/liyiran/p/12547697.html