程序员快速上手 Nginx 负载均衡的特别之处精华总结

Nginx/Web服务器
339
0
0
2022-03-29

程序员快速上手 Nginx 负载均衡的特别之处精华总结


1、 使用负载均衡的原因

当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

2、 Nginx 介绍

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师所开发,其特点是占有内存少,并发能力强,nginx的并发能力确实在同类型的网页服务器中表现非常好。官方测试nginx能够支撑5万并发链接,并且CPU、内存等资源消耗却非常低,运行非常稳定。

当收到大量请求的时候nginx会协调服务器处理请求,合理的分配服务器资源,使得系统更加稳定高效。

很多大公司都在用。Nginx 官网的技术合作伙伴

程序员快速上手 Nginx 负载均衡的特别之处精华总结

云服务器合作伙伴

程序员快速上手 Nginx 负载均衡的特别之处精华总结


3、 负载均衡的调度算法

1. 轮询方式(round-robin)

调度器通过"轮询"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,每个请求按时间顺序逐一分配到不同的后端服务器,通过配合weight配置可以实现基于权重的轮询;如果后端服务器down掉,能自动剔除。

对应用程序服务器的请求以循环方式分发,假如来了十条请求,十台服务器被一个nginx控制,那么nginx会使十台服务器每台处理一条请求。

加权轮询 (1--10) weight 值越大,分配的几率越大。

有的服务器性能好,有的性能差,那么用加权的方式就可以使服务器资源合理利用。有两台服务器a、b,a的性能好,那么就可以给a加权,让a多处理几条请求,b少处理几条。

这种方式是Nginx 的默认配置方式。

配置方式如下

upstream backend { 
  server 192.168.0.11 weight=1; 
  server 192.168.0.12 weight=2; 
}

使用场景:服务器的硬件配置一致时,我们可以采用该配置。

2. IP 哈希(ip_hash)

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,早期的tomcat 单体应用得较多。

upstream backend {
  ip_hash; 
  server 192.168.0.11 ; 
  server 192.168.0.12 ; 
}

3. 哈希算法 (url_hash)

根据请求的url进行负载均衡,可以使用Nginx 的变量,可以实现一些复杂的算法, 比如按URL的hash结果来分配请求,使每个URL定向到同一个后端服务,URl_HASH 一般配合缓存服务一起使用,提升缓存命中率。

upstream backend {
  hash $uri; 
  server 192.168.0.11 ; 
  server 192.168.0.12 ; 
}

4. 最少连接(least_conn)

请求将被传递给当前拥有最少活跃连接的server,如果配置的服务器较少,则将转而使用基于权重的轮询算法。

在连接负载最少的情况下,nginx会尽量避免将过多的请求分发给繁忙的应用程序服务器,而是将新请求分发给不太繁忙的服务器,避免服务器过载

upstream backend {
  least_conn; 
  server 192.168.0.11 weight=1; 
  server 192.168.0.12 weight=2; 
  server 192.168.0.13 weight=2; 
}

今天的分享就到这里了,大家有没有好的方法呢 ,欢迎来留言区评论 我们一起交流学习 ,如果喜欢我的文章 欢迎点赞和转发。

@程序员白老哥 专注分享 《高并发架构设计》 #知识创作者#