基于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中,只要把文件放回原位,也可以解决这个问题。