• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Nginx负载均衡的策略有哪些和设置worker数量

武飞扬头像
任玉
帮助1

Nginx负载均衡实现的策略有以下种:

1、轮询

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某个服务器宕机,能自动剔除故障系统。

  1.  
    http {
  2.  
    upstream myapp1 {
  3.  
    server srv1.example.com;
  4.  
    server srv2.example.com;
  5.  
    server srv3.example.com;
  6.  
    }
  7.  
     
  8.  
    server {
  9.  
    listen 80;
  10.  
     
  11.  
    location / {
  12.  
    proxy_pass http://myapp1;
  13.  
    }
  14.  
    }
  15.  
    }
学新通

2、权重(Weighted load balancing)

weight的值越大,分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。其次是为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

  1.  
    # 权重越高,在被访问的概率越大,如上例,分别是20%,80%。
  2.  
    upstream backserver { 
  3.  
     server 192.168.0.12 weight=2
  4.  
     server 192.168.0.13 weight=8
  5.  

3、ip_hash( IP绑定) 也叫会话持续(session persistence)

每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题

  1.  
    upstream backserver { 
  2.  
     ip_hash; 
  3.  
     server 192.168.0.12:88
  4.  
     server 192.168.0.13:80
  5.  

4、fair第三方插件

必须安装upstream_fair模块。

对比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,响应时间短的优先分配。

  1.  
    # 哪个服务器的响应速度快,就将请求分配到那个服务器上。
  2.  
    upstream backserver { 
  3.  
     server server1; 
  4.  
     server server2; 
  5.  
     fair; 
  6.  

5.url_hash(第三方插件)

必须安装Nginx的hash软件包

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。

  1.  
    upstream backserver { 
  2.  
     server squid1:3128
  3.  
     server squid2:3128
  4.  
     hash $request_uri; 
  5.  
     hash_method crc32
  6.  

6、最少连接

  1.  
    upstream myapp1 {
  2.  
    least_conn;
  3.  
    server srv1.example.com;
  4.  
    server srv2.example.com;
  5.  
    server srv3.example.com;
  6.  
    }

7、健康检查

max_fails指令设置在fail_超时期间与服务器通信的连续失败尝试次数。默认情况下,max_fails设置为1。设置为0时,将禁用此服务器的运行状况检查。fail_timeout参数还定义了服务器被标记为失败的时间。在服务器出现故障后的fail_超时间隔之后,nginx将开始优雅地使用实时客户端的请求探测服务器。如果探测成功,服务器将被标记为活动服务器。
 

  1.  
    max_fails=number
  2.  
     
  3.  
    fail_timeout=time

生产中如何设置worker进程的数量呢?

在有多个cpu的情况下,可以设置多个worker,worker进程的数量可以设置到和cpu的核心数一样多,如果在单个cpu上起多个worker进程,那么操作系统会在多个worker之间进行调度,这种情况会降低系统性能,如果只有一个cpu,那么只启动一个worker进程就可以了。

ngx_http_upstream_module的作用是什么?

ngx_http_upstream_module用于定义可通过fastcgi传递、proxy传递、uwsgi传递、memcached传递和scgi传递指令来引用的服务器组。

什么是C10K问题?

C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。

 参考 nginx官方网址:Using nginx as HTTP load balancer

nginx面试40问Nginx 面试40问 (qq.com)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggbjak
系列文章
更多 icon
同类精品
更多 icon
继续加载