博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx upstream的分配方式
阅读量:6860 次
发布时间:2019-06-26

本文共 1691 字,大约阅读时间需要 5 分钟。

  hot3.png

1、轮询(默认)

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

2、weight

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

例如:

upstream tomcat {server 10.207.238.66:8080 weight=10;server 10.207.238.67:8080 weight=10;}

3、ip_hash

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

例如:

upstream tomcat{ip_hash;server 10.207.238.66:8080;server 10.207.238.67:8080;}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

需要在安装nginx时编译安装

下载相应的模块文件

nginx-upstream-fair-master.zip

unzip nginx-upstream-fair-master.zip cd nginx-1.4.7./configure --prefix=/usr/local/nginx-1.4.7 --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-sticky-module-1.1 --add-module=../nginx-upstream-fair-mastermake && make install
upstream tomcat {fair;server 10.207.238.66:8080;server 10.207.238.67:8080;}

5、url_hash(第三方)

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

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

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

tips:

upstream resinserver{#定义负载均衡设备的Ip及设备状态ip_hash;server 127.0.0.1:8000 down;server 127.0.0.1:8080 weight=2;server 127.0.0.1:6801;server 127.0.0.1:6802 backup;}

在需要使用负载均衡的server中增加

proxy_pass http://resinserver/;

每个设备的状态设置为:1.down 表示单前的server暂时不参与负载2.weight 默认为1.weight越大,负载的权重就越大。3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误4.fail_timeout:max_fails次失败后,暂停的时间。5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。nginx支持同时设置多组的负载均衡,用来给不用的server来使用。client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debugclient_body_temp_path 设置记录文件的目录 可以设置最多3层目录location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

转载于:https://my.oschina.net/ambari/blog/602260

你可能感兴趣的文章
Swagger
查看>>
php用递归将多维数组所有的键名都改为大写或者小写
查看>>
Linux下文件操作基本命令
查看>>
Flex、Spring整合:blazeds
查看>>
jquery的ajax和getJson跨域获取json数据
查看>>
Spring Data JPA 与 MyBatis 适用场景对比
查看>>
<erlang>初学第一天 环境的安装
查看>>
Mysql 设置字段自动获取当前时间
查看>>
关于Windows下import cv2报错DLL load failed:找不到指定模块
查看>>
Mybatis 注解使用
查看>>
光照模型与面绘制算法---透明表面
查看>>
mysql 杀死查询
查看>>
爆:Oracle Responsys本地文件包含漏洞!
查看>>
Mac下使用iTerm2让SSH免密码登录远程服务器
查看>>
图像二值化(迭代法,C语言实现)
查看>>
Android软键盘遮挡的四种解决方案
查看>>
Exiting with failure status due to previous error
查看>>
颜色与十六进制的转换
查看>>
徘徊于editplus与sublime之间
查看>>
android如何让自己开发的播放器成为可供文件选择的播放器
查看>>