Nginx负载均衡
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 }