Nginx反向代理和负载均衡的配置

Nginx反向代理和负载均衡的配置

一:反向代理的配置

反向代理的配置是在conf配置文件中的http块中,server块和location块共同配置的。反向代理服务器和目标服务器相当于同一个服务器,只不过反向代理服务器是暴露出来的。

server {
        listen       8081;
        server_name  172.16.0.65;
        
        location / {
	    proxy_pass http://172.**.**.**:8080;
        }
        
        location ~ /api/  {
	    proxy_pass http://172.**.**.**:8081;
        }

    }
#一个server相当于一个虚拟服务器,也就是代理服务器,server全局块中配置虚拟服务器的相关信息;
#location中使用proxy_pass将访问转发给目标服务器

二:负载均衡的配置

负载均衡可以分为硬件负载均衡软件负载均衡,前者一般是专用的软件和硬件相结合的设备,设备商会提供完整成熟的解决方案,通常也会更加昂贵。软件的负载均衡以Nginx为主。

1. Nginx实现转发的5种方式

Nginx转发请求可按照调度规则通过轮询ip哈希URL哈希权重等多种方式对应用服务器做负载均衡,同时还支持后端服务器的运行状态检查,也就是故障移除和恢复添加功能。

Nginx 的 upstream目前支持的分配算法:

  1. 轮询(默认)

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

  2. 权重 – weight–>指定轮询比率

    通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。

  3. ip_哈希算法(即Nginx的前置服务器或者客户端IP)— 保证会话一致性

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。

  4. url_hash

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

  5. fair

    fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即(rt)小的后端服务器优先分配请求

####2. 简单的配置

  
  http{
  ....
  #负载均衡服务列表配置
 upstream myserver{
     server  192.168.92.128:8080;
     server  192.168.92.128:8081;
     ip_hash;
     #hash $request_uri;
     #hash_method crc32;
     #hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。
     #Nginx本身不具备这个功能,如果需要使用的化,需要安装Nginx的hash包
 }
 
 server {
 	listen       80;
 	server_name  192.168.92.128;
 	
 	location / {
 	     proxy_pass  http://myserver;
 	     root   html;
 	     index  index.html index.htm;
 	}
 }
 ....
4. 负载均衡的实现过程

(1)转发功能

按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。

(2)故障移除

通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。

(3)恢复添加

如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。

5. upstream中其他配置
upsatream myServer{
	server 192.168.72.49:9090 down;
	server 192.168.72.49:8080 weight=2;
	server 192.168.72.49:6060;
	server 192.168.72.49:7070 backup;
}    

down:
表示当前的server暂时不参与负载,一般配合ip_hash使

Weight:
默认为1,weight越大,负载的权重就越大。

max_fails:
允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout:
max_fails 次失败后,暂停的时间。

Backup:
其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

参考: https://www.jianshu.com/p/276d84f075fe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值