当前位置: 首页 > news >正文

nginx 负载均衡5种配置方式

 1、轮询(默认)   

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

2、weight 
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。  
例如:  
upstream bakend {  
server 192.168.0.14 weight=10;  
server 192.168.0.15 weight=10;  
}  

3、ip_hash 
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  
例如:  
upstream bakend {  
ip_hash;  
server 192.168.0.14:88;  
server 192.168.0.15:80;  
}  

4、fair(第三方)   
按后端服务器的响应时间来分配请求,响应时间短的优先分配。  
upstream backend {  
server server1;  
server server2;  
fair;  
}  

5、url_hash(第三方)   

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

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

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

tips:  

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机器。所以这台机器压力会最轻。  

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。  

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug  
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录  

location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

转载于:https://www.cnblogs.com/code-style/archive/2012/09/24/2700358.html

相关文章:

  • js代码触发事件
  • 编译Chromium
  • WPF基础之路由事件
  • KMP算法初步认知
  • PHP 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来...
  • 超凡蜘蛛侠
  • 简单的多进程Open×××前端控制程序
  • asymptote 中使用中文
  • Deprecated: Function ereg() is deprecated in
  • 家庭电力网络摄像机
  • Redis学习系列
  • 必须关注的25位知名JavaScript开发者
  • CCNP路 由 选 择 原 理
  • 伸展树的学习(二):源代码分析
  • 多线程之NSInvocationOperation
  • [PHP内核探索]PHP中的哈希表
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Date型的使用
  • Invalidate和postInvalidate的区别
  • iOS 系统授权开发
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js 实现textarea输入字数提示
  • Linux后台研发超实用命令总结
  • MobX
  • Promise面试题,控制异步流程
  • ReactNativeweexDeviceOne对比
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 一天一个设计模式之JS实现——适配器模式
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • %check_box% in rails :coditions={:has_many , :through}
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (一)Neo4j下载安装以及初次使用
  • ******之网络***——物理***
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net 生成二级域名
  • .net 无限分类
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @Async注解的坑,小心
  • [100天算法】-不同路径 III(day 73)
  • [100天算法】-实现 strStr()(day 52)
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [APIO2012] 派遣 dispatching
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [CF494C]Helping People
  • [C进阶] 数据在内存中的存储——浮点型篇
  • [ESP32] 编码旋钮驱动
  • [Git].gitignore失效的原因