Nginx代理与负载均衡策略

一、Nginx简介

  Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。

二、正向代理与反向代理

  Nginx一般分为正向代理和反向代理。
在这里插入图片描述
  反向代理:如果局域网向Internet提供资源服务,让Internet上的其他客户端来访问局域网内的资源,使它们必须通过一个代理服务器来进行访问,这种服务就称为反向代理。正向代理和反向代理逻辑正好相反。
  正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

三、Nginx的负载均衡调度算法

 1.轮询

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

 2.weight轮询

  根据后端服务硬件配置,设置不同的权重值。用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大。

#设定负载均衡服务器列表
upstream roundrobin {
     #后端服务器访问规则
    server 192.168.1.100:8080  weight=1;       #server1
    server 192.168.1.101:8081  weight=4;       #server2
    server 192.168.1.102:8090   weight=5;       #server3
}
server {
        listen 80;
        server_name 192.168.1.80;
        location / {
                proxy_pass http://roundrobin;
        }
}

 3.ip_hash

  每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

#设定负载均衡服务器列表
upstream roundrobin {
     #后端服务器访问规则
    ip_hash;                                   #添加参数支持哈希
     server 192.168.1.100:8080  weight=1;       #server1
    server 192.168.1.101:8081  weight=1;       #server2
    server 192.168.1.102:8090   weight=1;       #server3
} 
}

server {
        listen 80;
        server_name 192.168.1.80;
        location / {
                proxy_pass http://roundrobin;
        }
}

 4.fair

  智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了weight轮询和ip_hash优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,需要安装upstream_fair模块。

upstream backend {  
server server1;  
server server2;  
fair;  
} 

 5.url_hash

  按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。
配置示例一:

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

upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 。
配置示例二:

upstream bakend{    #定义负载均衡设备的Ip及设备状态  
ip_hash;  
server 127.0.0.1:9090 down;  
server 127.0.0.1:8080 weight=2;  
server 127.0.0.1:6060;  
server 127.0.0.1:7070 backup;  
} 

在需要使用负载均衡的server中增加
proxy_pass http://bakend/;

每个设备的状态设置为:
1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值