负载均衡(Load Balance)学习笔记(四):Nginx负载均衡

Nginx基础教程(53)Nginx HTTP请求转发之开发load-balance模块:外卖小哥的智慧:Nginx负载均衡原理与实战 本文深入解析了Nginx负载均衡的原理与实战配置,涵盖了轮询、加权轮询、IP哈希等核心算法,以及健康检查、会话保持等高级技巧。通过完整示例演示了如何构建高可用Web服务,并提供了容器化部署和性能优化方案,帮助开发者全面提升系统并发处理能力。 阅读详情

学习记录,仅供参考

前面介绍到软件实现的负载均衡有:Nginx、HAproxy、LVS,下面逐一介绍这三种具体原理,从前面我们可以知道,负载均衡其实就是一种调度策略。本篇主要介绍的是Nginx负载均衡。

那么Nginx 如何实现负载均衡?

想了解这个问题,那我们需要首先了解网络代理是什么。

一、网络代理

网络代理分为正向代理(Foward Proxy)和反向代理(Reverse Proxy),一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。

1、正向代理(Foward Proxy)

正向代理(Foward Proxy) 是一个位于客户端【用户A】和原始服务器【服务器B】之间的服务器【代理服务器】,为了从原始服务器取得内容,【用户A】向【代理服务器】发送一个请求并指定目标【服务器B】,然后【代理服务器】向【服务器B】转交请求并将获得的内容返回给客户端。

在这里插入图片描述
那为什么使用代理?比如最常见的科学上网

如下图所示,无法直接访问服务器,可以通过代理的方式进行访问。
在这里插入图片描述
常见的需求如下:

  • 可以做缓存,加速访问资源
  • 对客户端访问授权,上网进行认证
  • 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

2、反向代理(Reverse Proxy)

反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

在这里插入图片描述
3、总结

正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.
反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端

二、Nginx 负载均衡

1、Nginx是什么

Nginx 作为一个基于 C 实现的高性能 Web 服务器,可以通过系列算法解决上述的负载均衡问题。并且由于它具有高并发、高可靠性、高扩展性、开源等特点,成为开发人员常用的反向代理工具。

2、Nginx 如何实现负载均衡

首先我们知道Nginx是一款高效的反向代理工具,那么在进行大量请求时,客户端用户不需要知道具体是那个服务器执行了请求响应,通过Nginx进行分配服务器进行查询。Nginx提供了多种分配算法,算法如下:

(1)轮询 (round-robin)

轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有N台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历。

特点:由于该算法中每个请求按时间顺序逐一分配到不同的服务器处理,因此适用于服务器性能相近的集群情况,其中每个服务器承载相同的负载。但对于服务器性能不同的集群而言,该算法容易引发资源分配不合理等问题。

(2)加权轮询

为了避免普通轮询带来的弊端,加权轮询应运而生。在加权轮询中,每个服务器会有各自的 weight。一般情况下,weight 的值越大意味着该服务器的性能越好,可以承载更多的请求。该算法中,客户端的请求按权值比例分配,当一个请求到达时,优先为其分配权值最大的服务器。

特点: 加权轮询可以应用于服务器性能不等的集群中,使资源分配更加合理化。

(3)IP 哈希(IP hash)

ip_hash 依据发出请求的客户端 IP 的 hash 值来分配服务器,该算法可以保证同 IP 发出的请求映射到同一服务器,或者具有相同 hash 值的不同 IP 映射到同一服务器。

特点: 该算法在一定程度上解决了集群部署环境下 Session 不共享的问题。

Session 不共享问题是说,假设用户已经登录过,此时发出的请求被分配到了 A 服务器,但 A 服务器突然宕机,用户的请求则会被转发到 B 服务器。但由于 Session 不共享,B 无法直接读取用户的登录信息来继续执行其他操作。

(4)URL hash

url_hash 是根据请求的 URL 的 hash 值来分配服务器。该算法的特点是,相同 URL 的请求会分配给固定的服务器,当存在缓存的时候,效率一般较高。然而 Nginx 默认不支持这种负载均衡算法,需要依赖第三方库。

(5)最小连接数(Least Connections)

假设共有N台服务器,当有新的请求出现时,遍历服务器节点列表并选取其中连接数最小的一台服务器来响应当前请求。连接数可以理解为当前处理的请求数。

Nginx通过如上算法实现了负载均衡。

相关参考文献地址:https://zhuanlan.zhihu.com/p/134220193

避坑指南:SAP成本中心分割结构配置常见错误及解决(含KA06/KL01前置步骤) 本文深入解析了SAP成本中心会计中分割结构配置的关键步骤与常见错误。重点强调了配置前必须通过KA06创建次级成本要素(类别42)和通过KL01创建活动类型这两个核心前置步骤,并详细剖析了在OKES中定义分割规则及版本时的高频报错原因与解决方案,帮助顾问和运维人员有效规避配置陷阱,确保成本分摊的准确性。 阅读详情

相关推荐

永磁同步电机FOC控制实战:如何用线性死区补偿解决低速抖动问题(附Matlab仿真代码)

本文详细介绍了永磁同步电机FOC控制中线性死区补偿技术的工程实现方法,有效解决低速抖动问题。通过Matlab/Simulink仿真验证,该方案可将转矩脉动降低70%以上,显著提升系统稳定性。文章包含完整的数学模型构建、Simulink实现步骤及参数整定技巧,为工程师提供实用解决方案。

weixin_30872499的博客 153

细说 Nginx: 负载均衡 Load Balance

细说 Nginx: 负载均衡 Load Balance 文章目录细说 Nginx: 负载均衡 Load Balance准备服务负载均衡配置项负载均衡策略更多配置项示例ip_hash轮询 + 权重参考连接完整代码示例 准备服务 首先我们先准备三个后端服务,起在 8081~8083 端口上 server.js const express = require('express'); const createServer = (ports) => { const countMap = {}; //

超悠閒的博客 2455

告别环境配置烦恼:Docker容器化一站式搭建Zephyr RTOS开发环境

本文详细介绍了如何使用Docker容器化技术一站式搭建Zephyr RTOS开发环境,彻底解决环境配置不一致、依赖冲突等难题。通过预构建镜像、数据卷挂载和实战编译示例,帮助开发者快速获得隔离、一致且可复现的嵌入式开发环境,大幅提升开发效率和团队协作体验。

n8m7b6v5c4的博客 189

Nginx 负载均衡

负载均衡:​ 英文名称为 Load Balance,其主要意思是将任务分配到多个服务器上分别执行,进而达到提高执行效率,缩短执行时间的目的。

weekshy的博客 281

手把手教你搭建《黑色沙漠》单机版:从下载到联机的完整指南(含GM工具使用)

本文提供《黑色沙漠》单机版从下载安装到GM工具使用及局域网联机的完整教程。详细解析不同版本选择、系统配置要求、常见问题解决,并分享GM工具高级命令和局域网联机设置技巧,帮助玩家轻松搭建个性化游戏环境。

weixin_28738165的博客 465

FPGA以太网通信实战(一):实现MDIO接口驱动,掌控PHY芯片的钥匙

本文介绍了以太网通信技术及其核心组件。首先概述了以太网的发展历程,从标准以太网(10Mbps)到万兆以太网(10Gbps)的技术演进。重点分析了以太网接口的两大核心部件:MAC控制器负责数据链路层协议处理,PHY芯片负责物理信号转换和连接管理。文章详细解读了MDIO接口规范,包括帧格式和读写时序,并以YT8531 PHY芯片为例,介绍了其寄存器配置方法。最后设计了一个FPGA实现方案,通过MDIO接口完成PHY芯片的软复位和状态监测功能,并利用LED指示灯实时显示网络连接速率。

weixin_64402689的博客 1660

nginx实现负载均衡load balance

nginx是根据http协议来做负载均衡的,http协议工作在应用层,是web服务的一部分,按照OSI七层网络模型来封装和解封装,属于第七层。当client发请求给LB,然后LB再去转发请求给后端的real server,这个时候如果后端的服务器出现问题,LB就发现了。修改web1和web2的页面显示,然后在浏览器中输入LB服务器的网址,反复刷新可以看见不同的页面。web服务器的日志access.log中记录的IP是负载均衡服务器的 IP,不知道用户的IP地址。

qq_45742976的博客 1780

极智嘉嵌入式面试题及参考答案

IIC(Inter-Integrated Circuit)即集成电路总线,是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它仅使用两根线,即串行数据线 SDA 和串行时钟线 SCL,就能实现多个设备之间的通信,具有简单、高效、占用资源少等优点,广泛应用于各种嵌入式系统中。

大模型大数据攻城狮的专栏 916

【运维知识进阶篇】集群架构-Nginx七层负载均衡详解

我们将负载均衡称为SLB(Server Load Balance),Nginx就是SLB的一种,负载均衡的叫法有很多,还可以叫负载、Load Balance、LB,公有云中叫SLB(阿里云负载均衡)、QLB(青云负载均衡)、CLB(腾讯云负载均衡)、ULB(ucloud负载均衡),常见的负载均衡软件有Nginx、Haproxy、LVS,Nginx是七层负载,可以造伪四层,Haproxy是七层负载、LVS是四层负载。

吾日三省吾身,想出类拔萃,要把知识学牢,学全,学深,学广。 3312

RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型

本文记录的是基于 GhostNetV3 的 RT-DETR轻量化改进方法研究。GhostNetV3的轻量模块采用方法,训练时为深度可分离卷积和1×1卷积添加,推理时通过移除分支、折叠操作,能够在不增加推理成本的同时提高性能,从而实现RT-DETR的轻量化改进。

Limiiiing的博客 970

深入浅出Nginx的基本原理和配置指南「负载均衡篇」

nginx负载均衡

ArrogantB的博客 5686

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

负载均衡Load Balance

四层负载均衡是基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,他的组装在四层的基础之上,无论四层还是七层都是指的OSI网络模型。四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性;如:nginx就无法保证自己的服务高可用,需要依赖LVS或者keepalive。如:tcp协议的负载均衡,有些请求是TCP协议的(mysql、ssh),或者说这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载均衡。

嗨 你又来啦 1045

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

负载均衡(Load Balance)的简单而又透彻的理解

负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。这里的均匀,可不是我们想象的10 ÷ 2 = 5 ,这就算均匀啦。不是的。常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。常见的负载均衡方案常见互联网分布式架构如上,分为客户端层、反向代理nginx...

wjn19921104的博客 3万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Server Load Balance(负载均衡SLB)简述

简述负载均衡原理

qq_43669844的博客 686

负载均衡(Load Balance)简单介绍

顾名思义,是指将负载进行平衡并分摊到多个操作单元上运行,从而协同完成工作任务。是在网络结构中提供一种扩展网络设备和服务器的带宽、增加网络的吞吐量、加强网络数据处理能力、提高网络灵活性和可用性的软件或硬件结构。 软件 1、基于DNS的负载均衡 由于在DNS服务器中,可以为多个不同的地址配置相同的名字,最终查询这个名字的客户机将在解析这个名字时得到其中一个地址,所以这种代理方式是通过DNS服务中的随机名字解析域名和IP来实现负载均衡。 2、反向代理负载均衡 该种代理方式与普通的代理方式不同,...

ilovejava_2010的专栏 2441

简易nginx load balance示例

更多:http://www.webyang.net/Html/web/article_137.html nginx是以反向代理的形式配置运行,对请求的实际处理需要转发到后端服务器执行。后端服务器可能有一台或多台,如何选择一台合适的后端服务器来处理当前请求便是nginx负载均衡。 nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态

AndyYang 1947

使用nginx做load balance

1. 安装nginx apt-get update apt-get install nginx 2. 配置侦听端口 /etc/nginx/site-available/default  -- 修改server的侦听端口80为其它端口,否则因为80端口已经被apache占用,nginx启动会失败 3. 配置优化nginx.conf文件 -- 参考: http://www.cnblo

shengang1978的专栏 4534

负载均衡Load Balance(F5 \ nginx \ LVS \ DNS轮询)

在做系统架构规划的时候,负载均衡,HA(高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点,当活动节点出现故障的时候,由备用节点接管)都是经常需要考虑的方案。对应并发及单点故障,考虑负载均衡方案是必不可少的。如果并发不高只是应对单点故障,则通常使用HA方案。      负载均衡(Load Balance)是集群技术(Cluster)的一种应用。负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力。目前最常见的负载均衡应用是Web负载均衡。根据实现的原

weixin_45880055的博客 4836

从零手写实现 nginx-32-load balance 负载均衡算法 java 实现

大家好,我是老马。很高兴遇到你。我们为 java 开发者实现了 java 版本的 nginx如果你想知道 servlet 如何处理的,可以参考我的另一个项目:手写从零实现简易版 tomcatminicatNginx 支持多种负载均衡算法,包括轮询、权重轮询、最少连接、IP 哈希和一致性哈希。每种算法适用于不同的场景,可以根据具体需求选择合适的算法来优化负载均衡策略。

1326

从零手写实现 nginx-31-load balance 负载均衡介绍

大家好,我是老马。很高兴遇到你。我们为 java 开发者实现了 java 版本的 nginx如果你想知道 servlet 如何处理的,可以参考我的另一个项目:手写从零实现简易版 tomcatminicatNginx 负载均衡的目标是通过均匀分配请求,确保每台服务器(大厨)都不至于过载,从而提升整体系统的效率和可靠性。这样,每个顾客都能更快地得到服务,整个餐馆的运营也更加顺畅。Nginx 提供了多种负载均衡算法,包括轮询、权重轮询、最少连接、IP 哈希和一致性哈希。

1100

Web负载均衡(Load Balance)

负载均衡(Load Balance)是集群技术(Cluster)的一种应用。

smithdoudou88的专栏 1858

【java学习】负载均衡(LB,Load Balance)

1,概念 2,分类 1)服务端负载均衡 ①硬件负载均衡 主要是服务器节点之间专门安装用于负载均衡的设备,如F5设备。 F5 目前所有负载均衡的厂商实现对服务器的负载均衡都是基于虚拟IP技术的,负载均衡设备对服务器进行健康检查,然后把检查结果列入设备服务器状态列表里,根据这个检查结果来决定一个请求发送到哪台服务器效果最好,应用广泛的就是F5的LTM系列.。 ②软件负载均衡 通过在服务器上安装具有负载...

午后阳光 2194

负载均衡(Load Balance)介绍

负载均衡(Load Balance,简称LB)是⼀种服务或基于硬件设备等实现的⾼可⽤反向代理技术,负载均衡将特定的业务(web服务、⽹络流量等)分担给指定的⼀个或多个后端特定的服务器或设备,从⽽提⾼了公司业务的并发处理能⼒、保证了业务的⾼可⽤性、⽅便了业务后期的⽔平动态扩展。 一、为什么要用负载均衡? 1、Web服务器的动态⽔平扩展 2、解决单服务器并发瓶颈问题 3、节约公⽹IP地址 4、隐藏内部服务器IP,提⾼内部服务器安全性 5、配置简单 6、⽀持四层和七层负载,⽀持动态下线主机 二、负载类型 四层负载

LCK 博客 3104

负载均衡(Load Balance)学习笔记(一):什么是负载均衡以及分类介绍

记录下负载均衡基础知识,方便查阅

小白的专栏 873

Centos7+Nginx负载均衡(Load Balance)配置详情介绍

Centos7+Nginx负载均衡(Load Balance)配置详情介绍 Centos7+Nginx负载均衡(Load Balance)配置详情介绍 随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载

iqmae68024的博客 1221
上一篇: 负载均衡(Load Balance)学习笔记(三):线程数计算
下一篇: C#:圣诞节内卷,铅笔画制作
胖胖的战士
博客等级 码龄18年 104粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值