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
-
网页请求相关的接口,可以看到实现了负债均衡。
直面挑战,躬身入局