Nginx性能调优之负载均衡

一 什么是负载均衡

nginx可以成为代理服务器(如何配置可以点这里看我上一篇博客)统一收敛流量,再将流量分发给后端服务器,当后端服务器不止一个时,就涉及分发算法问题,这就是负载均衡。通过合理地算法实现更高的负载及性能。

二 常见负载均衡算法

  • ll+weight: 轮询加权重(默认)
  • ip_hash:基于Hash计算 ,用于保持session一至性
  • url_hash:静态资源缓存,节约存储,加快速度(第三方)
  • least_conn :最少链接(第三方)
  • least_time :最小的响应时间,计算节点平均响应时间,然后取响应最快的那个,分配更高权重(第三方)

接下来演示前两个

三 配置演示

配置 upstream 以及 location 可以实现负载均衡
注:我在虚拟机安装了两台tomcat,端口号一个时8080,另一个是8081。(如何配置同时运行两台toncat可以看这篇博客)两台tomcat的webapps目录下都有snowman/hello.html文件,内容tomcat1是“this is 111”,tomcat2是“this is 222”。

轮询算法
upstream servers {
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=2;
}
location /snowman {
    proxy_pass http://servers;
}

在这里插入图片描述
这里配置了第一台tomcat权重为1,第二台权重为2,所以在访问时应该是一次tomcat1,一次tomcat2,一次tomcat2,再一次tomcat1,一次tomcat2,一次tomcat2…
启动tomcat1,tomcat2,nginx,curl进行访问
在这里插入图片描述

ip_hash算法

upstream模块加上ip_hash,很简单。

upstream servers {
ip_hash;
}

在这里插入图片描述
将访问的ip进行hash,然后固定分配到某台服务器上,优先级高于轮询算法。
在这里插入图片描述
upstream 相关参数:

service	#反向服务地址 加端口
weight	#权重
max_fails	#失败多少次 认为主机已挂掉则,踢出
fail_timeout	#踢出后重新探测时间
backup	#备用服务,“正牌”服务器挂掉之后起来
max_conns	#允许最大连接数
slow_start	#当节点恢复,不立即加入,而是等待 slow_start	后加入服务对列。

都很好理解,有兴趣自己配一遍。

猜你喜欢

转载自blog.csdn.net/snow____man/article/details/83616020