docker搭建设Nginx+Tomcat负载均衡
目标
- 使用docker架设三个tomcat应用实例-个nginx实例
- 通过配置nginx实现三个tomcat应用实例的负载均衡
部署3个tomcat容器
部署3个tomcat容器 并且为了区分应用把tomcat应用部署文件夹映射到宿主机的不同文件夹
- webapp1 webapp2 webapp3分别对应三个不同tomcat容器的webapps
- 宿主机的8081,8082,8083分别映射三个容器的8080端口
docker run -d -p 8081:8080 --name tomcat1 -v D:\Web\Tomcat\webapps1:/usr/local/tomcat/webapps/ tomcat:7.0.56
docker run -d -p 8082:8080 --name tomcat2 -v D:\Web\Tomcat\webapps2:/usr/local/tomcat/webapps/ tomcat:7.0.56
docker run -d -p 8083:8080 --name tomcat3 -v D:\Web\Tomcat\webapps3:/usr/local/tomcat/webapps/ tomcat:7.0.56
部署后,宿主机的8081端口对应tomcat1的8080 8082对应tomcat2的8080 8083 对应tomcat3的8080
部署nginx容器实现负载均衡
部署nginx容器开放端口8080映射宿主机8080端口,将配置文件nginx.conf挂载为宿主机的D:\docker\nginx\nginx.conf
docker run -d -p 8080:8080 --name nginx -v D:\docker\nginx\nginx.conf:/etc/nginx/nginx.conf nginx
nginx容器创建完以后我们可以直接修改宿主机上的D:\docker\nginx\nginx.conf 文件来改动容器中nginx配置
upstream 192.168.56.100 {
ip_hash; #解决session问题
server 192.168.56.100:8081 weight=1;
server 192.168.56.100:8082 weight=1;
server 192.168.56.100:8083 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.56.100;
}
}
把默认配置文件http块里的server替换成上面的配置,
** 注意两点 **
1.192.168.56.100替换成你自己的宿主机ip
2.server的proxy_pass配置要和upstream保持一致
测试实验结果
分别在三个webapp的文件夹内创建文件夹ROOT,在ROOT内创建默认测试页面index.html,每个页面分别写入对应1,2,3。
访问宿主机的8080端口http://192.168.56.100:8080 可能需要重启下nginx容器, 不断刷新页面测试结果。