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


浙公网安备 33010602011771号