1、Docker-compose实现Tomcat+Nginx负载均衡
-
nginx反向代理原理
客户端向反向代理发送请求,接着反向代理转发请求至目标服务器,并把获得的内容返回给客户端。
-
nginx代理tomcat集群
- 项目结构
- docker-compose.yml
- nginx配置文件default.conf
- 执行
docker-compose up
- 浏览器访问localhost,显示的是自己编写的html
-
nginx负载均衡策略
- 负载均衡策略
- 轮询:最基本的配置方法,上面的例子就是轮询的方式,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。
- weight:在轮询策略的基础上指定轮询的几率。
- ip_hash:指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
- least_conn:把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
- 详见:Nginx服务器之负载均衡策略
-
负载均衡测试
- 轮询
-
编写测试代码
-
测试结果
- weight
-
修改nginx配置文件default.conf
-
重启容器
sudo docker restart <Container ID>
-
执行测试程序,100次访问,访问数分别为14,29,57,比例接近1:2:3
- ip-hash
-
修改default.conf
-
重启容器并执行测试程序,100次访问都访问同一服务器。