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

8月9日上课内容 nginx负载均衡

负载均衡工作当中用的很多的,也是面试会问的很重要的一个点

负载均衡:通过反向代理来实现(nginx只有反向代理才能做负载均衡)

正向代理的配置方法(用的较少)

反向代理的方式:四层代理与七层代理

 

1、NGINX的七层代理四层代理:

七层代理最常用的反向代理方式,只能配置在nginx配置文件的http模块中。而且配置方法名称叫:upstream模块,不能写在server中,也不能写在location中,在http模块当中是独立的一个配置(模块)。

七层代理:七层代理的就是http请求和响应。

客户端------>http请求------>七层代理(代理服务器上)------>代理服务器转发http请求到内部的一组服务器(web集群)

-------------->客户端不知道请求的是代理服务器还是内部服务器,而且通过代理服务器隐藏了内部服务器的ip。

实际上访问的是代理服务器,请求到代理,代理转发给web服务器。web服务器响应。

注:代理服务器只是负责转发,最终还是由web服务器来响应用户的。

四层代理:四层代理是基于tcp/ip协议的代理转发方式(四层就是传输层,协议),可以实现基于ip地址和端口进行负载均衡转发。 

四层代理无法获取http请求当中的URL信息,只能对tcp或者udp的数据包进行转发。流量转发stream,stream是不能配置在http模块中的,配置在全局当中。是属于一个独立的模块,不属于其他任何模块。

四层代理和七层代理之间的区别(面试题,重点)

1、七层走的是http请求四层走的是tcp/udp的数据包,转发的是流量。

七层代理http请求,可以对请求进行深入的解析和处理流量控制,内容的过滤

四层代理不能进行流量的控制,也没办法对内容进行过滤。

四层代理通常适用于:需要处理大量连接请求的场景。

七层:对请求进行精确处理和控制的场景。

在实际工作中,四层和七层可以配合使用。

2、四层代理和七层代理谁的速度快(核心):

四层代理速度比七层代理速度快

1、四层只是流量转发,不能对请求进行解析和控制,所以速度快。

2、四层代理走的是内核,内核转发的流量,所以速度快。

1、七层慢,他对请求进行解析和处理,速度比较慢

2、七层走的是用户态,访问控制,流量处理,所以速度比较慢。

七层代理可以提供更高级的服务和更高的用户体验。

正向代理:

proxy_pass 配置代理服务器访问的地址,只能写在location模块当中。 

例:

nginx1

nginx2

 

访问看一下日志文件

流量是通过代理服务器61来访问的

反向代理:客户端访问代理服务器,代理服务器转发请求或者流量到后端服务器,后端的web服务器会有多台,用户并不知道最终访问的服务器是哪一台服务器。

主要作用:负载均衡 高可用 可扩展 提高可维护性

你在工作中怎么做反向代理?实现方式是什么?(面试题,重点)

upstring:基于http实现负载均衡。就是反向代理。

调用ky30

修改一下62 63的配置 

 

通过61这个代理服务器把流量转发到62 63上

用轮询算法,分给test1 test2

upstream:基于http实现负载均衡。也就是反向代理

1、http请求的负载均衡方式

2、没有缓存

3、负载均衡的算法(实现方式,重点,掌握)

1、默认算法:轮询算法 rr 请求轮流分配给后端服务器,轮询算法适用于web服务器处理能力相近的情况,默认算法,可以不加。

2、加权轮询:

检查一下语法:

访问一下

2、加权轮询:建立在轮询算法的基础之上,通过给不同的web服务器权重,让处理能力更强的服务器可以分配到更多的请求。虽然配置了权重值,但是轮询的结果未必准确。

3、ip_hash:根据ip地址计算出一个hash值,使用ip_hash的算法,同一个客户端的请求,会被分配到同一个后端服务器上,保证会话的稳定性。如果后端服务器的数量发生变化,hash会被重新计算,请求的服务器也会发生变化。

请求一下:

发现第一次请求之后,再请求的状态码都是304,读取的是缓存,且每次请求访问的都是同一个服务器。

4、最少连接数:least_conn;轮询,会把请求发送到当前连接数最少的后端服务器。

适用于后端服务器处理任务耗时不同的情况,避免了所有请求集中在处理能力更强的服务器上。会和加权轮询配合使用。

5、url_hash:

 

清一下缓存,开一下新的终端,看一下

发现每次的请求也会分配到同一个服务器

换一个客户机访问一下:

发现请求的是location匹配的是uri,请求的也是同一个服务器

5、url_hash:根据uri地址计算hash值,使用url hash,相同请求的uri会分配到同一个后端服务器。

算法应用总结:

小场景:并发量很小,默认算法就可以满足适用条件

后端web服务器的处理能力有差异:加权轮询,和最小连接数配合使用。

大型并发:ip_hash,url_hash。第一次请求之后,会有本地缓存,而且因为hash算法的原因,请求的后台web服务器不会发生变化,可以提高访问速度,访问的是缓存(所以快)。减轻了后台服务器的请求压力。

注意:ip_hash,后端web服务器数量发生变化,请求的服务器也可能会发生变化。

url_hash,请求的地址发生变化,请求的服务器也可能会发生变化。

你怎么做反向代理的?概括总结

反向代理--->负载均衡--->算法--->根据不同的场景(并发量)选择不同的算法

反向代理就是负载均衡,你要做负载均衡,看你的场景并发量,访问人数有多少。根据这个指标,来确定负载均衡的算法。

并发小:默认轮询或者加权轮询,配合最小连接数使用即可。

高并发:ip_hash或者url_bash来实现,访问一次之后就不会再切换后端服务器。下一次访问的就是缓存,速度快,后台服务器请求的压力,也会变小。(仅限于http请求,不能写在stream里)

stream可以用加权,可以用轮询,转发流量不能基于ip_hash和url_hash

实验:基于域名来实现负载均衡

nginx1

 

配置完需要在本地做一个配置

nginx2 后台代理服务器配置

 

nginx3 后台服务器配置

都需要做本地映射

改完在撰写栏写一个重启nginx服务的命令

这样就三台机器可以同时执行重启命令

用test1作为客户端

映射服务器

映射地址是61,因为访问test,通过test这个代理服务器的地址来进行转发,所以配置的是test

虽然设置了域名,host地址还没有被传到后端服务器,所以无法解析,是404

在代理服务器上nginx1配,location模块中配置,把头部信息传给后端服务器

主机地址和真实ip地址写进去

请求头要包含主机名和真实的ip地址

配置完之后重启一下服务即可

访问没问题,再改一下访问地址

客户机直接访问,没问题,说明没问题

再到虚拟机中访问一下:

 

访问成功

四层代理:

stream单独一个模块,stream模块里面再单独配置一个server模块,调用upstream的server方法

配置端口号,让四层能够转发

检查一下,发现错误:

看一下日志

80端口被占用,把server端口改一下

再重启一下nginx,用浏览器访问一下,成功

也可以实现轮询

 

实验总结:

1、七层:

http根据ip地址

根据域名

2、四层

stream

ip_hash

轮询:默认 rr

           加权

最小连接数 

注:匹配uri不行

默认不带轮询

要想它轮询得加权

相关文章:

8月9日上课内容 nginx负载均衡

负载均衡工作当中用的很多的,也是面试会问的很重要的一个点 负载均衡:通过反向代理来实现(nginx只有反向代理才能做负载均衡) 正向代理的配置方法(用的较少) 反向代理的方式:四层代理与七层代…...

为何我们都应关心算法备案?

随着技术的日新月异,算法成为现代生活的核心组成部分,从社交媒体推荐、在线广告到智能交通管理,几乎无处不在。然而,如此普及的技术给我们带来了一个新的挑战:如何确保算法的透明度、公正性和道德性?答案可…...

[IDEA]使用idea比较两个jar包的差异

除了一些小工具外,idea自带了jar包比较的功能。 把需要比对的jar包放到任意目录下,然后选中两个需要比较的jar包,右键,选择Compare Archives,然后就可以比较了。 这次疏忽了,每次打包前需要commit界面看一下…...

HTML笔记(2)

列表标签 项目标识符(项目符号)一般是不需要的 代码演示 改变符号样式,type属性 表格标签 代码演示 练习案例 布局标签 div是块儿级标签,占一整行; span标签不会占一整行,它只占包裹内容的那块儿区域&a…...

前端大屏自适应缩放

简介 前端中大屏往往用于展示各种炫酷的界面和特效,因此特别受用好欢迎。 但是在开发过程中,常常也会出现各种问题,与一般的页面相比, 最让人头疼的是大屏的自适应问题。使用CSS中transform属性和js获取缩放比例方法 先简单写一下…...

【Express.js】全面鉴权

全面鉴权 这一节我们来介绍一下 Passport.js,这是一个强大的 NodeJS 的认证中间件 Passport.js 提供了多种认证方式,账号密码、OpenID、ApiKey、JWT、OAuth、三方登录等等。 使用 Passport.js 认证要配置三个部分: 认证策略中间件会话 接…...

了解华为(H3C)网络设备和OSI模型基本概念

目录 一,认识华为 1.华为发展史 2.华为网络设备介绍 3.VRP概述 二,OSI七层模型 1.七层模型详细表格 2.各层的作用 3.数据在各层之间的传递过程 4.OSI四层网络模型 一,认识华为 官网:https://www.huawei.com/cn/ 1.华为发…...

Web3到底是个啥?

Web3是近两年来科技领域最火热的概念之一,但是目前对于Web3的定义却仍然没有形成标准答案,相当多对于Web3的理解,都是建立在虚拟货币行业(即俗称的“币圈”)的逻辑基础之上的。 区块链服务网络(BSN&#x…...

山东高校的专利申请人经常掉进的误区2

02、专利技术交底书只提供简单思路 一些高校科研人员在申请专利时,给专利代理人的技术交底书往往只给出了思路,或者技术方案不够详细,或者根本不会有实验验证过程和数据。 事实上,专利技术交底书的详尽程度将直接影响代理人对技…...

关于webpack的基本配置

文章目录 前言一、webpack基本配置1.配置拆分和merge2. 启动服务3、处理es6,配置babel4、处理样式5、处理图片 前言 为什么要有webpack构建和打包? 更好的模块化管理。webpack支持模块化规范:代码分割成独立模块,并管理模块之间…...

SpringBoot WebSocket配合react 使用消息通信

引入websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>配置websocket import org.springframework.context.annotation.Bean; import org.spr…...

【积水成渊】uniapp高级玩法分享

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人_python人工智能视觉&#xff08;opencv&#xff09;从入门到实战,前端,微信小程序-CSDN博客 最新的uniapp毕业设计专栏也放在下方了&#xff1a; https://blog.csdn.net/lbcy…...

在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配

1.Cadence 17.2 配置CIS数据库报&#xff1a;ERROR(ORCIS-6245): Database Operation Failed 安装cadance17.2以上版本时&#xff0c;ERROR(ORCIS-6245): Database Operation Failed_收湾湾的博客-CSDN博客 原因是ODBC数据库没有配置&#xff0c;或者没有驱动&#xff0c; 驱…...

API接口 |产品经理一定要懂的技术知识

什么是接口❓ 要理解接口是什么&#xff0c;首先理解一下为什么要用接口&#xff1f; 两个独立的系统&#xff0c;它们的数据或程序是独立的&#xff0c;这就使得它们无法直接访问对方的数据库或程序&#xff08;两个独立的数据相当于两个独立的家庭&#xff0c;每个家庭肯定是…...

C++中访问存储在数组中的数据

C中访问存储在数组中的数据 要访问数组中的元素&#xff0c;可使用从零开始的索引。这些索引之所以被称为从零开始的&#xff0c;是因为数组中第一个元素的索引为零。因此&#xff0c;存储在数组 myNumbers 中的第一个整数值为 myNumbers[0]&#xff0c;第二个为 myNumbers[1]…...

【创建型设计模式】C#设计模式之原型模式

原型模式是一种创建型设计模式&#xff0c;它通过复制现有对象来创建新对象&#xff0c;而无需通过实例化的方式。它允许我们使用已经存在的对象作为蓝本&#xff0c;从而创建新的对象&#xff0c;这样可以避免重复初始化相似的对象&#xff0c;提高了对象的创建效率。 现在给…...

用C语言高效地打印杨辉三角

假设杨辉三角的通项公式为a(n)&#xff0c;则打印形式如下&#xff1a; 然而我们知道&#xff0c;它应该是这样的&#xff1a; 三角形两边的值都为1&#xff0c;且每个元素的值都为该元素正上方和其正上方前面的元素的值之和。 为了实现这个代码&#xff0c;我们需要知道每行首…...

TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的

一、TCP/IP四层模型对比OSI七层模型 它们两个定义的一些功能和协议都是差不多的。TCP/IP四层协议模型比我们的七层少了三层&#xff0c;把我们的数据链路层和物理层放在一层里面了&#xff0c;叫做数据链路层&#xff08;网络接口层&#xff09;&#xff0c;对应网络协议也没有…...

接口测试实战,Jmeter正则提取响应数据-详细整理,一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 在测试时&#xf…...

基于自适应变异粒子群优化BP神经网络 的风速预测,基于IPSO-BP神经网络里的风速预测

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于自适应变异粒子群算法改进优化BP神经网络的风速预测 完整代码下载:https://download.csdn.net/download/ab…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...