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

nginx负载均衡(nginx结束)

本节主要内容

1、四层,七层代理的配置方法

2、负载均衡的算法

nginx负载均衡:反向代理来实现

 反向代理有两种转发方式:1、四层代理  2、七层代理

Nginx的七层代理和四层代理

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

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

工作原理:客户端→http请求→七层代理(代理服务器上)→代理服务器转发http请求到内部的一组服务器上(web集群)→客户端不知道请求的是代理服务器还是内部服务器,而且通过代理服务器响应了内部服务器的ip,实际上访问的是代理服务器,请求到代理服务器,代理服务器转发给web服务器,web服务器响应。

四层代理:

四层代理是基于tcp/ip协议层的代理转发方式,可以实现基于ip地址和端口进行负载均衡转发,四层代理无法获取http请求的URL信息,只能对tcp/udp数据包进行转发。流量转发

在nginx中为stream,stream是不能配置在http模块中,配置在全局中,是属于一个独立的模块,不属于其他任何模块。

面试题一:七层代理和四层代理的区别

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

四层代理走的是tcp/udp请求的数据包,转发的是流量。

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

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

七层代理适用于对请求进行精确处理和控制的场景

面试题二:四层代理和七层代理谁的速度块

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

七层代理要对请求进程处理和解析,所以速度慢。

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

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

正向代理(用的少):

 谷歌看到的请求地址是代理服务器的地址

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

反向代理(重点,用的多)

反向代理:客户端访问代理服务器,代理服务器转发请求或者流量到后端服务器

后端的web服务器会有多台(集群),用户并不知道最终访问的是哪一台服务器

反向代理的特点:负载均衡,高可用,可扩展,提高可维护性

upstream:基于https实现负载均衡,就是反向代理

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

2、没有缓存,返回码没有304

3、负载均衡算法

负载均衡的算法(重点,面试会问):

1、默认算法,轮询(rr):请求轮流分配给后端服务器

轮询算法适用于web服务器处理能力相近的情况,不写入任何方法就是默认的轮询算法

2、加权轮询:建立在轮询算法的基础之上,通过给不同的web服务器权重,让处理能力更强的服务器可以分配到更多的请求。

虽然配置了权重值,但是轮询的结果未必准确。

例:

server 192.168.88.20  weight=2;

server 192.168.88.30  weight=3;

30服务器的权重大,会分配到更多的请求

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

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

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

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


总结:1、并发量小,默认算法就可以满足使用条件。

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

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

4、ip_hash:后端web服务器数量发生变化,请求的服务器也会发生变化

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

面试题三:怎么做反向代理(实际上问的是负载均衡)

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

并发量小:默认的轮询算法或加权轮询配合最小连接数使用即可

高并发:ip_hash或url_hash来实现,访问一次之后就不会再切换到后端web服务器

下一次访问就是缓存,速度快,后台web服务器请求的压力也会变小。

stream和upstream都可以做反向代理

实验

upstream

轮询算法

192.168.88.30作为代理服务器

修改30服务器

 ky30相当于调用的函数,用proxy_pass来调用ky30

 

 

修改40服务器和50服务器

 

 

到浏览器查看

实验二:加权轮询

 

 

 

 在浏览器清除一下缓存,刷新几次发现轮询的结果不一定准确

实验三:ip_hash

 

 

 

 在浏览器新开一个页面,清除缓存,通过30代理服务器访问

 刷新几次发现一开始的状态码为200,后面的状态码都为304读取的是缓存

因为使用ip_hash算法,同一个客户端的请求会被分配到同一个后端服务器。保证会话的稳定性。

实验四:最少连接数

 

 

 请求40服务器时状态码为200

 请求50时,状态码为304

实验五:url_hash

 

 

 

 

 多刷新几次发现没有变化,访问的都是40服务器

到50服务器中

 

 

 

 请求的是location匹配的uri

使用url_hash会把相同请求的uri会分配到同一个后端web服务器

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

 ky30相当于一个名字可以随便去但是不能为特殊符号

 因为没有这个网址,需要在本地做个映射

 检查一下

到40服务器中修改域名

 

在本地做映射 

到50服务器中

 

做映射 

开一台新的虚拟机

 

回到客户机30

 在请求头中要包含真实ip地址,和真实的域名才可以在浏览器中成功访问

相关文章:

nginx负载均衡(nginx结束)

本节主要内容 1、四层,七层代理的配置方法 2、负载均衡的算法 nginx负载均衡:反向代理来实现 反向代理有两种转发方式:1、四层代理 2、七层代理 Nginx的七层代理和四层代理 七层是最常见的反向代理方式,只能配置在nginx配置文…...

Git与Github常用方法

目录 1. Github基本使用方法2. Git使用方法3. git、VS code、Github联合使用方法4. Git配置Github远程仓库SSH密钥5 常见问题 1. Github基本使用方法 仓库(Repository):Github上用来存放代码的空间,包含代码、文档和其他文件。提…...

Centos7离线安装MySQL8

1、下载MySQL https://downloads.mysql.com/archives/community/ 2、下载完毕后,上传到Centos,解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3、逐条执行安装命令 rpm -ivh mysql-community-common-8.0.33-1.el7.x86_64.rpm rpm -ivh …...

AWD攻防学习总结(草稿状态,待陆续补充)

AWD攻防学习总结 防守端1、修改密码2、备份网站3、备份数据库4、部署WAF5、部署文件监控脚本6、部署流量监控脚本/工具7、D盾扫描,删除预留webshell8、代码审计,seay/fortify扫描,漏洞修复及利用9、时刻关注流量和积分信息,掉分时…...

扫雷(超详解+全部码源)

C语言经典游戏扫雷 前言一.游戏规则二.所需文件三.创建菜单四.游戏核心内容实现1.创建棋盘2.打印棋盘3.布置雷4.排查雷5.game()函数具体实现 五.游戏运行实操六.全部码源 前言 😀C语言实现扫雷是对基础代码能力的考察。通过本篇文章你将学会如何制作出扫雷&#xff…...

python生成exe脚本全过程

python生成exe脚本全过程 1、定义设计的GUI界面2、几个GUI界面常用函数2.1 tk.Label2.2 tk.StringVar2.3 tk.Entry2.4 tk.Button2.5 tk.Text2.6 tk.Scrollbar 3、实例3.1 需求3.2实现 4、如何使用pycharm生成可执行exe文件4.1安装pyinstaller4.2 生成exe文件 5、生成exe过程中遇…...

【机器学习1】什么是机器学习机器学习的重要性

什么是机器学习? 简而言之,机器学习就是训练机器去学习。 机器学习作为人工智能(Artificial Intelligence,AI)的一个分支,以其最基本的形式来使用算法通过从数据中获取知识来进行预测。 不同于人类通过分析大量数据手动推导规则和模型,机…...

立即开始使用 3D 图像

一、说明 这个故事介绍了使用这种类型的数据来训练机器学习3D模型。特别是,我们讨论了Kaggle中可用的MNIST数据集的3D版本,以及如何使用Keras训练模型识别3D数字。 3D 数据无处不在。由于我们希望构建AI来与我们的物理世界进行交互,因此使用3…...

鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统em

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目…...

《向量数据库》——怎么安装向量检索库Faiss?

装 Faiss 以下教程将展示如何在 Linux 系统上安装 Faiss: 1. 安装 Conda。 在安装 Faiss 之前,先在系统上安装 Conda。Conda 是一个开源软件包和环境管理系统,可在 Windows、macOS 和 Linux 操作系统上运行。根据以下步骤在 Linux 系统上安装 Conda。 2. 从官网…...

学习pytorch 2 导入查看dataset

学习pytorch 2 2. dataset实战代码数据集 2. dataset实战 B站小土堆视频 代码 from torch.utils.data import Dataset from PIL import Image #import cv2 import osclass MyData(Dataset):def __init__(self, root_dir, label_dir):self.root_dir root_dirself.label_dir …...

三、kubeadm部署单Master节点kubernetes集群

kubeadm部署单Master节点kubernetes集群 一、kubernetes 1.21发布 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sGgnZuno-1691633861803)(kubeadm部署单Master节点kubernetes集群 1.21.0.assets/image-20220119160108054.png)] 1.1 介绍 2021年…...

js-6:typeof和instanceof的区别

1、typeof typeof操作符返回一个字符串,表示未经计算的操作数的类型。 operand表示对象或原始值的表达式,其类型将被返回。 从上面的例子可以看出,前6个都是基础数据类型,虽然typeof null为object,但这只是javascrip…...

SQL SERVER 异地备份到远程共享文件夹异常处理

SQL SERVER 异地备份到远程共享文件夹异常处理 SQL Server 异地备份到远程共享文件夹异常处理 - 灰信网(软件开发博客聚合) -- 允许配置高级选项 EXEC sp_configure show advanced options, 1 GO -- 重新配置 RECONFIGURE GO -- 启用xp_cmdshell EXEC sp…...

服务器数据恢复-RAID5上层Hyper-V虚拟机数据恢复案例

服务器数据恢复环境: 一台Windows Server服务器,部署Hyper-V虚拟化环境,虚拟机的硬盘文件和配置文件存放在一台DELL存储中。该存储中有一组由4块硬盘组建的RAID5阵列,用来存放虚拟机的数据文件,另外还有一块大容量硬盘…...

Easy Rules规则引擎(1-基础篇)

目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、…...

Linux 上安装部署Nacos

标题:在Linux上安装和部署Nacos Nacos是一个开源的分布式服务发现和配置管理平台,它可以帮助开发人员实现微服务架构中的服务注册、发现和动态配置管理。 步骤1:准备工作 在开始安装Nacos之前,确保您已经具备以下条件&#xff1…...

电动机的启动

1电动机启动分类 电动机启动方式包括:全压直接启动、自耦减压启动、Y-Δ 启动、软启动器、变频器。其中软启动器和变频器启动为潮流。当然也不是一定要使用软启动器和变频器启动,在运用的时候根据实际情况,从经济和适用性自行考虑选择。 2电…...

python性能分析,logging性能,print性能,文件写入性能对比

先说结论,没想到的是print性能比logging性能好,输出到控制台会极大降低程序性能,以下是我的性能对比结果: 运行情况是python后台运行并输出到日志,命令是 python3 test.py > /opt/testtime.log 2>&1 &...

[GIN-debug] [ERROR] listen tcp: address 8080: missing port in address

学习Golang_gin框架的第一天 遇到一下报错 : [GIN-debug] [ERROR] listen tcp: address 8080: missing port in address 错误代码 : package mainimport "github.com/gin-gonic/gin"func main() {router : gin.Default()router.GET("/index", func…...

PRD文档模板

xxxxxx 需求规格说明书 南京市xxx信息服务有限公司 修订记录 版本号 修订日期 修订人 修订描述 V1.0 20190203 xxxxx 初稿 一、概述 1.1需求背景 说明需求背景,为什么要做该需求,主要是为了解决什么问题等 背景举例:目前…...

空项目文档无法生成技术内容

项目标题“mecanum2017_2”未提供有效摘要、关键词及README内容,所有输入字段均为空或无效(摘要仅为十六个日文平假名“おぼぼぼぼぼぼぼぼぼぼぼぼぼぼぼ”,无技术含义;关键词为空;README内容为空)。 根据…...

用 Shield CLI 本地开发调试:从零到上线你的第一个 Skill

当 AI Agent 需要调用外部能力时,Skill 就是它的"技能包"。本文以一个文旅素材搜索 Skill 为例,带你走完本地开发 → 调试 → 发布 → 安装使用的完整流程。核心工具只有一个 —— Shield CLI。 背景:什么是 Skill? Sk…...

JavaScript中BigInt与Number类型混用的报错机制

JavaScript中BigInt与Number不能直接混合运算&#xff0c;会立即抛出TypeError&#xff1b;所有涉及两者混合的算术和关系操作&#xff08;如1n1、10n<5&#xff09;均报错&#xff0c;仅和不报错但返回false。JavaScript中BigInt与Number不能直接混合运算&#xff0c;会立即…...

MusePublic一文详解:safetensors vs. bin/pth格式性能对比

MusePublic一文详解&#xff1a;safetensors vs. bin/pth格式性能对比 1. 项目背景介绍 MusePublic是一款专为艺术感时尚人像创作设计的轻量化文本生成图像系统。这个项目的核心基于MusePublic专属大模型&#xff0c;在艺术人像的优雅姿态、细腻光影和故事感画面方面做了专门…...

基于yolov8和faster-rcnn的电动车戴头盔检测,界面可选择模型,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测、图像分类识别、目标追踪、图像分割、图像检索等项目可看我主页其他文章 功能演示&#xff08;看shi pin 下面的简介&#xff09;&#xff1a; https://www.bilibili.com/video/BV1DWXrBaE3Z/?spm_id_from333.1387.homepage.video_card.click&vd_source23c…...

C 标准库 - `<ctype.h>`

C 标准库 - <ctype.h> 概述 在C语言编程中,字符处理是基础且常见的需求。《ctype.h》是C标准库中的一个头文件,提供了丰富的字符处理函数。这些函数用于检测字符的类型(如字母、数字、空白字符等),以及转换字符的大小写。本篇文章将详细介绍 <ctype.h> 头文…...

工业网关上线前必须做的7项压力测试,第4项让3家客户当场终止验收:PHP-FPM+Docker+K8s边缘集群压测黄金指标手册

第一章&#xff1a;工业网关上线前必须做的7项压力测试&#xff0c;第4项让3家客户当场终止验收&#xff1a;PHP-FPMDockerK8s边缘集群压测黄金指标手册为什么第4项测试如此关键 第4项测试聚焦于 PHP-FPM 在高并发短连接场景下的子进程回收与内存泄漏叠加效应——这正是导致三家…...

宝可梦存档管理全世代兼容指南:从备份到跨世代转移的完整解决方案

宝可梦存档管理全世代兼容指南&#xff1a;从备份到跨世代转移的完整解决方案 【免费下载链接】PKSM Gen I to GenVIII save manager. 项目地址: https://gitcode.com/gh_mirrors/pk/PKSM 宝可梦训练师们常常面临存档丢失、跨世代宝可梦转移困难等问题。本文将介绍一款名…...

【AI CTO视角】算力不是堆资源,而是一场精细化工程

经常和行业内的朋友交流&#xff0c;发现一个普遍现象&#xff1a;一提到AI算力建设&#xff0c;很多人的第一反应还是堆卡、扩集群、上规模&#xff0c;仿佛GPU数量上去了&#xff0c;算力竞争力自然就来了。 但从实际落地与商业化视角看&#xff0c;尤其在大模型规模化服务、…...