背景
不管是否很大型的系统,采用负载均衡的意义都是相当滴重要。
如果是大型系统,毫无疑问当系统负载能力达到一个服务所能承受的极限时,用多个服务来分摊用户请求的压力是非常合理的想法。这就好比汽车站刚开始只有一辆汽车,当人实在是太多时,最简单拓展运输能力的方式就是再来一辆汽车。
如果是小型系统,负载均衡也是相当重要,最基本的需求,当你的代码需要升级时,要求系统运行不能停止,如果只有一个服务在跑,那就没办法了。但是如果有负载均衡,完全可以在负载比较低时,一台一台的更新。
综上所述,无论你是大神架构师,还是虾米程序员,都应该对负载均衡有些了解。
这其中,nginx实现负载均衡那是相当简单,而且高效,厉害了。
原理
原理灰常简单,nginx监听一个80端口,然后将请求转发到不同服务去处理即可。
注意此处不同服务可能是一台服务器上的不同端口的web服务,也可以是不同服务器上的各个端口的web服务,都可以。
原理如此简单,实现也很容易,详细说下。
搭建实践环境
无非是安装一个nginx,用来监听请求,安装两个tomcat,用来测试是否实现了负载均衡。
具体安装nginx和两个tomcat的过程此处不再一一细讲,前面的章节说的很明白了。
我们要的效果是nginx在80端口如图:
![fcf2432575f6f12060e2a8f4a0ff85d4.png](https://i-blog.csdnimg.cn/blog_migrate/4196d75ac248d8409b9d4d5524bf3eb7.jpeg)
两个tomcat分别在8012和8022端口服务,注意为了区分是哪个tomcat上的网页,我首页改了下(位置在tomcat/webapps/ROOT/index.jsp)
![949f9aede06e943470ce63bea5e4625a.png](https://i-blog.csdnimg.cn/blog_migrate/aec52983ee04b49f64f734fd9fe48898.jpeg)
![6d18bd5921e389bf1897f016ecfa6366.png](https://i-blog.csdnimg.cn/blog_migrate/a3c94fbcb3e6532a8b22ba7d0aee8304.jpeg)
配置nginx负载均衡
很简单,如下,我感觉都无需解释了:
首先nginx server监听80端口,然后将请求转发到mytomcats。
mytomcats这个upstream有两个权重一样的服务器负责接收请求,也就是如果有100个请求,那这老哥俩一人500个请求呗。这哥俩就是8012端口和8022端口的服务。
当然如果你想负载均衡到别的机器上,可以将127.0.0.1改成别的IP或者域名。
![06c9ef897c3b5ac9ee556534b721c5a0.png](https://i-blog.csdnimg.cn/blog_migrate/1d24d660f13dcae3b967cb9df2d4ca0f.jpeg)
重新加载下nginx,命令为:nginx -s reload,然后看效果,就会发现请求同一个地址,有时候是tomcat1响应,有时候是tomcat2响应。当然不是严格的第一次tomcat1响应,第二次就tomcat2响应,毕竟咱们的请求来自同一台计算机,nginx肯定有比较复杂的考量以提高效率,比如IP相似的机器的请求优先安排同一台服务器响应。
![873ba26730339a0f78d7904e5843ad86.png](https://i-blog.csdnimg.cn/blog_migrate/5cce18bb6584949cbdcb97ce77e0320f.jpeg)
![87b0cd82e0723eb8875a2d10cb4922d9.png](https://i-blog.csdnimg.cn/blog_migrate/d3e106c7ac9ba5f7fc3ef40d49b98511.jpeg)
总结与展望
本篇简明但不算扼要的说了nginx如何实现负载均衡,当然nginx负载均衡有很多策略,单独说策略没有意思,下篇还是结合实际场景说下如何来设置具体策略。
点击查看更多内容
作者:慕课熊猫
链接:https://www.imooc.com/article/275605
来源:慕课网