buy apple developer account:012.Nginx负载平衡

admin 9个月前 (07-18) 科技 117 0

一 负载平衡概述

1.1 负载平衡先容

负载平衡是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。对于Web应用,通过负载平衡,可以将一台服务器的事情扩展到多台服务器中执行,提高整个网站的负载能力。其本质接纳一个调剂者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能更优,这就是负载平衡。

二 Nginx负载平衡

2.1 优点

  • 高并发毗邻
  • 内存消耗少
  • 设置文件异常简朴
  • 成本低廉
  • 支持Rewrite重写规则
  • 内置的康健检查功效
  • 节约带宽
  • 稳定性高
  • 2.2 主要平衡机制

  • round-robin:轮询。以轮询方式将请求分配到差别服务器上。
  • least-connected:最少毗邻数。将下一个请求分配到毗邻数最少的那台服务器上。
  • ip-hash:基于客户端的IP地址。散列函数被用于确定下一个请求分配到哪台服务器上。
  • 2.3 负载平衡计谋

    nginx的负载平衡计谋可以划分为两大类:内置计谋和扩展计谋,扩展计谋为第三方提供。 内置计谋
  • 轮询(默认):Nginx凭据请求次数,将每个请求平均分配到每台服务器;
  • weight:加权轮询,加权轮询则是在第一种轮询的基础上对后台的每台服务赋予权重,服务器的权重比例越大,被分发到的概率也就越大。
  • least_conn:最少毗邻,将请求分配给毗邻数最少的服务器。Nginx会统计哪些服务器的毗邻数最少。
  • ip_hash:IP 哈希,绑定处置请求的服务器。第一次请求时,凭据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处置这台客户端请求的服务器,然后将请求交给它来处置。
  • 扩展计谋
  • fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  • url_hash:按接见url的hash效果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时对照有用。
  • 提醒:默认轮询可能存在一个问题,若是用户在某台服务器上登录了,那么该用户第二次请求的时刻,其登录信息会丢失。由于在负载平衡系统中,每次请求都市重新定位到服务器集群中的某一个,那么就会导致已经登录某一个服务器的用户在重新定位到另一个服务器了,以是就会导致丢失登录信息。 因此针对如上问题,可以接纳ip_hash方式解决,若是客户已经接见了某个服务器,当用户再次接见时,会将该请求通过哈希算法,自动定位到该服务器。

    2.4 负载平衡内置变量

    nginx负载平衡器内置变量(Embedded Variables),nginx负载平衡模块ngx_http_upstream_module支持下列内置变量:
  • $upstream_addr:保留一个服务器的IP地址和端口号或者UNIX-domain套接字文件的路径。若是在处置请求历程中使用了多个服务器,那么它们的地址将以逗号支解,例如 :“192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock”。若是一个内置的从一个服务器组到另一个服务器组的重定向使用X-Accel-Redirect” or error_page ,那么那些服务器组以冒号离隔,例如“192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80”。
  • $upstream_response_time:保留nginx负载平衡服务器响应时间,以毫秒计。多个响应也以逗号和冒号离隔。
  • $upstream_status:保留nginx负载平衡服务器响应代码。多个响应代码也以逗号或冒号离隔。
  • $upstream_http_:保留nginx负载平衡服务器响应头字段。例如,the “Server” response header field is made available through the $upstream_http_server variable.注重,只有最后一个服务器响应头字段被保留。
  • 2.5 负载平衡康健检查

    nginx反向署理包罗内置的或第三方扩展来实现服务器康健检测的。若是后端某台服务器响应失败,nginx会符号该台服务器失效,在特定时间内,请求不分发到该台上。 fail_timeout:该指令界说了多长时间服务器将被符号为失败。在fail_timeout后,服务器照样failed,nginx将检测该服务器是否存活,若是探测乐成,将符号为活的。 max_fails:该指令设置在fail_timeout期间内延续的失败实验。默认情形下,max_fails为1。若是被设置为0,该服务器的康健检测将禁用。

    2.6 负载平衡状态码


    状态

    概述
    max_fails 允许请求失败的次数,默以为1。
    max_conns 限制更大接受的毗邻数。
    fail_timeout 在履历了max_fails次失败后,暂停服务的时间。
    backup 预留的备份机械。
    down 示意当前的server暂时不介入负载平衡。

    三 默认轮询负载平衡

    3.1 环境预设



    主机

    IP

    备注
    nginx01 172.24.10.21 Nginx负载平衡
    nginx02 172.24.10.22 后端RS 01
    nginx03 172.24.10.23 后端RS 02
    nginx04 172.24.10.24 后端RS 03
    所有节点安装Nginx:略 设置RS测试页面:
      1 [root@nginx02 ~]# mkdir /usr/share/nginx/balanc/
      2 [root@nginx02 ~]# echo '<h1>Rs_172.24.10.22</h1>' > /usr/share/nginx/balanc/index.html
      1 [root@nginx02 ~]# cat > /etc/nginx/conf.d/rs.conf <<EOF
      2 server {
      3     listen  9090;
      4     server_name 172.24.10.22;
      5     location / {
      6         root   /usr/share/nginx/balanc;
      7         index  index.html;
      8         access_log  /var/log/nginx/rs.access.log  main;
      9         error_log   /var/log/nginx/rs.error.log  warn;
     10     }
     11 }
     12 EOF
      1 [root@nginx02 ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@nginx02 ~]# nginx -s reload			#重载设置文件

      1 [root@nginx03 ~]# mkdir /usr/share/nginx/balanc/
      2 [root@nginx03 ~]# echo '<h1>Rs_172.24.10.23</h1>' > /usr/share/nginx/balanc/index.html
      1 [root@nginx03 ~]# cat > /etc/nginx/conf.d/rs.conf <<EOF
      2 server {
      3     listen  9090;
      4     server_name 172.24.10.23;
      5     location / {
      6         root   /usr/share/nginx/balanc/;
      7         index  index.html;
      8         access_log  /var/log/nginx/rs.access.log  main;
      9         error_log   /var/log/nginx/rs.error.log  warn;
     10     }
     11 }
     12 EOF
      1 [root@nginx03 ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@nginx03 ~]# nginx -s reload			#重载设置文件

      1 [root@nginx04 ~]# mkdir /usr/share/nginx/balanc/
      2 [root@nginx04 ~]# echo '<h1>Rs_172.24.10.24</h1>' > /usr/share/nginx/balanc/index.html
      1 [root@nginx04 ~]# cat > /etc/nginx/conf.d/rs.conf <<EOF
      2 server {
      3     listen  9090;
      4     server_name 172.24.10.24;
      5     location / {
      6         root   /usr/share/nginx/balanc/;
      7         index  index.html;
      8         access_log  /var/log/nginx/rs.access.log  main;
      9         error_log   /var/log/nginx/rs.error.log  warn;
     10     }
     11 }
     12 EOF
      1 [root@nginx04 ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@nginx04 ~]# nginx -s reload			#重载设置文件
      3 [root@client ~]# curl 172.24.10.22:9090
      4 <h1>Rs_172.24.10.22</h1>
      5 [root@client ~]# curl 172.24.10.23:9090
      6 <h1>Rs_172.24.10.23</h1>
      7 [root@client ~]# curl 172.24.10.24:9090
      8 <h1>Rs_172.24.10.24</h1>

    3.2 默认轮询方式设置

      1 [root@nginx01 ~]# vi /etc/nginx/conf.d/balance.conf
      2 upstream mybalance01 {
      3     server 172.24.10.22:9090;
      4     server 172.24.10.23:9090;
      5     server 172.24.10.24:9090;
      6 }
      7 
      8 server {
      9     listen  80;
     10     server_name  balance.linuxds.com;
     11     access_log  /var/log/nginx/mybalance.access.log  main;
     12     error_log   /var/log/nginx/mybalance.error.log  warn;
     13     location / {
     14         proxy_pass http://mybalance01;
     15         index index.html;
     16         proxy_redirect     off;
     17         proxy_set_header   Host             $host;
     18         proxy_set_header   X-Real-IP        $remote_addr;
     19         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
     20         client_max_body_size       10m;		#允许客户端请求的更大单文件字节数
     21         client_body_buffer_size    128k;	#缓冲区署理缓冲用户端请求的更大字节数
     22         proxy_connect_timeout      300;		#nginx跟后端服务器毗邻超时时间(署理毗邻超时)
     23         proxy_send_timeout         300;		#后端服务器数据回传时间(署理发送超时)
     24         proxy_read_timeout         300;		#毗邻乐成后,后端服务器响应时间(署理吸收超时)
     25         proxy_buffer_size          4k;		#设置署理服务器(nginx)保留用户头信息的缓冲区巨细
     26         proxy_buffers              4 32k;	#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
     27         proxy_busy_buffers_size    64k;		#高负荷下缓冲巨细(proxy_buffers*2)
     28         proxy_temp_file_write_size 64k;		#设定缓存文件夹巨细,大于这个值,将从upstream服务器传
     29     }
     30 }
      1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@balance ~]# nginx -s reload			#重载设置文件

    3.3 确认测试

    浏览器接见:http://balance.linuxds.com/,而且刷新3次测试效果。

    四 加权轮询负载平衡

    4.1 环境预设

    参考3.1。

    4.2 加权轮询方式设置

      1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf
      2 upstream mybalance01 {
      3     server 172.24.9.11:9090 weight=1 max_fails=1 fail_timeout=2;
      4     server 172.24.9.12:9090 weight=8 max_fails=2 fail_timeout=2;
      5     server 172.24.9.13:9090 backup;		#设置为备份服务器
      6 }
      7 
      8 server {
      9     listen  80;
     10     server_name  balance.linuxds.com;
     11     access_log  /var/log/nginx/mybalance.access.log  main;
     12     error_log   /var/log/nginx/mybalance.error.log  warn;
     13     location / {
     14         proxy_pass http://mybalance01;
     15         index index.html;
     16         proxy_redirect     off;
     17         proxy_set_header   Host             $host;
     18         proxy_set_header   X-Real-IP        $remote_addr;
     19         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
     20         client_max_body_size       10m;
     21         client_body_buffer_size    128k;
     22         proxy_connect_timeout      300;
     23         proxy_send_timeout         300;
     24         proxy_read_timeout         300;
     25         proxy_buffer_size          4k;
     26         proxy_buffers              4 32k;
     27         proxy_busy_buffers_size    64k;
     28         proxy_temp_file_write_size 64k;
     29     }
     30 }
      1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@balance ~]# nginx -s reload			#重载设置文件
    设置释义: weight:参数值越高则被分配到的概率越大。

    4.3 确认测试

    浏览器接见:http://balance.odocker.com/,而且刷新3次测试效果。此时测试172.24.9.12更容易被分配,172.24.9.13在其他RS正常的时刻不会介入响应。

    五 最小毗邻负载平衡

    5.1 环境预设

    参考3.1。

    5.2 最小毗邻方式设置

      1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf
      2 upstream mybalance01 {
      3     least_conn;
      4     server 172.24.10.21:9090;
      5     server 172.24.10.22:9090;
      6     server 172.24.10.23:9090;
      7 }
      8 
      9 server {
     10     listen  80;
     11     server_name  balance.linuxds.com;
     12     access_log  /var/log/nginx/mybalance.access.log  main;
     13     error_log   /var/log/nginx/mybalance.error.log  warn;
     14     location / {
     15         proxy_pass http://mybalance01;
     16         index index.html;
     17     }
     18 }
      1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@balance ~]# nginx -s reload			#重载设置文件

    5.3 确认测试

    浏览器接见:http://balance.linuxds.com/。 提醒:此方式主要应用于请求处置时间长短不一造成服务器过载的情形。

    六 IP hash负载平衡

    6.1 环境预设

    参考3.1。

    6.2 ip hash方式设置

      1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf
      2 upstream mybalance01 {
      3     ip_hash;
      4     server 172.24.10.21:9090;
      5     server 172.24.10.22:9090;
      6     server 172.24.10.23:9090;
      7 }
      8 
      9 server {
     10     listen  80;
     11     server_name  balance.linuxds.com;
     12     access_log  /var/log/nginx/mybalance.access.log  main;
     13     error_log   /var/log/nginx/mybalance.error.log  warn;
     14     location / {
     15         proxy_pass http://mybalance01;
     16         index index.html;
     17     }
     18 }
      1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@balance ~]# nginx -s reload			#重载设置文件

    6.3 确认测试

    浏览器接见:http://balance.linuxds.com/。 提醒:此方式主要应用于会话保持。

    七 fair负载平衡

    7.1 环境预设

    参考3.1。

    7.2 fair方式设置

      1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf
      2 upstream mybalance01 {
      3     fair;
      4     server 172.24.10.21:9090;
      5     server 172.24.10.22:9090;
      6     server 172.24.10.23:9090;
      7 }
      8 
      9 server {
     10     listen  80;
     11     server_name  balance.linuxds.com;
     12     access_log  /var/log/nginx/mybalance.access.log  main;
     13     error_log   /var/log/nginx/mybalance.error.log  warn;
     14     location / {
     15         proxy_pass http://mybalance01;
     16         index index.html;
     17     }
     18 }
      1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@balance ~]# nginx -s reload			#重载设置文件

    7.3 确认测试

    浏览器接见:http://balance.linuxds.com/。 提醒:该方式下响应快的服务器都市优先分配,接着才会分配响应速度较慢的服务器。因此此方式主要应用于后端服务器性能不均一。

    八 url_hash负载平衡

    8.1 环境预设

    参考3.1。

    8.2 ip hash方式设置

      1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf
      2 upstream mybalance01 {
      3     hash $request_uri;
      4     hash_method crc32;
      5     server 172.24.10.21:9090;
      6     server 172.24.10.22:9090;
      7     server 172.24.10.23:9090;
      8 }
      9 
     10 server {
     11     listen  80;
     12     server_name  balance.linuxds.com;
     13     access_log  /var/log/nginx/mybalance.access.log  main;
     14     error_log   /var/log/nginx/mybalance.error.log  warn;
     15     location / {
     16         proxy_pass http://mybalance01;
     17         index index.html;
     18     }
     19 }
      1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf	#检查设置文件
      2 [root@balance ~]# nginx -s reload			#重载设置文件

    8.3 确认测试

    浏览器接见:http://balance.linuxds.com/。 提醒:此方式主要应用于后端服务器为缓存时对照适用。 参考文档: https://ifeve.com/nginx-http/ https://www.cnblogs.com/lcword/p/11800474.html,

    Allbet Gmaing ***

    欢迎进入Allbet Gmaing *** (Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe *** 、Allbet电脑客户端、Allbet手机版下载等业务。

    allbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:buy apple developer account:012.Nginx负载平衡

    网友评论

    • (*)

    最新评论

    标签列表

      文章归档

        站点信息

        • 文章总数:1270
        • 页面总数:0
        • 分类总数:8
        • 标签总数:1517
        • 评论总数:1257
        • 浏览总数:117242