Lvs+Nginx+NDS

什么是?为什么?需要负载均衡

一个网站在创建初期,一般来说都是只有一台服务器对用户提供服务

从图里可以看出,用户经过互联网直接连接了后端服务器,如果这台服务器什么时候突然 GG 了,用户将无法访问这个网站(单点故障)。

那么要怎么办呢?加机器!扩容!不差钱!

这样我们就有了很多台机器了,足够应付用户的请求了。

在这里,我们把用户的访问流量称为负载,而根据转发策略(rules)将负载(访问流量)分配给后端机器的服务便是负载均衡

讲讲亿级PV的负载均衡架构

DNS

DNS负载均衡是一种通过DNS(Domain Name System)解析来实现负载均衡的方法。它通过将域名解析请求分发到多个服务器上,从而实现服务器资源的均衡利用和提高系统的可用性、性能和可扩展性。

在DNS负载均衡中,一个域名可以对应多个IP地址,每个IP地址对应一个服务器。当客户端发送一个域名解析请求时,DNS服务器会返回一个IP地址给客户端,使得客户端直接连接到相应的服务器。

开始呢,我们的应用只有一台web-server。那么你希望: 输入http://guduyan.com就能定位到该server

那很简单,只要在DNS里配上域名和你的server映射关系,就能访问到啦! 流程如下图所示:

好,现在呢,多了一台web-server,你就可以通过在DNS里加一条配置,以DNS轮询方式进行负载均衡。如下图所示:

DNS负载均衡可以使用以下几种策略:

  1. 轮询(Round Robin):DNS服务器按照事先定义的顺序逐个返回服务器的IP地址,以实现请求的均衡分发。每个请求依次分配到不同的服务器上,循环往复。
  2. 加权轮询(Weighted Round Robin):为了更精确地控制流量分配,可以为每个服务器分配一个权重值。DNS服务器根据权重值的比例来决定返回哪个服务器的IP地址,以实现更灵活的负载均衡。
  3. 最少连接数(Least Connection):DNS服务器根据服务器当前的连接数信息,选择连接数最少的服务器,并返回其IP地址。这样可以将请求发送到负载较轻的服务器,以实现负载均衡。
  4. 基于地理位置(Geolocation):根据客户端的地理位置信息,DNS服务器返回最接近客户端的服务器IP地址。这样可以减少网络延迟,提高用户体验。

Nginx

Nginx是四层均衡

Nginx是一个开源的高性能、轻量级的Web服务器和反向代理服务器,它也提供了负载均衡的功能。Nginx负载均衡通过将客户端请求分发到多个后端服务器上,实现服务器资源的均衡利用和提高系统的可用性、性能和可扩展性。

Nginx负载均衡的主要特点包括:

  1. 反向代理:Nginx作为反向代理服务器,接收客户端的请求,并将请求转发给后端的真实服务器。客户端只需要与Nginx进行通信,而无需直接连接到后端服务器,从而提高了系统的安全性。
  2. 支持多种负载均衡算法:Nginx提供了多种负载均衡算法,包括轮询(round-robin)、IP哈希(ip-hash)、最少连接数(least_conn)等。这些算法可以根据实际需求选择合适的方式来分发请求。
  3. 健康检查:Nginx可以定期对后端服务器进行健康检查,以确保只有正常工作的服务器参与请求的处理。当某个服务器发生故障或不可用时,Nginx会自动将请求转发给其他可用的服务器,实现故障转移和高可用性。
  4. 动态配置:Nginx支持动态地添加、删除和修改后端服务器的配置,无需重新启动服务。这使得系统的扩展和维护更加方便和灵活。
  5. SSL终端:Nginx可以作为SSL终端,负责处理SSL/TLS协议的加密和解密,从而减轻后端服务器的负担,提高系统的性能和安全性。

DNS+Nginx

现在假设,我们多了一些需求啊。你的系统按照功能模块拆成两个系统:用户系统和订单系统。那么你希望 输入http://guduyan.com/user/的时候定位到用户系统。输入http://guduyan.com/order/的时候定位到订单系统。

那这时候,光靠DNS就不行了,就需要采用DNS+nginx进行负载均衡!如下图所示:

ps:nginx还可以做动静分离哦,大家应该懂的!

那如果系统的访问压力进一步加大,万一nginx挂了怎么办?如何给nginx引入热备? 这里就要用keepalived了,用两台nginx组成一个集群,分别部署上keepalived,设置成相同的虚IP,这样一个节点在崩溃的情况下,另一个节点能够自动接替其工作,如下图所示:

什么是keepalived

LVS

Lvs是七层负载

LVS(Linux Virtual Server)是一个基于Linux内核的开源负载均衡软件,它提供了高性能、可扩展和可靠的负载均衡解决方案。LVS通过将客户端请求分发到多个后端服务器上,实现服务器资源的均衡利用和提高系统的可用性、性能和可扩展性。

LVS的主要特点包括:

  1. 高性能:LVS利用Linux内核的IP负载均衡技术,通过网络层的数据包转发来实现负载均衡,具有较低的延迟和高吞吐量。
  2. 可扩展性:LVS支持水平扩展,可以通过增加后端服务器来提高系统的容量和性能。同时,LVS还支持多种负载均衡调度算法,如轮询(Round Robin)、加权轮询(Weighted Round Robin)、最少连接数(Least Connection)等,以满足不同场景的需求。
  3. 高可用性:LVS支持故障检测和故障转移机制,当后端服务器发生故障或不可用时,LVS会自动将请求转发给其他可用的服务器,从而实现故障转移和高可用性。
  4. 灵活的配置和管理:LVS提供了灵活的配置和管理接口,可以通过命令行工具或配置文件进行配置。同时,LVS还支持动态添加、删除和修改后端服务器的配置,无需重启服务。

Lvs+Nginx+DNS

接下来随着系统规模的继续增大,你会慢慢的发现nginx也扛不住了!nginx工作在网络的第7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等。 而Lvs工作在网络4层,抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低,且稳定,可靠性高。它利用linux的内核进行转发,不产生流量。它能撑的并发量取决于机器的内存大小,一般来说撑个几十万并发问题不大!

ps:好好思考为什么会出现nginx+Lvs被同时使用,注意看我演变的过程,面试必问!注意了,如果是比较小的网站(日pv<1000万),用nginx就完全可以了,如果机器也不少,可以用dns轮询,Lvs所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候要多多考虑利用Lvs。

那么,在这种情况下的架构图如下所示:

可能有个疑问,为什么nginx层不用keepalived做热备?

主要原因是: 在这种架构下,nginx不是单台,如果nginx挂了,Lvs会帮你转发到其他可用的nginx上!

最后,为了应对亿级的PV,一般会在DNS端配多个Lvs集群的地址。如下所示:

方案扩展到了这一步,Lvs层就没有必要再进行扩展新的节点了。这套架构已经能扛得住亿级的PV。当然,前提是你的应用没问题!

四层和七层负载的区别

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

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

相关文章

Python构造代理IP池提高访问量

目录 前言 一、代理IP是什么 二、代理IP池是什么 三、如何构建代理 IP 池 1. 从网上获取代理 IP 地址 2. 对 IP 地址进行筛选 3. 使用筛选出来的 IP 地址进行数据的爬取 四、总结 前言 爬虫程序是批量获取互联网上的信息的重要工具&#xff0c;在访问目标网站时需要频…

QT实现用本地资源管理器来打开文件夹

QString path"文件夹路径";QDesktopServices::openUrl(QUrl("file:"path, QUrl::TolerantMode)); 在windows中QT编程&#xff0c;使用资源管理器来打开指定本地文件夹的方法&#xff1a; 第一种&#xff1a;使用Qprocess命令&#xff08;相当于在cmd命令管…

【面试经典150 | 链表】反转链表 II

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;迭代 其他语言python3 写在最后 Tag 【头插法】【迭代】【链表】 题目来源 92. 反转链表 II 题目解读 返回部分链表。 解题思路 方法一&#xff1a;迭代 我们首先需要找到开始反转链表的前一个节点&#xff0c;为此…

React 你还在用 Redux 吗?更简化的状态管理工具(Recoil)

以往传统的 Redux 状态管理工具使用起来代码太过于复杂。 你需要通过纯函数触发 action 再去修改 data 中定义的数据&#xff0c;而且要通过接口请求数据还需要借助 redux - think 这个中间件才能完成。。。 更加方便使用的工具&#xff1a;Recoil ~ 由 facebook 推出契合 R…

【机器学习可解释性】5.SHAP值的高级使用

机器学习可解释性 1.模型洞察的价值2.特征重要性排列3.部分依赖图4.SHAP 值5.SHAP值的高级使用 正文 汇总SHAP值以获得更详细的模型解释 总体回顾 我们从学习排列重要性和部分依赖图开始&#xff0c;以显示学习后的模型的内容。 然后我们学习了SHAP值来分解单个预测的组成部…

CSS3背景样式

在CSS 2.1中&#xff0c;background属性的功能还无法满足设计的需求&#xff0c;为了方便设计师更灵活地设计需要的网页效果&#xff0c;CSS3在原有background基础上新增了一些功能属性&#xff0c;可以在同一个对象内叠加多个背景图像&#xff0c;可以改变背景图像的大小尺寸&…

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]

文本编辑器概要 在Ubuntu系统下&#xff0c;有许多文本编辑器可供选择&#xff0c;每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器&#xff1a; Gedit&#xff1a; 这是Ubuntu默认的文本编辑器&#xff0c;它简单易用&#xff0c;适合基本的文本编辑任务。 安…

前端基础---跳转相关的功能

后端给链接地址并且给token进行跳转 如果点击有key4&#xff0c;说明要跳转到相应的页面 auth是通过后端获取的地址&#xff0c; jdk是后端获取的相应的token&#xff0c; 然后进行拼接&#xff0c;进行window.open&#xff08;&#xff09;进行跳转 if (key 4) {var testUrl …

基于RFID技术的优化医药供应链管理解决方案

一、社会背景和挑战 随着全球假药问题的严重性日益凸显&#xff0c;医疗产品的追溯和管理变得越来越重要。据世界卫生组织报告&#xff0c;全球假药比例已超过10%&#xff0c;而中国每年至少有20万人死于假药和不当用药。在国际上&#xff0c;医疗产品的追溯体系已成为监管机构…

MLF - 麻辣粉

MLF全称中期借贷便利&#xff08;Medium-term lending Facility&#xff09;,理解为央行向商业银行、政策银行发放的贷款&#xff0c;但需要符合一定要求才可向央行申请。银行通过MLF向央行借款的时候&#xff0c;需要提供担保品。一般为国债、央行票据、政策性金融债、地方债、…

数据库的用户管理

一、创建用户&#xff1a;create user 二、赋予用户权限&#xff1a;grant&#xff08;终端执行&#xff09; 三、删除用户权限&#xff1a;revoke&#xff08;在终端操作&#xff09; 四、用户的重命名&#xff1a;rename 五、删除用户&#xff1a;drop 六、修改用户密码 1、…

linux目录与文件管理

目录与路径 关于执行文件路径的变量&#xff1a;$PATH ls完整文件名为&#xff1a;/bin/ls 在任何文件夹下输入ls命令可以显示出一些信息而不是找不到命令&#xff0c;这就是因为环境变量PATH所致。在执行命令时&#xff0c;系统会依照PATH的设置去每个PATH定义的目录下查找文…

前端环境的安装 Node npm yarn

一 node npm 1.下载NodeJS安装包 下载地址&#xff1a;Download | Node.js 2.开始安装 打开安装包后&#xff0c;一直Next即可。当然&#xff0c;建议还是修改一下安装位置&#xff0c;NodeJS默认安装位置为 C:\Program Files 3.验证是否安装成功 打开DOS命令界面&#…

MINIO 对象存储服务

MINIO 官网下载地址&#xff1a; 注&#xff1a;需要下载 MINIO SERVER&#xff08;服务端&#xff09; 和 MINIO CLIENT&#xff08;客户端&#xff09;两个文件 WINDOWS版本下载地址&#xff1a;https://min.io/download#/windows LINUX版本下载地址&#xff1a;https://mi…

Python web自动化测试 —— 文件上传

​文件上传三种方式&#xff1a; &#xff08;一&#xff09;查看元素标签&#xff0c;如果是input&#xff0c;则可以参照文本框输入的形式进行文件上传 方法&#xff1a;和用户输入是一样的&#xff0c;使用send_keys 步骤&#xff1a;1、找到定位元素&#xff0c;2&#…

【大数据基础平台】星环TDH社区开发版单机部署

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#…

Vue之CSS基础

CSS&#xff1a;层叠样式表 1、选择器 从模板template中选择某元素进行样式设置 需要注意的是作用域到底是当前模板还是整个html文档 1.1 基础(单一)选择器 标签、类、 id、通配符 标签、直接使用标签名&#xff0c;比如div,span… 优点&#xff1a;全选 模板中的名{。。。}…

反射率检测仪如何检测后视镜

后视镜反射率检测是评估后视镜质量的重要步骤&#xff0c;可以反映后视镜的反射效果是否满足设计要求。一般来说&#xff0c;后视镜的反射率越高&#xff0c;驾驶员观察车后的道路状况就越清晰&#xff0c;从而能够更好地判断与后方车辆的距离和速度差。 后视镜反射率检测的原理…

你被骗了吗?别拿低价诱骗机器视觉小白,4000元机器视觉系统怎么来的?机器视觉工程师自己组装一个2000元不到,还带深度学习

淘宝闲鱼&#xff0c;大家搜搜铺价格&#xff0c;特别是机器视觉小白。 机架&#xff1a;&#xff08;新的&#xff09;200元以下。(看需求&#xff0c;自己简单打光&#xff0c;买个50元的。如果复杂&#xff0c;就拿给供应商免费打光) 相机&#xff0c;镜头&#xff1a;&am…

Spring MVC的常用注解(设置响应篇)

目录 1.返回静态页面 2.返回数据 3.返回HTML代码片段 4.返回json 5.设置状态码 6.设置Header &#xff08;1&#xff09;.设置 Content-Type &#xff08;2&#xff09;.设置其他Header 推荐先看前篇博客Spring MVC的常用注解&#xff08;接收请求数据篇&#xff09; 接收…