软件开发架构师

Nginx负载均衡

java 55 2019-02-25 15:18

Nginx负载均衡配置文件:

 1 http {
 2 
 3 # 测试负载均衡
 4     upstream fank {
 5         server 127.0.0.1:8080;
 6         server 139.199.13.58:8080;
 7     }
 8 
 9     server {
10         listen       80;
11         server_name  localhost;
12         location / {
13             proxy_pass http://fank;
14             # proxy_pass http://127.0.0.1:8080;
15             # root   html;
16             # index  index.html index.htm;
17        }
18     }
19 }

 

Nginx负载均衡原理:

这个肯定大家都有所接触,因为几乎所有主流的Web服务器都热衷于支持基于反向代理的负载均衡。它的核心工作就是转发HTTP请求

相比前面的HTTP重定向和DNS解析,反向代理的调度器扮演的是用户和实际服务器中间人的角色:

1、任何对于实际服务器的HTTP请求都必须经过调度器

2、调度器必须等待实际服务器的HTTP响应,并将它反馈给用户(前两种方式不需要经过调度反馈,是实际服务器直接发送给用户)

 

Nginx负载均衡策略:

1、轮询(默认) 
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 

1 upstream backserver { 
2     server 192.168.0.14; 
3     server 192.168.0.15; 
4 } 



2、指定权重 
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 

1 upstream backserver { 
2     server 192.168.0.14 weight=10; 
3     server 192.168.0.15 weight=10; 
4 } 


3、IP绑定 ip_hash 
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 

1 upstream backserver { 
2     ip_hash; 
3     server 192.168.0.14:88; 
4     server 192.168.0.15:80; 
5 } 



4、fair(第三方) 
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 

1 upstream backserver { 
2     server server1; 
3     server server2; 
4     fair; 
5 } 



5、url_hash(第三方) 
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 

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

 

文章评论