Nginx负载均衡以及常用的7层协议和4层协议的介绍
一、引言
明人不说暗话,下面来解析一下 Nginx 的负载均衡。需要有 Linux 和 Nginx 环境哈。
二、nginx负载均衡的作用
高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。
伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。
高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。
安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等
三、upstream配置
首先给大家说下 upstream 这个配置,写一组被代理的服务器地址,然后配置负载均衡的算法。这里的被代理服务器地址有两种写法。
第一种方式
upstream testapp { server ip:端口; #需要代理的服务器地址ipserver ip:端口; #需要代理的服务器地址ip}server {listen 80;server_name localhost;location / { proxy_pass http://testapp; #请求转向 testapp 定义的服务器列表 }
}
第二种方式
upstream mysvr { server http://ip:端口; #需要代理的服务器ip和端口server http://ip:端口; #需要代理的服务器ip和端口}server {listen 80;server_name localhost;location / { proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 }
}
示例
我们使用第一种方法准备三台机器
代理器 :10.12.153.41
服务器1 :10.12.153.222
服务器2:10.12.153.140
首先保证服务器1和2能够正常访问到web页面
现在配置代理端的nginx配置文件
配置完成后重新加载就可以进入浏览器测试了
我们通过访问代理器10.12.153.41访问到了两个服务器的页面
默认访问页面是轮询的,什么是轮询下面会讲到哈
四、负载均衡算法
upstream 支持4种负载均衡调度算法:
1、
轮询(默认)
:每个请求按时间顺序逐一分配到不同的后端服务器;2、
ip_hash
:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。3、
url_hash
:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候提高效率。4、
fair
:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx
本身是不支持fair
的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair
模块。
负载均衡调度算法配置示例
1、热备backup
当一台服务器发生事故时,才启用第二台服务器给提供服务
服务器处理请求的顺序为 001 001 001 001 001 001 突然001出现故障这是访问页面则会是002 002 002 002 ....
2、轮询weight
nginx默认就是轮询其权重默认为1,服务器处理请求的顺序:001 002 001 002 001 002....
weight的默认值为1可以不写。上面的upstream配置实例中使用的就是普通轮询。
3、加强轮询weight
即可以使用weight修改轮询次数,下面的配置轮询访问显示为001 001 001 002 002 001 001 001 002 002 ...
4、ip_hash
nginx会让相同的客户端ip请求相同的服务器,使用ip_hash这种负载均衡以后,可以保证用户的每一次会话都只会发送到同一台服务器上
注意事项
- 一旦使用了ip_hash,当我们需要移除一台服务器的时候,不能直接删除这个配置项,而是需要在这台服务器配置后面加上关键字down,表示不可用;
- 因为如果直接移除配置项,会导致hash算法发生更改,后续所有的请求都会发生混乱;
5、nginx负载均衡配置状态参数
down,表示当前的server暂时不参与负载均衡。
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。
例
10.12.153.222 轮循两次且请求2次后失败,失败后暂停服务2秒
10.12.153.140 轮循三次且请求2次后失败,失败后暂停服务1秒
五、7层协议和4层协议介绍
7层负载和4层负载的区别
四层负载与七层负载最大的区别就是效率与功能的区别。
四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高,
而七层负载均衡的优势则体现在功能多,控制灵活强大。
在具体业务架构设计时,使用七层负载或者四层负载还得根据具体的情况综合考虑。
七层协议
OSI(Open System Interconnection)是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范,共包含七层协议
如图显示
4层协议
TCP/IP协议 之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。
从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。
nginx在1.9.0的时候,增加了一个 stream 模块,用来实现四层协议(网络层和传输层)的转发、代理、负载均衡等。stream模块的用法跟http的用法类似,允许我们配置一组TCP或者UDP等协议的监听,然后通过proxy_pass来转发我们的请求,通过upstream添加多个后端服务,实现负载均衡
扩展
TCP (传输控制协议)和 UDP (用户数据报协议) 是两种不同的网络通信协议,它们在传输数据的方式可靠性、传输速度和应用场景等方面存在一些区别。
1.传输方式
TCP 是一种面向连接的协议,它在传输数据之前需要先建立连接,然后才能传输数据。而 UDP 是一种无连接的协议,它不需要建立连接就可以直接传输数据。2.可靠性:
TCP 是一种可靠的协议,它可以保证数据的传输不会出现丢失、重复或乱序等问题。它通过确认机制.超时重传和滑动窗口等技术来保证数据的可靠性。而 UDP 是一种不可靠的协议,它不能保证数据的传输不会出现丢失、重复或乱序等问题。
3.传输速度:
TCP 的传输速度相对较慢,因为它需要建立连接、确认数据的传输和进行流量控制等操作。而 UDP 的传输速度相对较快,因为它不需要建立连接和进行流量控制等操作。
4.应用场景:
TCP 适用于需要可靠传输数据的应用场景,例如文件传输、电子邮件、远程登录等。而 UDP 适用于对传输速度要求较高,但对数据可靠性要求不高的应用场景,例如视频会议、实时游戏、DNS 解析等。
总的来说,TCP 和 UDP 都有各自的优缺点,需要根据具体的应用场景来选择使用哪种协议。
好了今天就分享到这里了!感谢大家观看!希望能够帮助到大家!
相关文章:
Nginx负载均衡以及常用的7层协议和4层协议的介绍
一、引言 明人不说暗话,下面来解析一下 Nginx 的负载均衡。需要有 Linux 和 Nginx 环境哈。 二、nginx负载均衡的作用 高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力…...
【机器学习300问】4、机器学习到底在学习什么?
首先我们先了解一个前置问题,再回答机器学习到底在学习什么。 一、求机器学习问题有哪几步? 求解机器学习问题的步骤可以分为“学习”和“推理”两个阶段。首先,在学习阶段进行模型的学习,然后,在推理阶段用学到的模型…...
设计一个简易版的数据库路由
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…...
接口自动化测试面试题
前言 前面总结了一篇关于接口测试的常规面试题,现在接口自动化测试用的比较多,也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢? 也就是面试的过程中,面试官会考哪些问题,知道你是不是真的做过接口自动…...
Tampermonkey油猴插件-各大网盘批量分享,解放双手-上
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列...
【DB2】installSAM执行后会重启这件事
碎碎念 在使用自动化工具安装TSAMP的过程中,机器会自动重启这件事。 TSAMP真的挺折磨的,一个月居然因为这件事情debug两次了。 在测试自动化脚本的时候,第一遍安装都是好好的,从第二遍开始(因为要测试脚本的幂等性&…...
RTSP网络视频协议
一.RTSP网络视频协议介绍 RTSP是类似HTTP的应用层协议,一个典型的流媒体框架网络体系可参考下图,其中rtsp主要用于控制命令,rtcp主要用于视频质量的反馈,rtp用于视频、音频流从传输。 1、RTSP(Real Time Streaming P…...
Python 网络数据采集(四):Selenium 自动化
Python 网络数据采集(四):Selenium 自动化 前言一、背景知识Selenium 4Selenium WebDriver 二、Selenium WebDriver 的安装与配置2.1 下载 Chrome 浏览器的驱动程序2.2 配置环境变量三、Python 安装 Selenium四、页面元素定位4.1 选择浏览器开…...
实现秒杀功能设计
页面 登录页面 登录成功后,跳转商品列表 商品列表页 加载商品信息 商品详情页 根据商品id查出商品信息返回VO(包括rmiaoshaStatus、emainSeconds)前端根据数据展示秒杀按钮,点击开始秒杀 订单详情页 秒杀页面设置 后端返回秒杀…...
每天刷两道题——第十四天
1.1矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 输入:matrix [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 原地算法(…...
快速掌握Postman实现接口测试
快速掌握Postman实现接口测试 Postman简介 Postman是谷歌开发的一款网页调试和接口测试工具,能够发送任何类型的http请求,支持GET/PUT/POST/DELETE等方法。Postman非常简单易用,可以直接填写URL,header,body等就可以发…...
jmeter--3.使用提取器进行接口关联
目录 1. 正则表达式提取器 1.1 提取单个数据 1.2 名词解释 1.3 提取多个数据 2. 边界值提取器 2.2 名词解释 3. JSON提取器 3.1 Json语法 3.2 名词解释 3.3 如果有多组数据,同正则方式引用数据 1. 正则表达式提取器 示例数据:{"access_to…...
移动通信系统关键技术多址接入MIMO学习(8)
1.Multiple-antenna Techniques多天线技术MIMO,从SISO到SIMO到MISO到如今的MIMO; 2.SIMO单发多收,分为选择合并、增益合并;SIMO,基站通过两路路径将信号发送到终端,因为终端接收到的两路信号都是来自同一天…...
WorkPlus AI助理为企业提供智能客服的机器人解决方案
在数字化时代,企业面临着客户服务的重要挑战。AI客服机器人成为了提升客户体验和提高工作效率的关键工具。作为一款优秀的AI助理,WorkPlus AI助理以其智能化的特点和卓越的功能,为企业提供了全新的客服机器人解决方案。 为什么选择WorkPlus A…...
python类装饰器编写单体类
1 python类装饰器编写单体类 类装饰器用于装饰类,用于管理类自身,或用于管理实例创建调用。 单体类,不管创建多少次实例,都只有一个实例的类。可以通过类装饰器管理装饰类的全部实例,实现单体类。 1.1 字典存放单体…...
Java并发Condition 详解
1.引言 在Java并发编程中,线程间的协作是一个核心话题。为了实现线程间的协作,Java提供了多种机制,其中等待/通知机制是最常见的一种。在早期版本中,我们通过Object类提供的wait、notify和notifyAll方法来实现这种机制。然而&…...
如何使用CentOS系统中的Apache服务器提供静态HTTP服务
在CentOS系统中,Apache服务器是一个常用的Web服务器软件,它可以高效地提供静态HTTP服务。以下是在CentOS中使用Apache提供静态HTTP服务的步骤: 1. 安装Apache服务器 首先,您需要确保已安装Apache服务器。可以使用以下命令安装Ap…...
Python入门0基础学习笔记
1.编程之前 在编写代码之前,还有两件事需要做: 安装 Python 解释器:计算机是没法直接读懂 Python 代码的,需要一个解释器作为中间的翻译,把代码转换成字节码之后再执行。 Python 是翻译一行执行一行。一般说的安装 …...
python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(附代码)
前言 当你需要统计训练数据中每个类别标签有多少,并且想知道坐标中心分布在图像的位置信息时,你可以利用一下脚本进行计算! 步骤 要绘制热力图来分析VOC数据的分布统计,可以按照以下步骤进行: 数据处理࿱…...
【回顾2023,展望2024】砥砺前行
2023年总结 转眼间,迎来了新的一年2024年,回顾2023,对于我来说是一个充满平凡但又充实又幸运的一年。这一年经历了很多的事情,包括博客创作、技术学习、出书、买房等,基本上每件事情都是一个前所未有的挑战和机遇、使…...
Stable Diffusion初体验
体验了下 Stable Diffusion 2.0 的图片生成,效果还是挺惊艳的,没有细调prompt输入,直接输入了下面的内容: generate a Elimination Game image of burnning tree, Cyberpunk style 然后点击生成,经过了10多秒的等待就输…...
缓存解析:从架构设计到Redis应用及最佳实践
典型架构设计中缓存的存储位置 在现代软件架构中,缓存是优化数据检索、提高应用性能的关键组件。缓存的存储位置多种多样,每个位置针对特定的优化目标和需求。理解这些层级对于设计高效的系统至关重要。 浏览器缓存:这是最接近用户端的缓存层…...
【C#】使用 LINQ 中的 Skip() 和 Take()进行分页,为什么要分页,分页作用是什么
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…...
2024云服务器哪家好?阿里云、腾讯云、华为云
作为多年站长使市面上大多数的云厂商的云服务器都使用过,很多特价云服务器都是新用户专享的,本文有老用户特价云服务器,阿腾云atengyun.com有多个网站、小程序等,国内头部云厂商阿里云、腾讯云、华为云、UCloud、京东云都有用过&a…...
docker compose安装gitlab
环境 查看GitLab镜像 docker search gitlab 拉取GitLab镜像 docker pull gitlab/gitlab-ce 准备gitlab-docker.yml文件 version: 3.1 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwaysenvironment:GITLAB_OMNIBUS_CONFIG: |external_url…...
Nginx——基础配置
和大多数软件一样,Nginx也有自己的配置文件,但它又有很多与众不同的地方,本帖就来揭开Nginx基础配置的面纱。 1、Nginx指令和指令块 了解指令和指令块有助于大家了解配置的上下文,下面是一个配置模板示例: 在这个配…...
计算机基础(存储单位)
1. 计算机中的存储单位有哪些 1.1 常见的计算机存储单位 计算机存储单位一般用bit、B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB……来表示,如下所示: bit位、比特byte(B)字节、字Kill Byte(KB)千字…...
Leetcode 494 目标和
题意理解: 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添…...
Windows常用命令(文件相关、进程相关、网络相关、用户相关、特殊符号)
Windows常用命令 Windows常用命令 Windows常用命令0x01 基础操作0x02 文件操作0x03 进程操作0x04 网络相关0x05 用户相关0x06 特殊符号 0x01 基础操作 清屏:cls 关机:shutdown -s(关机)-r(重启) -f(强制)…...
摘:国六排放法规下的重型车车载终端的革新
系列文章目录 文章目录 系列文章目录一、国六排放法规下的重型车车载终端的革新二、使用步骤1.引入库2.读入数据 一、国六排放法规下的重型车车载终端的革新 添加链接描述 ascii码 二、使用步骤 1.引入库 代码如下(示例): import numpy a…...
门户网站上的广告怎么做/厦门seo百度快照优化
一、如何从xib自定义一个CustomView 1)首先创建继承自UIView的子类CustomView 2)创建名字为CustomView的View的Interface文件 3)在xib的资源文件中修改class为CustomView 4)编辑xib,拖拽控件 代码如下: pro…...
韩式摄影网站源码/营销网站建设专家
Vue入门6、插槽(自定义分发)router-view重定向嵌套路由 项目沿用Vue入门5的项目,/views/Four.vue 插槽(自定义分发) 我们先来想想一个场景 我们的 和 标签里的内容是从服务器里来的,不想写死 <temp…...
.net网站封装/石家庄做网站推广排名的公司
昨天完成了全部的增删改查以及登陆 今天准备对页面的进行一些美化,是界面变得好看一些。转载于:https://www.cnblogs.com/ydy1/p/8092861.html...
网站如何加速/口碑营销策略
批注[……] 表示他人、自己、网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写过程中无法记录所有的URL所以如需原文,请自行查询{……} 重点内容*……* 表示先前提到的内容,不赘述外增其余Web攻击详解…...
英语营销型网站建设/哪里有免费的网站推广服务
最近在研究Lanucher ,看了源码,发现了SlidingDrawer 这个类,也就是所谓的"抽屉"类。它的用法很简单,要包括handle ,和content .handle 就是当你点击它的时候,content 要么抽抽屉要么关抽屉。别的不多说了,具…...
香港可以做违法网站吗/广州百度竞价托管
https://www.jianshu.com/p/3d3950c9fb06 我们知道 当今的数据处理大致可分为两大类 联机事务处理 OLTP (on-line transaction processing) 联机分析处理 OLAP (On-Line Analytical Processing) OLTP 是传统关系型数据库的主要应用 用来执行一些基本的、日常的事务处理 比如…...