nginx负载均衡

负载均衡算法

upstream 支持4种负载均衡调度算法:
A、 轮询(默认) :每个请求按时间顺序逐一分配到不同的后端服务器;
B、 ip_hash :每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip 的请求被打到固定的机器上,可以解决session问题。
C、 url_hash :按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候 效率。
D、 fair :这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载 均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。 Nginx 本身是不支持 fair 的,如 果需要使用这种调度算法,必须下载Nginx的 upstream_fair 模块。

nginx负载均衡配置状态参数

down,表示当前的server暂时不参与负载均衡。
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力轻。
max_fails,允许请求失败的次数,默认为1。当超过大次数时,返回proxy_next_upstream 模块定义的错 误。
fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使 用。

upstream myweb {       
     server 172.17.14.2:8080 weight=2 max_fails=2 fail_timeout=2;     
     server 172.17.14.3:8080 weight=1 max_fails=2 fail_timeout=1;       
  }

配置

准备三台机器: 代理服务IP:10.0.105. --配置本地host解析域名;
后端服务器IP:
nginx-a :10.0.105.199
nginx-b:10.0.105.202
后端服务器将nginx服务启动

配置代理服务器的nginx配置文件
worker_processes  4;

worker_rlimit_nofile 102400;

events {    
      worker_connections  1024; 
 }
 
http {     
     include       mime.types;    
     default_type  application/octet-stream;
     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      
                       '$status $body_bytes_sent "$http_referer" '                      
                       '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
     sendfile        on;    
     keepalive_timeout  65;   
     gzip  on;
 
     upstream testweb {    
               ip_hash;     
               server 10.0.105.199:80 weight=2 max_fails=2 fail_timeout=2s;     
               server 10.0.105.202:80 weight=2 max_fails=2 fail_timeout=2s;    
      }  
  
      server {        
              listen       80;       
              server_name  www.test.com;        
              charset utf-8;       
             #access_log  logs/host.access.log  main;        
              location / {        
                     proxy_pass http://testweb;            
                     proxy_set_header Host $host:$server_port;            
                     proxy_set_header X-Real-IP $remote_addr;            
                     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;           
             }
 
               error_page   500 502 503 504  /50x.html;       
               location = /50x.html {           
                      root   html;            
               }    
        }

    upstream testapp {     
            server 10.0.105.202:8081 weight=2 max_fails=2 fail_timeout=2s;      
            server 10.0.105.199:8081 weight=2 max_fails=2 fail_timeout=2s;                  
    }
 
    server {   
            listen      81;    
            server_name www.app.com;    
            charset utf-8;    
            #access_log  logs/host.access.log  main;   
            location / {        
                     proxy_pass http://testapp;           
                     proxy_set_header Host $host:$server_port;            
                     proxy_set_header X-Real-IP $remote_addr;            
                     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           }

     } 
}

浏览器测试访问:
http://www.test.com/
http://www.app.com:81/

nginx 实现动静分离

nginx负载均衡_第1张图片
2.png

nginx负载均衡_第2张图片
3.png

你可能感兴趣的:(nginx负载均衡)