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

Nginx配置upstream实现负载均衡

假设Nginx没有只只能代理一台服务器的话,那它也不可能像今天这么火。Nginx能够配置代理多台服务器。当一台服务器宕机之后。仍能保持系统可用。详细配置步骤例如以下:

1. 在http节点下,加入upstream节点。
```
upstream linuxidc {
server 10.0.6.108:7080;
server 10.0.0.85:8980;
}
```
2. 将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即“
http://linuxidc”.
```
location / {
root html;
index index.html index.htm;
proxy_pass http://linuxidc;
}
```
3. 如今负载均衡初步完毕了。upstream依照轮询(默认)方式进行负载,每一个请求按时间顺序逐一分配到不同的后端服务器。假设后端服务器down掉。能自己主动剔除。尽管这样的方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。
适用于图片服务器集群和纯静态页面服务器集群。
除此之外,upstream还有其他的分配策略,分别例如以下:
weight(权重)
指定轮询几率,weight和訪问比率成正比,用于后端服务器性能不均的情况。例如以下所看到的。10.0.0.88的訪问比率要比10.0.0.77的訪问比率高一倍。
```
upstream linuxidc{
server 10.0.0.77 weight=5;
server 10.0.0.88 weight=10;
}
```
ip_hash(訪问ip)
每一个请求按訪问ip的hash结果分配。这样每一个訪客固定訪问一个后端服务器,能够解决session的问题。
```
upstream favresin{
ip_hash;
server 10.0.0.10:8080;
server 10.0.0.11:8080;
}
```
fair(第三方)
按后端服务器的响应时间来分配请求。响应时间短的优先分配。
与weight分配策略相似。
```
upstream favresin{
server 10.0.0.10:8080;
server 10.0.0.11:8080;
fair;
}
```
url_hash(第三方)
按訪问url的hash结果来分配请求,使每一个url定向到同一个后端服务器。后端服务器为缓存时比較有效。

注意:在upstream中加入hash语句。server语句中不能写入weight等其他的參数,hash_method是使用的hash算法。
```
upstream resinserver{
server 10.0.0.10:7777;
server 10.0.0.11:8888;
hash $request_uri;
hash_method crc32;
}
```
upstream还能够为每一个设备设置状态值,这些状态值的含义分别例如以下:
down 表示单前的server临时不參与负载.
weight 默觉得1.weight越大,负载的权重就越大。
max_fails :同意请求失败的次数默觉得1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
fail_timeout : max_fails次失败后。暂停的时间。
backup: 其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
```
upstream bakend{ #定义负载均衡设备的Ip及设备状态
ip_hash;
server 10.0.0.11:9090 down;
server 10.0.0.11:8080 weight=2;
server 10.0.0.11:6060;
server 10.0.0.11:7070 backup;
}
```

转载于:https://www.cnblogs.com/zhaoyanhaoBlog/p/11157134.html

相关文章:

  • nginx实现请求转发
  • 【模板】单源最短路径(标准版)
  • Python3 数据类型-集合
  • 居民运输问题得到根本改善
  • 集群、分布式、负载均衡区别
  • 什么是自动化测试以及环境搭建
  • HashSet的实现原理
  • DELPHI 线程类(转,自己参考,版权归原作者)
  • WCF笔记
  • IE 6下测试有scriptManager控件的页面,内存不断增长
  • elementUI 弹出框添加可自定义拖拽和拉伸功能,并处理边界问题
  • 小程序开发过程中常见问题[微信小程序、支付宝小程序]
  • 变量引用的错误:UnboundLocalError: local variable 'range' referenced before assignment
  • 解决docker镜像无法下载的问题
  • java8时间类的一些封装
  • axios 和 cookie 的那些事
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • dva中组件的懒加载
  • IDEA 插件开发入门教程
  • JS字符串转数字方法总结
  • sublime配置文件
  • V4L2视频输入框架概述
  • 聚簇索引和非聚簇索引
  • 深度学习入门:10门免费线上课程推荐
  • 智能网联汽车信息安全
  • ​Linux·i2c驱动架构​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (31)对象的克隆
  • (附源码)ssm码农论坛 毕业设计 231126
  • (六)c52学习之旅-独立按键
  • (六)激光线扫描-三维重建
  • (篇九)MySQL常用内置函数
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)LINQ之路
  • (转载)Google Chrome调试JS
  • (转载)深入super,看Python如何解决钻石继承难题
  • (转载)虚函数剖析
  • .net core 依赖注入的基本用发
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET Micro Framework初体验
  • .net Stream篇(六)
  • .NET 中让 Task 支持带超时的异步等待
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET企业级应用架构设计系列之应用服务器
  • .NET上SQLite的连接
  • /*在DataTable中更新、删除数据*/
  • ?.的用法
  • @ConfigurationProperties注解对数据的自动封装
  • [Android] Upload package to device fails #2720
  • [AutoSar]BSW_Com02 PDU详解
  • [ccc3.0][数字钥匙] UWB配置和使用(二)