Nginx如何实现负载均衡

Nginx如何实现负载均衡

Nginx是一款轻量级的Web服务器、反向代理服务器、电子邮件(IMAP/POP3)代理服务器。中国使用nginx的网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx的优点

  1. 高并发连接:实际测试Nginx能够支撑3万左右的并发连接,每天可以处理亿次访问量,因为它采用了epoll和kqueue网络I/O模型。
  2. 内存消耗小。
  3. Ngnix支持负载均衡。
  4. Nginx支持反向代理。
  5. 成本低廉。

Nginx实现负载均衡

负载均衡是Nginx的一个常用功能,当一台服务器的单位时间内的访问量越来越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器的压力。我们建立很多个服务器,组成一个服务器集群,当用户访问网站时先访问中间一个服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问都会保证服务器集群中的每个服务器压力趋于平衡,避免了服务器崩溃的情况。负载均衡配置一般需要同时配置反向代理,通过反向代理跳转到负载均衡。

nginx的负载均衡策略可以划分为两大类:内置策略和扩展策略。内置策略包含加权轮询和ip hash,在默认情况下这两种策略会编译进nginx内核,只需在nginx配置中指明参数即可。扩展策略有很多,如fair、通用hash、consistent hash等,默认不编译进nginx内核。

  1. 轮询(默认是这个)

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

upstream backserver { 
server 192.168.0.14; 
server 192.168.0.15; 
}
  1. 指定权重

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

upstream backserver { 
server 192.168.0.14 weight=8; 
server 192.168.0.15 weight=10; 
} 
  1. IP绑定 ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 hash值和ip有关又与后端机器的数量有关。ip hash算法可以连续产生1045个互异的value。nginx使用了保护机制,当经过20次hash仍然找不到可用的机器时算法退化为轮询。因此,从本质上说,ip hash算法是一种变相的轮询算法,如果两个ip的初始hash值恰好相同,那么来自这两个ip的请求将永远落在同一台服务器上,这为均衡性埋下了较深隐患。

upstream backserver { 
ip_hash; 
server 192.168.0.14:88; 
server 192.168.0.15:80; 
}
  1. fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。fair策略是扩展策略,默认不被编译进nginx内核。它根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流。这种策略具有很强的自适应性,但是实际的网络环境往往不是那么简单,因此须慎用。

upstream backserver { 
server server1; 
server server2; 
fair; 
} 
  1. url_hash(第三方)

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

upstream backserver { 
server squid1:3128; 
server squid2:3128; 
hash $request_uri; 
hash_method crc32; 
}

在需要使用负载均衡的server中增加。通用hash和一致性hash也是种扩展策略。通用hash可以以nginx内置的变量为key进行hash,一致性hash采用了nginx内置的一致性hash环,可支持memcache。

proxy_pass http://backserver/; 
upstream backserver{ 
ip_hash; 
server 127.0.0.1:9090 down; (down 表示当前的server暂时不参与负载) 
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大) 
server 127.0.0.1:6060; 
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值