性能文章>超级详细的Nginx负载均衡配置 不看是你的损失哦~>

超级详细的Nginx负载均衡配置 不看是你的损失哦~原创

1年前
251235

什么是负载均衡

假设生产环境只有一台服务器,一旦压力过大就很有可能导致Web服务响应缓慢,严重的可能会导致生产环境宕机。类似于12306抢票或者天猫购物节这种消费场景,几百万的用户量瞬间涌进来,单机的系统立刻就会因为支撑不住而瘫痪。此时就需要通过负载均衡来将流量均匀的分配到多个节点服务器上来减轻高流量带来的压力。即使某一个节点挂掉了,其它的节点也可以正常工作,不会造成生产环境宕机。
不过多节点负载均衡也会存在一个问题。那就是每台机器的软硬件配置可能存在差异。这样就会导致部分机器的响应特别快,部分机器的响应时间比较长。如果均分请求的话就会造成机器资源的浪费。比如某些性能比较好的机器不能承担更多的压力,某些性能比较差的机器却承担了过多的压力因此我们就需要一些负载均衡策略,将用户流量合理的分配到每台服务器上,充分发掘每台机器的性能,提高用户体验。实现负载均衡常用的软件有Nginx,Lvs,Apache,下面主要介绍Nginx。

负载均衡配置

Nginx配置文件有两个,分别是:
/etc/nginx/nginx.conf
/etc/nginx/sites-enabled/default
负载均衡配置在nginx.conf的http目录下,如下图

负载均衡策略

Nginx负载均衡通过upstream模块来实现,内置4种常用负载策略
  • 轮循

upstream  api/{
server localhost:1000;
server localhost:1001;
}

在这种策略下,Nginx会按照时间顺序将请求转发到不同的服务器上,如果某一台机器down掉了,会自动从负载策略中剔除,下次不再轮询

  • 权重

upstream  api/ {
server localhost:1000 weight=10;
server localhost:1001 weight=20;
}
在这种策略下,Nginx会根据weight权重值来转发请求到服务器。权重越高的,转发越多。上图表示30次转发中有10次到了100机器,20次到了1001机器
  • iphash

upstream api/ {
ip_hash;
server localhost:1000 weight=10;
server localhost:1001 weight=20;
}
在这种策略下,Nginx会根据用户第一次请求时的ip计算出一个hash值。然后将请求分配到某一台服务器上,后续该用户所有的请求都会根据hash算法分发到最初处理的这台服务器。也就是说每个用户的请求都会被固定到某一台机器去处理。iphash可以和weight同用
  • 最少连接

upstream  api {
least_conn;
server localhost:1000 weight=10;
server localhost:1001 weight=20;
}
在这种策略下,Nginx会计算每台服务器的连接,然后请求转发给连接数最少的那台机器
点赞收藏
飞天小子

13软件测试,10年性能测试,5年性能培训,10万字性能博主,项目经理,微信uhz2008

请先登录,查看3条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

Redis stream 用做消息队列完美吗?

Redis stream 用做消息队列完美吗?

Netty源码解析:writeAndFlush

Netty源码解析:writeAndFlush

5
3