docker搭建分布式nginx+tomcat

一,创建tomcat容器

1.拉取tomcat镜像
docker pull tomcat
2.创建容器
docker run -d tomcat1 tomcat
docker run -d tomcat2 tomcat

进入tomcat容器中可以发现,其中有两个webapps,第一个webapps里面是空的,而另一个webapps.dist里面才有tomcat主页等相关的访问页面。所以下面就删除webapps,将webapps.dist改名为webapps即可,修改ROOT下的jsp页面,用于区分tomcat1和tomcat2

3.查看tomcat1和tomcat2的ip

docker container inspect tomcat1|grep IP
在这里插入图片描述

docker container inspect tomcat2|grep IP

在这里插入图片描述

二,创建nginx镜像,并配置

1.拉取nginx镜像
docker pull nginx

2.创建nginx1容器,主要是为了复制文件,完成后删除就好
mdkir -p /data/nginx/conf/default
decker run -d --name=nginx1 nginx
复制相关的文件
docker cp nginx1:/etc/nginx/conf.d/default.conf /data/nginx/conf/default
docker rm -f nginx1
创建nginx2容器
docker run -d --name=nginx2 -p 9090:80 -v /data/nginx/conf/default:/etc/nginx/conf.d nginx
3.修改配置文件
cd /data/nginx/conf/
vi default.conf
添加如下内容,其中upstream中的ip就是上面tomcat的ip,默认端口为8080
在这里插入图片描述
保存后,重启:docker restart nginx2
接下来访问:
http://192.168.0.101:9090/
第一次访问:
在这里插入图片描述
第二次访问:
在这里插入图片描述

三,对于default.conf中的内容说明(nginx负载均衡原理):

借用以前网络的截图加已说明
在这里插入图片描述
nginx负载均衡的原理:
1.轮询,也就是我们第一次访问就是tomcat1,第二次访问就是tomcat2,轮流访问
2.权重,weight来决定,比重越大访问频次越高,这样对于性能好的服务器可以比重大点,性能差的比重小点,提高性能
3.ip_hash ,通过ip的hash值分配,第一次访问的时候根据hash值分配到对应的服务器,然后此后就会一直是此服务器提供服务,一般和权重结合起来使用效果较好

还有两种,没有使用过,不过还是了解下:
1.fair(第三方)按后端的相应时间来分配请求,响应时间短的优先分配
2.url_fail(第三方)

四.最后说下踩到的坑:

分号不要少,不然nginx容器启动不起来
在这里插入图片描述
tomcat的配置是在/etc/nginx/conf.d/default.conf文件,而不是/etc/nginx/nginx.conf,不然没生效

猜你喜欢

转载自blog.csdn.net/qq_43534980/article/details/105342867