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.rhkb.cn/news/172095.html

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

相关文章

网络(番外篇)can网络知识

通常ECU发出的网络管理报文ID Base Address Node ID Mifa项目向外发的网络管理报文0x418&#xff0c;就是DBC根据基地址加上节点ID定义的。 报文属性是 NmAsrMessage即应答网络报文。 DBC里关于整个网络管理的参数定义&#xff0c;确定好后导入达芬奇&#xff0c;就是直接…

AT32固件库外设使用,ArduinoAPI接口移植,模块化

目录 一、ArduinoAPI移植一、通用定时器使用1.计时1.2.ETR外部时钟计数4.ArduinoAPI - timer 三、ADC1.ADC初始化&#xff08;非DMA&#xff09;2.ADC_DMA 规则通道扫描 六、USB HID IAP1.准备好Bootloader和app2.配置好时钟&#xff0c;一定要打开USB3.将生成的时钟配置复制到…

Flink on yarn 加载失败plugins失效问题解决

Flink on yarn 加载失败plugins失效问题解决 flink版本&#xff1a;1.13.6 1. 问题 flink 任务运行在yarn集群,plugins加载失效,导致通过扩展资源获取任务参数失效 2. 问题定位 yarn容器的jar包及插件信息,jar包是正常上传 源码定位 加载plugins入口&#xff0c;TaskMana…

薛定谔的猫重出江湖?法国初创公司AliceBob研发猫态量子比特

总部位于巴黎的初创公司Alice&Bob使用超导芯片的两个相反的量子态&#xff08;他们称之为“猫态量子比特”芯片&#xff09;来帮助开发量子计算的不同自旋方式。&#xff08;图片来源&#xff1a;网络&#xff09; 有的人认为&#xff0c;构建量子计算机的模块模仿了著名的…

kubeadmin部署k8s1.27.4

kubeadmin部署k8s1.27.4 环境介绍 IP主机名资源配置系统版本192.168.117.170k8s-master2c2g200gCentos7.9192.168.117.171k8s-node12c2g200gCentos7.9192.168.117.172k8s-node22c2g200gCentos7.9 编辑本地解析且修改主机名 三台主机都要做 vim /etc/hosts配置主机名 mast…

现代挖掘机vr在线互动展示厅是实现业务增长的加速度

VR数字博物馆全景展示充分应用5G、VR全景、web3d开发和三维动画等技术&#xff0c;将实体博物馆整体还原到3D数字空间&#xff0c;让游客360全景漫游式参观&#xff0c;无论大小、贵重、破损的典藏展品都能通过3D建模技术&#xff0c;逼真重现到三维虚拟场景中&#xff0c;让参…

MQTT协议和边缘计算

1.基本概念 MQTT是基于TCP/IP协议栈构建的异步通信消息协议&#xff0c;是一种轻量级的发布、订阅信息传输协议。可以在不可靠的网络环境中进行扩展&#xff0c;适用于设备硬件存储空间或网络带宽有限的场景。使用MQTT协议&#xff0c;消息发送者与接收者不受时间和空间的限制…

电商时代,VR全景如何解决实体店难做没流量?

近日&#xff0c;电商和实体经济的对立成为了热门话题&#xff0c;尽管电商的兴起确实对线下实体店造成了一定的冲击&#xff0c;但实体店也不是没有办法挽救。VR全景助力线下实体店打造线上店铺&#xff0c;打通流量全域布局&#xff0c;还能实现打开产品、查看产品内部细节等…

自己动手搭建一个传奇是什么体验?下面是我搭建的详细教程,大家跟着教程做,不光是学会了技术,平时还可以帮朋友搭建

传奇游戏是一代人的回忆&#xff0c;它曾经风靡一时&#xff0c;让无数玩家沉迷其中。这款游戏以其独特的玩法、丰富的故事背景和深刻的角色刻画&#xff0c;吸引了一大批忠实粉丝。 在传奇游戏中&#xff0c;玩家可以体验到各种不同的职业和角色&#xff0c;每个角色都有自己…

Unity之ShaderGraph如何实现水波纹效果

前言 今天我们来实现一个水波纹的效果 如下图所示: 主要节点 Normalize :返回输入 In 的标准化值。输出矢量与输入 In 具有相同的方向,但长度为 1。 Length:返回输入 In 的长度。这也称为大小 (magnitude)。矢量的长度是使用毕达哥拉斯定理 (Pythagorean Theorum) 计算…

C# 基于腾讯云人脸核身和百度云证件识别技术相结合的 API 实现

目录 腾讯云人脸核身技术 Craneoffice.net 采用的识别方式 1、活体人脸核身(权威库)&#xff1a; 2、活体人脸比对&#xff1a; 3、照片人脸核身(权威库)&#xff1a; 调用成本 百度云身份证识别 调用成本 相关结合点 核心代码 实现调用人脸核身API的示例 实现调用身…

系统架构设计师之使用McCabe方法可以计算程序流程图的环形复杂度

系统架构设计师之使用McCabe方法可以计算程序流程图的环形复杂度

【C++】多态 ③ ( “ 多态 “ 实现需要满足的三个条件 | “ 多态 “ 的应用场景 | “ 多态 “ 的思想 | “ 多态 “ 代码示例 )

文章目录 一、" 多态 " 实现条件1、" 多态 " 实现需要满足的三个条件2、" 多态 " 的应用场景3、" 多态 " 的思想 二、" 多态 " 代码示例 一、" 多态 " 实现条件 1、" 多态 " 实现需要满足的三个条件 &q…

【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记

0. 内容 1. 时间戳同步问题及意义 时间戳同步的原因&#xff1a;如果不同步&#xff0c;由于IMU频率高&#xff0c;可能由于时间戳不同步而导致在两帧camera之间的时间内用多了或者用少了IMU的数据&#xff0c;且时间不同步会导致我们首尾camera和IMU数据时间不同&#xff0c;…

java基础 特殊文件

1.Properties属性文件&#xff1a; 1.1使用Properties读取属性文件里的键值对数据&#xff1a; package specialFile;import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Enumeration; import java.util.Propert…

读高性能MySQL(第4版)笔记21_读后总结与感想兼导读

1. 基本信息 高性能MySQL&#xff1a;经过大规模运维验证的策略&#xff08;第4版&#xff09; High Performance MySQL, Fourth Edition [美] Silvia Botros(西尔维亚博特罗斯)&#xff1b;Jeremy Tinley(杰里米廷利) 电子工业出版社,2022年10月出版 1.1. 读薄率 书籍总字…

【机器学习合集】优化目标与评估指标合集 ->(个人学习记录笔记)

文章目录 优化目标与评估指标1. 优化目标1.1 两类基础任务与常见优化目标1.2 分类任务损失0-1损失交叉熵损失与KL散度softmax损失的理解与改进Hinge损失 1.3 回归任务损失L1/L2距离L1/L2距离的改进 Huber loss 2. 评测指标2.1 分类任务中评测指标准确率(查准率)/召回率(查全率)…

修改svc的LoadBalancer的IP引发的惨案

文章目录 背景修改externalIPs的操作api-server报错日志挽救教训 背景 k8s集群没有接外部负载均衡&#xff0c;部署istio的时候ingressgateway一直pending。 于是手动修改了这个lb svc的externalIP&#xff0c;于是k8s就崩了&#xff0c;如何崩的&#xff0c;且听我还道来。 …

CRM客户管理系统源码 带移动端APP+H5+小程序

CRM客户管理系统源码 带移动端APPH5小程序 开发环境: thinkphp mysql 功能介绍&#xff1a; 1、 办公管理&#xff1a;审批管理、工作报告、日程管理、办公审批、公告管理 2、 客户管理&#xff1a;我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客…

【Unity数据交互】JSON开山篇

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…