基于Docker构建上百台Nginx、Tomcat

1、启动Nginx

docker pull docker.io/nginx

docker run -itd --privileged -p 80:80 nginx

登录网址http://localhost:80,成功返回页面

2、批量启动10Tomcat

for i in `seq -w 1 10`;do docker run -itd --privileged --name="Tomcat$i" tomcat;done

3、修改Nginx配置

  ①获取所有tomcat 容器的IP

  docker inspect $(docker ps | awk '/Tomcat/ {print $1}') | grep -i ipadd | grep -oE '([0-9]{1,3}\.){3}[0-9]'|uniq|sort

  

  ②获取Nginx 负载均衡配置模板

  docker inspect $(docker ps | awk '/Tomcat/ {print $1}') | grep -i ipadd | grep -oE '([0-9]{1,3}\.){3}[0-9]'|uniq|sort|awk '{print "server "$0":8080 weight=100 max_fails=2 fail_timeout=15;"}'

  

 

 

   ③更新/etc/nginx/conf.d/default.conf

  

cat>/etc/nginx/conf.d/default.conf<<EOF
upstream tomcat {
#weight为服务器权重,权值越高被分配到的几率越大,max_fails最大超时次数,fail_timeout服务器代理被挂起的时间 server 10.10.10.1:8080 weight=100 max_fails=2 fail_timeout=15; server 10.10.10.2:8080 weight=100 max_fails=2 fail_timeout=15; server 10.10.10.4:8080 weight=100 max_fails=2 fail_timeout=15; server 10.10.10.5:8080 weight=100 max_fails=2 fail_timeout=15; server 10.10.10.6:8080 weight=100 max_fails=2 fail_timeout=15; server 10.10.10.7:8080 weight=100 max_fails=2 fail_timeout=15; server 10.10.10.8:8080 weight=100 max_fails=2 fail_timeout=15; server 10.10.10.9:8080 weight=100 max_fails=2 fail_timeout=15; } server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://tomcat; } #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; } } EOF

 检查nginx语法nginx -t,然后重启容器的nginx进程nginx -s reload

 

 

   

 

 

解决问题:

1、Tomcat 启动后在网页访问时提示拒绝

  排查了防火墙、进程,发现Tomcat的进程根本没有起来,原因是启动Tomcat的命令用了:docker run -itd --privileged tomcat:latest bash

  多加了一个bash,让tomcat进程没有起来

2、Tomcat启动后提示404

使用docker安装了tomcat镜像,默认为latest最新的(8.5.50版本),依据tomcat镜像创建容器并同时做了端口映射

命令为:docker run --name tomcat01 -d -p 8083:8080 tomcat 

用的是阿里云的云服务器,防火墙也开了端口,在浏览器中访问,http://112.74.40.14:8083/  提示如下界面

 

 提示资源未找到,这就出现了tomcat容器正常运行但是无法访问到tomcat首页的问题,其实这并不是我们镜像或者容器的问题,只是这个版本的tomcat开发者不知道怎么想的,在webapps下是空的,所以访问不到首页,后来换成8.0.52版本就可以了。新版本中,原本应该在webapps中的文件,被放在了webapps.list中,只要把文件放回原位,也可以解决这个问题。

 

 

posted @ 2020-08-18 11:22  JPinsz  阅读(318)  评论(0编辑  收藏  举报