nginx 负载均衡配置详解

基于 ${nginx_home}/conf/nginx.conf 文件配置实现,如下:

http {# 定义server地址upstream server_group {server 192.168.xxx.1:8080;server 192.168.xxx.2:8080;server 192.168.xxx.3:8080;}server {listen       80;location / {root   html;index  index.html index.htm; #  代理转发,基于定义的 server_group 配置实现负载均衡proxy_pass http://server_group; }}
}

负载参数配置

其中,upstream server_group配置的是负分发服务器组的地址。服务负载默认轮询负载,也支持参数化自定义负载配置:weight、backup、max_fails、fail_timeout 等。例如:

upstream server_group {server 192.168.xxx.1:8080 backup;server 192.168.xxx.2:8080 weight=1;server 192.168.xxx.3:8080 max_fails=3 fail_timeout=15s;
}
轮询[默认]

该策略会将每个请求按时间顺序逐一分配到不同的后端服务器,如果某个后端服务器 down 掉,自动从轮询列表中剔除该服务。

权重(weight)

该策略指定每个服务的权重比例,权重越高被分配的客户端(请求)也就越多,weight 和访问比率成正比。

weight :指定轮询权值,默认值为1。常用于服务主机性能不统一,将性能好的主机分配高权重来发挥服务器最大性能。

down:表示当前的server暂时不参与负载均衡。

fail_timeout:单位为秒,默认是10秒。指定一段时间内,请求经历了max_fails次失败后,该server不能访问的时间(暂停服务的时间)。max_fails可以和fail_timeout一起使用:预留的备份机器。当其他所有的非backup机器故障或忙时,才会请求backup机器,因此这台机器的压力最轻。

max_fails:在fail_timeout时间范围内,允许请求的最大失败次数,默认为1。当达到最大失败次数时,会在fail_timeout时间内不再次被选择,返回 proxy_next_upstream 模块定义的错误。

fail_timeout:单位为秒,默认是10秒。在指定时间内,请求max_fails次失败后,该server不能访问的时间(暂停服务的时间)。max_fails和 fail_timeout一起使用。

最少连接(least_conn)

该策略会将请求分配到连接数最少的服务上。

upstream server_group {least_conn;server 192.168.xxx.1:8080;server 192.168.xxx.2:8080; 
}
哈希(ip_hash)

该策略按照每个请求 ip 的 hash 结果分配后端服务器,导致每个访客会固定访问一个后端服务器。可解决了动态网页存在的session共享问题。

地址哈希法:根据获取的客户端ip地址,通过哈希函数计算得到一个定长hash值,然后使用这个值来决定将请求分配给哪台后端服务器。采用源地址哈希法进行负载均衡,同一ip地址的客户端,在后端服务器列表不变情况下,其每次请求都会映射到同一台服务器访问。

哈希值映射:将哈希值映射到可用的后端服务器。通常,哈希值与后端服务器的数量相除并取余数,以次确定要将请求分配到哪台服务器。

例如:如果有3台后端服务器,哈希值为12,则计算:12 % 3 = 0,那么请求将路由到第一台后端服务器

upstream server_group {ip_hash;server 192.168.xxx.1:8080;server 192.168.xxx.2:8080; 
}

转发请求头配置


location / {root   html;index  index.html index.htm; # 代理转发,基于定义的 server_group 配置实现负载均衡proxy_pass http://server_group; proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Real-PORT $remote_port;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/11741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据分析——时间序列

时间序列 前言一、Datetime 模块常用函数和数据结构的详细解释datetime模块示例一示例二 二、时间运算示例一示例二示例三 三、时间序列分析自回归(Autoregressive model/AR)模型示例 滑动平均(moving average model/MA)模型示例 自回归滑动平均(Autoregressive moving average…

持续总结中!2024年面试必问 100 道 Java基础面试题(四十五)

上一篇地址:持续总结中!2024年面试必问 100 道 Java基础面试题(四十四)-CSDN博客 八十九、在Java中,什么是线程局部变量(ThreadLocal变量)? 在Java中,ThreadLocal变量是…

企业微信hook接口协议,ipad协议http,发送链接的方式邀请成员进群

发送链接的方式邀请成员进群 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","roomid":10696052955013729, "vids":[788130334…

Flutter 中的 CircleAvatar 小部件:全面指南

Flutter 中的 CircleAvatar 小部件:全面指南 在 Flutter 中,CircleAvatar 是一个用于显示头像的圆形控件,通常包含一个图标、图片或者一个简单的文本字符。它在设计上与 Material Design 指南中的头像规范相匹配,常用于展示用户信…

C# 常用汇总

时间处理 public static class DateTimeHelper{/// <summary>/// 获取当前时间戳&#xff08;Unix时间戳&#xff09; /// </summary>/// <returns></returns>public static long GetCurrentUnixTimestamp(){DateTimeOffset offset DateTimeOffset.…

Qt---文件系统

一、基本文件操作 1. QFile对文件进行读和写 QFile file( path 文件路径) 读&#xff1a; file.open(打开方式) QlODevice::readOnly 全部读取->file.readAll()&#xff0c;按行读->file.readLine()&#xff0c;atend()->判断是否读到文件尾 …

Java网络编程基础

Java网络编程基础主要涉及进程间通信、网络通信协议、IP地址和端口以及Java提供的网络应用编程接口等核心概念。 进程间通信是Java网络编程的基础。进程是运行中的程序&#xff0c;而进程间通信则是指不同进程之间进行数据交换和共享信息的过程。在Java中&#xff0c;进程间的…

STM32存储左右互搏 USB接口FATS文件读写U盘

STM32存储左右互搏 USB接口FATS文件读写U盘 STM32的USB接口可以例化为Host主机从而对U盘进行操作。SD卡/MicroSD/TF卡也可以通过读卡器转换成U盘使用。这里介绍STM32CUBEIDE开发平台HAL库实现U盘FATS文件访问的例程。 USB接口介绍 常见的USB接口电路部分相似而有不同的连接器…

K8S -----二进制搭建 Kubernetes v1.20

目录 一、准备环境 1.1 修改主机名 1.2 关闭防火墙&#xff08;三台一起&#xff0c;这里只展示master01&#xff09; 1.3 在master添加hosts&#xff08;依旧是三台一起&#xff09; 1.4 调整内核参数并开启网桥模式 二、部署docker引擎 三、部署 etcd 集群 1.在mast…

15.JUC原子类

文章目录 JUC原子类1.JUC中的Atomic原子操作包1.1. 基本原子类&#xff08;Basic Atomic Classes&#xff09;1.2. 数组原子类&#xff08;Array Atomic Classes&#xff09;1.3. 引用原子类&#xff08;Reference Atomic Classes&#xff09;4. 字段更新原子类&#xff08;Fie…

StackQueue+泛型简单理解

&#x1f341; 个人主页&#xff1a;爱编程的Tom&#x1f4ab; 本篇博文收录专栏&#xff1a;Java专栏&#x1f449; 目前其它专栏&#xff1a;c系列小游戏 c语言系列--万物的开始_ &#x1f389; 欢迎 &#x1f44d;点赞✍评论⭐收藏&#x1f496;三连支持一…

ddpm Denoising Diffusion Probabilistic Model 学习笔记

目录 Stable Diffusion 文章的贡献抽象出来就两个 潜空间上做扩散生成 ddpm(Denoising Diffusion Probabilistic Model)学习笔记 算法原理 unet预测噪声 unet推理过程 重参数化技巧 &#xff08;1&#xff09;利用前一时刻的 xt-1 得到任意时刻的噪声图片 xt&#xff…

LeetCode2215找出两数组的不同

题目描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;请你返回一个长度为 2 的列表 answer &#xff0c;其中&#xff1a;answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组…

Linux poweroff命令教程:如何实现一键关机(附实例详解和注意事项)

Linux poweroff命令介绍 poweroff命令是用来关闭系统的。当你执行这个命令时&#xff0c;它会发送一个信号给系统&#xff0c;告诉系统关闭所有的进程&#xff0c;然后关闭系统。这个命令非常有用&#xff0c;特别是在你需要远程关闭系统&#xff0c;或者你的系统没有图形用户…

Autosar架构

蓝框那种叫component&#xff0c;绿框的叫function cluster。 接口 有三种接口&#xff0c;RTE跟SWC之间链接的叫Autosar Interface&#xff0c;RTE跟BSW的Components链接是Standardized Interface&#xff0c;RTE跟BSW的services链接的是Standardized Autosar Interface。 St…

项目部署到线上proxytable代理失效nginx报404的问题

我的项目是在vue的config文件夹中的index.js中配置了接口地址 &#xff0c;本地跑的时候都能访问&#xff0c;放到线上就报404&#xff1b; module.exports {dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,proxyTable: {/xxx: {target: http://xxxxxxxx:xxx…

分享四种CAD图纸加密方法,严防盗图

在数字化时代&#xff0c;cad图纸的盗用和非法传播问题日益突出。对于企业和设计师来说&#xff0c;保护设计成果的安全性和原创性&#xff0c;采取有效的cad加密方法至关重要。本文将分享四种cad加密方法&#xff0c;帮助您严防盗图&#xff0c;保护图纸安全。 使用cad软件内…

网络协议的分类

1.概要 网络协议可以分为三类&#xff1a; 封装协议路由协议功能类协议 2.分类说明 OSPF报文直接调用_ IP协议__协议进行封装&#xff0c;以目的地址_244.0.0.5 __发送到所有的OSPF路由器? 244.0.0.1 所有主机&#xff1b;244.0.0.2 所有路由器&#xff1b;244.0.0.6 指定…

【前端每日一题】day5

JS 实现继承的几种方式 在JavaScript中&#xff0c;实现继承的几种方式包括原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承和组合式继承。 原型链继承&#xff1a; function Parent() {this.name Parent; } Parent.prototype.sayHello function() {console.…

当它还是幼生期的时候,及早离开它!

当我们有丰富的精神生活时&#xff0c;充实的知识吸收储备时&#xff0c;为自己的每一点进步而欣慰时&#xff0c;我们就不会有失败的忧虑。也不会有孤单的自怜。 没有人是弱者&#xff0c;每个人都有自己活着的方式&#xff0c;当你内心强大时&#xff0c;你会尊重每一个“弱者…