nginx负载均衡

目录

负载均衡

nginx的七层代理和四层代理

四层代理与七层代理之间的区别

四层和七层谁的速度快?

正向代理与反向代理

负载均衡

upstream

算法

算法总结

stream


负载均衡

通过反向代理来实现

nginx的七层代理和四层代理

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

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

客户端发起http请求----七层代理(代理服务器)----代理服务器转发http请求到内部的一组服务器(web集群)----客户端不知道请求的代理服务器还是内部服务器,而且通过代理服务器影藏了内部服务器的ip

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

四层代理是基于tcp/ip协议层的代理转发方式,可以实现基于ip地址和端口进行负载均衡转发。四层代理无法获取http请求当中的URL信息,只能对tcp/udp数据包进行转发。是流量转发,stream是不能配置在http模块中,配置在全局中,是独立的模块,不属于其他任何模块

四层代理与七层代理之间的区别

面试题

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

2.七层代理的http请求,可以对请求进行深入的解析和处理,进行流量控制和对内容的过滤。四层代理不能进行流量控制,也没办法对内容进行过滤。

3.四层代理通常适用于需要处理大量连接请求的场景。七层代理适用于对请求进行精确处理和控制的场景

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

四层和七层谁的速度快?

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

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

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

3.七层慢是因为要对请求进行处理和解析

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

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

正向代理与反向代理

正向代理

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

反向代理

客户端访问代理服务器,代理服务器转发请求或者流量到后端服务器,用户并不知道最终访问的是哪一台服务器负载均衡 高可用 可扩展 通过可维护性

 

负载均衡

upstream

基于http实现负载均衡,反向代理

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

2.没有缓存

3.负载均衡的算法

算法

1.默认算法

轮询算法rr 会把请求轮流分配给后端服务器,轮询算法使用与web服务器处理能力相近的情况

2.加权轮询

建立在轮询算法的基础之上,通过给不同的web服务器权重,让外理能力更强的服务器可以分配到更多的请求,转发http请求时,会往权重高的服务器上,转发的次数多。权重的,转发的就少。虽然配置权重值,但轮询结果未必准确

3.ip_hash

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

4.最少连接数

least_conn,轮询,会将请求发送到当前连接数最少的后端web服务器,适用于后端服务器处理任务耗时不同的情况,避免了所有请求集中在处理能力更强的后端服务器上。会和加权轮询配合使用

5.url_hash

根据uri地址计算hash值,使用uri_hash将相同请求的uri分配到 同一个后端web服务器

算法总结

并发量小,默认算法就可以满足适应条件

后端web服务器处理能力有差异就用加权轮询

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

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

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

你在工作中怎么做反向代理? 面试题

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

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

高并发: ip_hash或者url_hash来实现,访问一次之后,就不会再切换后端web服务器,下一次访问缓存,速度快,后台web服务器请求压力也会变小

stream

stream { upstream test { server 192.168.233.62:80 weight=1;server 192.168.233.63:80 weight=1; }server {listen 8080;
proxy_pass test;
}

注   不能写在http模块中

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

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

相关文章

实践指南-前端性能提升 270% | 京东云技术团队

一、背景 当我们疲于开发一个接一个的需求时,很容易忘记去关注网站的性能,到了某一个节点,猛地发现,随着越来越多代码的堆积,网站变得越来越慢。 本文就是从这样的一个背景出发,着手优化网站的前端性能&a…

Linux 文件与目录管理

nvLinux 文件与目录管理 我们知道 Linux 的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。 绝对路径: 路径的写…

JS逆向系列之猿人学爬虫第8题-验证码-图文点选

题目地址 https://match.yuanrenxue.cn/match/8本题的难点就在于验证码的识别,没啥js加密,只要识别对了携带坐标就给返回数据 回过头来看验证码 这里复杂的字体比较多,人看起来都有点费劲(感觉可能对红绿色盲朋友不太又好)&#x

log_softmax比softmax更好?

多类别分类的一个trick 探讨一下在多类别分类场景,如翻译、生成、目标检测等场景下,使用log_softmax的效果优于softmax的原因。 假设词典大小为10,一个词的ID为9(即词典的最后一个词),使用交叉熵作为损失函…

PS 2023 安装选项页面显示不全

文章目录 PS 2023 安装选项页面显示不全解决办法 PS 2023 安装选项页面显示不全 解决办法 按住Tab键,点击该安装选项页面即可,如下如所示:

九耶|阁瑞钛伦特 神庙逃亡游戏代码

以下是一个简单的神庙逃亡&#xff08;Temple Run&#xff09;游戏的HTML代码示例&#xff1a; <!DOCTYPE html> <html> <head><title>神庙逃亡</title><style>#game-container {position: absolute;width: 800px;height: 600px;backgrou…

仓储10、20代电子标签接口文档

标签注册 仓储10代注册 右下角左下角组合按键触发注册 注册成功&#xff1a;右上角绿灯变红灯&#xff0c;并显示信号强度的数值 ​ 仓储20代注册 右下角左下角组合按键触发注册 注册成功&#xff1a;右上角绿灯变红灯&#xff0c;并显示信号强度的数值 ​ 查询电子标签信息…

7.Eclipse中改变编码方式及解决部分乱码问题

1、改变整个工作空间的编码方式&#xff1a; 点击Window->Preference->General->workplace&#xff0c;然后选择默认编码方式 2、改变某个项目的编码方式&#xff1a; 右键点击项目名->Properties>Resource&#xff0c;然后选择默认编码方式。 问题&#xff…

node笔记——调用免费qq的smtp发送html格式邮箱

文章目录 ⭐前言⭐smtp授权码获取⭐nodemailer⭐postman验证接口⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于node调用免费qq的smtp发送邮箱。 node系列往期文章 node_windows环境变量配置 node_npm发布包 linux_配置node node_nvm安装配置 node笔记_h…

小红书攻略:爆款引流,如何在激烈竞争中脱颖而出?

小红书&#xff08;RED&#xff09;作为国内最具影响力的社交电商平台之一&#xff0c;是很多品牌运营者的首选之一。然而&#xff0c;在小红书的激烈竞争中&#xff0c;如何快速引流、吸引关注&#xff0c;成为了品牌运营者面临的挑战。本篇文章一秒推小编将为您介绍小红书运营…

【SpringCloud】Gateway服务网关

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 1.为什么需要网关…

TCP-三次握手-四次挥手

前言&#xff1a;网络传输层主要是建立端到端的连接&#xff0c;那TCP通信的连接和断开原理是什么呢&#xff1f;也就是TCP的三次握手和四次挥手是什么意思&#xff1f;下面对这两个概念进行详细的理解和学习。 这篇文章写的不错&#xff0c;很详细。 面试官&#xff0c;不要…

安全杂记 - 复现nodejs沙箱绕过

目录 一. 配置环境1.下载nodejs2.nodejs配置3.报错解决方法 二. nodej沙箱绕过1. vm模块2.使用this或引用类型来进行沙箱绕过 一. 配置环境 1.下载nodejs 官网&#xff1a;https://nodejs.org/en2.nodejs配置 安装nodejs的msi文件&#xff0c;默认配置一直下一步即可&#x…

python计算相关系数R

方法一&#xff1a; import numpy as np# 计算相关系数R def r(y_true, y_pred):y_true np.array(y_true)y_pred np.array(y_pred)corr np.corrcoef(y_true, y_pred)[0][1]return corrcorr r(yture, ypred)方法二 import scipy.stats # 计算皮尔逊相关指数&#xff0c;并…

【LangChain学习】基于PDF文档构建问答知识库(一)前期准备

这系列主要介绍如何使用LangChain大模型&#xff0c;结合ChatGPT3.5&#xff0c;基于PDF文档构建专属的问答知识库。 一、 环境搭建 LangChain 和 OpenAI 本身可支持 Nodejs 和 Python 两个版本&#xff0c;笔者后续的介绍主要用到Python版本&#xff0c;如果有需要Nodejs版本…

Spring 创建和使用

文章目录 创建 Spring 项目1. 创建一个Maven项目2. 添加 Spring 框架支持3. 添加启动类 存储 Bean 对象创建一个 Bean将 Bean 注册到容器 获取并使用 Bean 对象创建 Spring 上下文获取指定的 Bean 对象使用 Bean 对象 getBean() 的用法总结 创建 Spring 项目 1. 创建一个Maven…

山东布谷科技直播软件源码探索高效、稳定直播传输的技术介绍:流媒体传输技术

今天我们探索的是让直播软件源码平台在直播时能够高效、稳定的进行直播传输的技术&#xff0c;而这个技术就是直播软件源码平台的流媒体传输技术&#xff0c;在直播软件源码平台中&#xff0c;流媒体传输技术会将直播的图像、视频、音频等相关的流媒体信号通过网络传递到用户的…

安全渗透——AWK知识整理

1.awk的定义 awk是一种编程语言&#xff0c;用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件&#xff0c;或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能&#xff0c;是linux/unix下的一个强大编程工具。它在命令行…

Is a directory: ‘outs//.ipynb_checkpoints‘

提示out/文件夹的.ipynp_chechpoints是一个文件夹&#xff0c;但是打开文件夹却没有看到&#xff0c;可以得知他是一个隐藏文件夹&#xff0c;进入outs/文件夹&#xff0c;使用 ls -a可以看到所有文件 果然出现这个文件夹&#xff0c;但是我们这个outs/文件夹存放的是图片&am…

25分钟极速入门Java基础教程

1. 前置准备及HelloWord案例 1.1. 创建Java项目(本教程采用Idea演示语法) 1.2. 点击上面的创建你会得到下面一些的项目目录 1.3. 编写第一个代码(在控制台输出HelloWord) 1.3.1. 新建一个包&#xff0c;方便我们管理我们的代码 1.3.2. 建立一个类文件,编写代码的地方(也就是我…