如何看网络架构图-1基础篇

news2024/11/16 7:47:08

这是一个比较常见的网络部署架构图,通过LVS+Keepalive网络层的高可用架构,在应用层通过nginx应用层细粒度的请求管控,然后根据负载均衡策略将请求转发到后端的tomcat服务。

首先看到这样的图,相信大部分人都能看懂,但是不知道为什么这么部署,这么画,依据到底是什么?大部分人就算有疑问其实都没有真正去理解?

下面我根据我个人最开始的思考,看一下如何去看懂这个图

要想了解这个图,需要了解哪些东西?

1:LVS  Keepalive ngixn大概了解是什么,这样协调使用的意义是啥,依据又是啥?

2:举例子说明,这样架构的流程?比如我在电商网上买手机,从购买到成功,在网络架构层面经历了什么(大概,不需要太细节)

3:这样的架构好处是什么

1:LVS服务

LVS(Linux Virtual Server)是一个用于构建高性能、高可用性和可伸缩性的Linux服务器集群的开源软件。它是一个负载均衡器,允许将网络流量分发到多个服务器上,从而提高整个系统的性能和可用性。

以下是一些 LVS 的关键特性和组成部分:

  1. 负载均衡器:LVS 提供负载均衡服务,将客户端请求分发到多个后端服务器上。这有助于避免单一服务器过载,提高系统的整体性能和可用性。

  2. 工作模式:LVS 支持不同的负载均衡工作模式,其中最常见的是 NAT 模式、直接路由(Direct Routing)模式和IP隧道(IP Tunneling)模式。

    • NAT 模式:LVS 负载均衡器在客户端和服务器之间充当转发器,修改数据包的源和目标地址。
    • 直接路由模式:客户端请求通过 LVS 负载均衡器,并直接路由到后端服务器,返回的响应也直接传递给客户端。
    • IP 隧道模式:类似于直接路由,但数据包通过 IP 隧道传递,LVS 负载均衡器和后端服务器在不同的子网中。
  3. 调度算法:LVS 使用不同的调度算法(scheduling algorithms)来确定如何分配请求。常见的调度算法包括轮询(Round Robin)、最小连接数(Least Connections)等。

  4. 高可用性:LVS 支持高可用性配置,其中多个 LVS 负载均衡器可以配置成热备份,确保系统在一个负载均衡器故障时仍然可用。

  5. 健康检查LVS 可以配置用于监测后端服务器状态的健康检查机制,以便自动将请求导向可用的服务器。

LVS 是一个强大的工具,常用于构建大规模的、高性能的网络服务。它可以用于 Web 服务器、邮件服务器、数据库服务器等多种应用场景。由于其开源特性,许多 Linux 发行版都提供了对 LVS 的支持。

总结:LVS其实就是一个网络协调器,可以将网络流量分发到多个服务器(比如linux服务器,或者容器但是本地其实都是同一个内核)

2:Keepalived

作用: Keepalived 是一个用于实现高可用性和故障转移的工具,通常与 LVS 配合使用。它确保在集群中的多个负载均衡器之间进行状态同步,以及在某个负载均衡器失效时,能够将流量切换到另一个正常工作的负载均衡器上。

原理: Keepalived 使用了 VRRP(Virtual Router Redundancy Protocol)协议,允许多个负载均衡器共享一个虚拟 IP 地址。这样,客户端访问虚拟 IP 地址,而 Keepalived 会确保这个虚拟 IP 地址总是映射到当前正常工作的负载均衡器上。

关系

  • 协同工作: Keepalived 通常与 LVS 配合使用,以确保高可用性和故障转移。通过 Keepalived,多个负载均衡器能够协同工作,保证即使一个负载均衡器出现故障,流量仍然能够被正确地引导到其他正常工作的负载均衡器上。

  • 状态同步: Keepalived 确保在整个集群中的负载均衡器之间保持状态同步,以便它们可以共享相同的配置信息,并在需要时进行流量切换。

简而言之,LVS 是一个负载均衡器,而 Keepalived 是用于实现高可用性和故障转移的工具,它们一起协同工作,以确保在服务器集群中保持平衡和可用性。而且他们一般用于网络层

3:nginx

Nginx("Engine X"的缩写)是一个高性能的开源反向代理服务器和 Web 服务器。它的主要作用包括:

  1. 反向代理服务器:

    • Nginx 可以作为反向代理服务器,接收客户端的请求,然后将这些请求转发到后端的应用服务器,最终返回响应给客户端。这有助于实现负载均衡、提高安全性,并简化应用服务器的管理。
  2. 负载均衡:

    • Nginx 提供负载均衡的功能,可以将客户端的请求分发到多个应用服务器,从而分担服务器负载,提高整体系统性能和可用性。
  3. Web 服务器:

    • Nginx 也可以作为静态文件的 Web 服务器,直接提供静态文件的访问,减轻动态应用服务器的负担。它能够高效地处理静态资源,如 HTML、CSS、JavaScript、图像等。
  4. SSL/TLS 终结:

    • Nginx 可以终结 SSL/TLS 连接,负责处理加密和解密,然后将非加密的流量转发给后端服务器。这有助于减轻应用服务器的负载,并提供更高的安全性。
  5. 反向代理缓存:

    • Nginx 可以缓存后端服务器的响应,从而提高对重复请求的处理速度。这有助于减轻后端服务器的负载,并提高响应速度。
  6. 反向代理缓解 DDOS 攻击:

    • Nginx 可以通过限制请求速率和使用缓存来缓解分布式拒绝服务(DDoS)攻击,提高系统的抗攻击能力。
  7. 作为 WebSocket 代理:

    • Nginx 可以作为 WebSocket 代理,支持 WebSocket 协议,用于实现实时通信应用。
  8. 日志记录:

    • Nginx 具有强大的日志记录功能,可以记录访问日志、错误日志等,有助于进行系统监控和故障排查。

总体而言,Nginx 是一个多功能、高性能的服务器软件,适用于多种场景,从简单的静态文件服务到复杂的负载均衡和反向代理配置。其设计的目标是提供高性能、低资源消耗的服务,因此被广泛用于构建高性能和可扩展的 Web 应用架构。

4:实际应用

在实际运用中,LVS 和 Keepalived 可以与 Nginx 或容器管理平台(如 Kubernetes)配合使用,以构建更完整的负载均衡和高可用性解决方案。

1. 与 Nginx 配合使用

  • 负载均衡器层次: LVS 可以工作在更底层的网络层,将请求分发到多个服务器。而 Nginx 则可以工作在应用层,提供更多高级的负载均衡和反向代理功能。
  • 组合优势: 将 LVS 和 Nginx 结合使用,可以充分利用 LVS 的性能和效率,同时利用 Nginx 提供的丰富功能,例如 SSL 终结、HTTP/HTTPS 代理、缓存等。

2. 与容器和 Kubernetes 配合使用

  • 容器化环境: 在容器化环境中,可以使用 LVS 和 Keepalived 来实现负载均衡和高可用性。这对于确保容器应用的可用性至关重要。
  • Kubernetes 中的 Service: Kubernetes 提供了 Service 这一抽象层,它可以自动管理负载均衡和服务的高可用性。在 Kubernetes 中,LVS 和 Keepalived 可以用于底层网络层,而 Kubernetes Service 则可以使用这些负载均衡器。

3. 示例场景

  • 传统场景: 在传统的架构中,你可以将 LVS 用作网络层的负载均衡器,将请求分发给多台服务器。同时,Nginx 可以运行在服务器上,提供更高级的应用层负载均衡和代理功能。
  • 容器场景: 在容器化环境中,可以使用 LVS 和 Keepalived 配合 Kubernetes,以确保容器服务的高可用性和负载均衡。

总之,具体的架构取决于你的应用需求和场景。LVS 和 Keepalived 是底层的负载均衡和高可用性工具,而 Nginx 和 Kubernetes 则提供更高级的应用层和容器环境的解决方案。在实际运用中,结合使用它们可以构建强大而灵活的系统

从上面我可以得出几点,

1:LVS+ keepalived配合使用,达到快速故障转移的作用,其实就是遇到问题能够及时发现,快速解决。

2:LVS+ keepalived配合使用在网络层

3: nginx作用在应用层,对请求更加细粒度和精确

在回到上面的图

4:总结和举一反三

其实我们已经了解了各个图的含义,现在其实缺少的就是怎么串联起来,

这个时候,举例说明,才能做到逻辑自洽。

以在电商平台购买手机为例

梳理一下:

  1. 客户端发起请求:

    • 你在浏览器中输入网站地址或点击购买手机的链接。
    • 浏览器向 LVS(Linux Virtual Server)发送购买手机的请求。
    • 信号经过路由器转为电信号,这个时候经过路由器就是物理层
  2. LVS 负载均衡:

    • LVS 接收到请求后,根据预定义的负载均衡算法和规则,选择一个可用的后端服务器(通常是 Nginx 服务器)。
    • LVS 将请求通过网络层的方式,修改数据包的目标 IP 地址,将其转发给被选中的 Nginx 服务器。
    • 这个时候其实就到了网络层
  3. Nginx 处理请求:

    • 被选中的 Nginx 服务器接收到请求。
    • Nginx 可以执行以下操作:
      • SSL 终结: 如果使用了 SSL,Nginx 可以终结 SSL 连接,解密请求。
      • 负载均衡: Nginx 可以根据配置的负载均衡算法将请求分发给多个后端的 Tomcat 服务器。
      • 反向代理: Nginx 可以作为反向代理,将请求发送给后端的 Tomcat 服务器。
      • 这个时候就是应用层
  4. Tomcat 处理请求:

    • 后端的 Tomcat 服务器接收到请求后,执行相应的操作,可能包括:
      • 处理购买手机的业务逻辑。
      • 与数据库交互,更新库存和订单信息。
      • 返回响应给 Nginx。
  5. Nginx 返回响应:

    • Nginx 收到来自 Tomcat 的响应后,将响应返回给客户端。
      • 可能会执行一些附加操作,例如缓存响应、压缩数据等。
  6. 客户端接收响应:

    • 你的浏览器接收到来自 Nginx 的响应,显示购买手机的相关信息。

如果你能仔细看完这个文档,我相信你对上面的网络架构图一定有个新的认知,学习在于积累和平民化,用大白话讲述技术才接地气。

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

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

相关文章

【Hydro】SG滤波器纯numpy实现

目录 说明WIKI示例滑动平均卷积系数的推导第一点和最后点的处理scipy.signal中的savgol_filter纯numpy实现的savgol_filterCPP实现的savgol_filter参考文献说明 Savitzky-Golay滤波器(S-G滤波器)是一种在时域和频域上同时进行的滤波方法,它通过局部多项式拟合来平滑信号。这…

python中,or、not的用法

or的用法 在python中,or运算符是一个逻辑运算符,用于在多个条件中选择至少一个为真(True)的情况。 如果条件中的任意一个为真,整个表达式的结果就为真 如: 示例1: 检查两个数字中至少有一个正数 示例2: x True y …

分发测试应用平台怎么用之应用详情功能

我的应用 应用功能引导 ●您会看到以下页面,下图为功能的解释方便您的运行 我的应用-详情-应用详情 ●我们点击应用详情数字③,点击应用详情,下图是对详情页的功能介绍。 详情-应用设置 ●详情-应用设置-下图为应用设置的上半部分 ●下图为应…

从零构建属于自己的GPT系列1:文本数据预处理、文本数据tokenizer、逐行代码解读

🚩🚩🚩Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1:文本数据预处理 从零构建属于自己的GPT系列2:语…

聚焦清晰度评价指标所用到的各种算法

首先,我想吐槽一下,看了好几篇聚焦评价函数的文章,说到底都是一篇文章转载或者重复上传,介绍了将近 15 种清晰度的算法,原文找了半天都没找到在哪,最多也仅能找到一些比较早的转载。 无参考图像的清晰度评…

众新万能空调遥控器代码

众新万能空调遥控器代码 特此记录 anlog 2023年11月30日

JPA代码生成器

【Java代码生成神器】自动化生成Java实体类、代码、增删改查功能!点击访问 推荐一个自己每天都在用的Java代码生成器!这个网站支持在线生成Java代码,包含完整的Controller\Service\Entity\Dao代码,完整的增删改查功能&#xff01…

Linux | Ubuntu设置 netstat(网络状态)

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。 1.netstat的安装 搜…

自己的邮箱名称出现在别人的此电脑的网络位置中

在公司别的同事告诉我,我的邮箱名字出现在他们的【此电脑】-【网络位置中】 如图: 当时吓我一跳,因为我总喜欢搞一些渗透的东西,我以为把自己暴漏了,然后疯狂的在网上找原因。 于是就搜到一位安暖的博主: …

VSCode搭建STM32开发环境

1、下载安装文件 链接:https://pan.baidu.com/s/1WnpDTgYBobiZaXh80pn5FQ 2、安装VSCodeUserSetup-x64-1.78.2.exe软件 3、 在VSCode中安装必要的插件 3、配置Keil Assistant插件 4、在环境变量中部署mingw64编译环境

电商API接口对于实现电商系统平台的搭建有哪些作用?

电商API接口用于实现电商平台的数据交互和功能调用。具体来说,电商API接口可以用于以下几个方面: 1. 商品管理:通过API接口,可以实现商品的添加、修改、删除、查询等操作。商家可以通过API接口将自己的商品信息上传到电商平台&…

C++基础 -22- 菱形继承

理想的菱形继承如图所示 #include "iostream"using namespace std;class top {public:void baseshow(){cout << "baseshow" << endl;} };class left:public::top {public:void leftshow(){cout << "leftshow" << end…

图论|并查集理论基础 1971. 寻找图中是否存在路径

什么是并查集 并查集是一种数据结构&#xff0c;用于处理一些不交集的合并及查询问题。它支持两种操作&#xff1a; 查找&#xff08;Find&#xff09;&#xff1a;确定某个元素属于哪个子集。它可以用来判断两个元素是否属于同一个子集。 合并&#xff08;Union&#xff09;&…

YOLOv8独家原创改进:自研独家创新FT_Conv,卷积高效结合分数阶变换

💡💡💡本文自研创新改进:卷积如何有效地和频域结合,引入分数阶傅里叶变换(FrFT)和分数阶Gabor变换(FrGT),最终创新到YOLOv8。 使用方法:1)直接替换原来的C2f;2)放在backbone SPPF后使用;等 推荐指数:五星 在道路缺陷检测任务中,原始map为0.8,FT_Conv为0.82 收…

力扣题:字符的统计-11.25

力扣题-11.25 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;387. 字符串中的第一个唯一字符 解题思想&#xff1a;直接遍历即可 class Solution(object):def firstUniqChar(self, s):""":type s: str:rtype: int""&qu…

【Openstack Train安装】五、Memcached/Etcd安装

本文介绍Memcached/Etcd安装步骤&#xff0c;Memcached/Etcd仅需在控制节点安装。 在按照本教程安装之前&#xff0c;请确保完成以下配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装…

插槽slot使用

场景&#xff1a;el-button是绝对定位&#xff0c;希望它能根据query组件&#xff08;公共组件&#xff09;定位&#xff0c;query组件是相对定位。 <query :queryArr"queryParams" class"query"><div class"btn"><el-button cla…

从源代码出发,Jenkins 任务排队时间过长问题的解决过程

最近开发了一个部署相关的工具&#xff0c;使用 Jenkins 来构建应用。Jenkins 的任务从模板中创建而来。每次部署时&#xff0c;通过 Jenkins API 来触发构建任务。在线上运行时发现&#xff0c;通过 API 触发的 Jenkins 任务总是会时不时在队列中等待较长的时间。某些情况下的…

python中的enumerate函数

enumerate函数是Python内置builtins模块中的一个函数&#xff0c;用于将一个可迭代对象转换为一个索引-元素对的枚举对象&#xff0c;从而方便地同时获得索引和元素&#xff0c;并在循环迭代中使用。 enumerate函数的语法格式为&#xff1a;enumerate(iterable, start0) itera…

魔珐科技:3D虚拟人AIGC原生产品,助力全新商业机遇

11月28日-29日&#xff0c;WISE2023 商业之王大会在北京国际会议中心成功举办。此次大会以“太阳照常升起&#xff08;The Sun Always Rises&#xff09;”为主题&#xff0c;活动汇聚了全商业领域知名企业&#xff0c;围绕前沿趋势&#xff0c;共话商业创新之策。 在本次论坛…