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

本文详细解析了LVS、Keepalived和Nginx在网络部署中的协作,阐述了它们各自的作用、工作原理及在电商购买场景中的应用过程,强调了高可用性和负载均衡的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个比较常见的网络部署架构图,通过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 的响应,显示购买手机的相关信息。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

托尼吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值