热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Haproxy超详细总结四层负载均衡VS七层负载均衡LVSVSHaproxyVSNginx

 四层和七层负载均衡的区别所谓的四层就是ISO参考模型中的第四层。四层负载均衡也称为四层交换机,它主要是通过分析IP层及TCPUDP层的流量实现的基于IP加端口的负载均衡。常见的基

《Haproxy 超详细总结 四层负载均衡VS七层负载均衡 LVS VS Haproxy VS Nginx》

 

四层和七层负载均衡的区别

所谓的四层就是ISO参考模型中的第四层。四层负载均衡也称为四层交换机,它主要是通过分析 IP层及TCP/UDP层的流量实现的基于IP加端口的负载均衡。常见的基于四层的负载均衡器有 LVS、F5等。

以常见的TCP应用为例,负载均衡器在接收到第一个来自客户端的SYN 请求时,会通过设定的负载均衡算法选择一个最佳的后端服务器,同时将报文中目标 IP地址修改为后端服务器IP,然后直接转发给该后端服务器,这样一个负载均衡请求就完成了。

从这个过程来看,一个TCP连接是客户端和服务器直接建立的,而负载均衡器只不过完成了一个类似路由的转发动作。在某些负载均衡策略中,为保证后端服务器返回的报文可以正确传递给负载均衡器,在转发报文的同时可能还会对报文原来的源地址进行修改。整个过程下图所示。

《Haproxy 超详细总结 四层负载均衡VS七层负载均衡 LVS VS Haproxy VS Nginx》

 

                                                                               图 四层负载均衡转发原理

同理,七层负载均衡器也称为七层交换机,位于OSI的最高层(即应用层)此时负载均衡器支持多种应用协议,常见的有HTTP、FTP、SMIP等。七层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器,因此也称为”内容交换器”。比如,对于Web服务器的负载均衡,七层负载均衡器不但可以根据”IP+端口”的方式进行负载分流。还可以根据网站的 URL、访问域名、浏览器类别、语言等决定负载均衡的策略。例如,有两台

Web服务器分别对应中英文两个网站,两个域名分别是A、B,要实现访问A域名时进入中文网站,访问B域名时进入英文网站,这在四层负载均衡器中几乎是无法实现的,而七层负载均衡可以根据客户端访问域名的不同选择对应的网页进行负载均衡处理。常见的七层负载均衡器有HAproxy、Nginx等。

这里仍以常见的TCP应用为例,由于负载均衡器要获取到报文的内容,因此只能先代替后端服务器和客户端建立连接,接着才能收到客户端发送过来的报文内容,然后再根据该报文中特定字段加上负载均衡器中设置的负载均衡算法来决定最终选择的内部服务器。纵观整个过程,七层负载均衡器在这种情况下类似于一个代理服务器。整个过程如下图所示。

《Haproxy 超详细总结 四层负载均衡VS七层负载均衡 LVS VS Haproxy VS Nginx》

                                                                           图 七层负载均衡代理实现原理

对比四层负载均衡和七层负载均衡运行的整个过程,可以看出,在七层负载均衡模式下, 负载均衡器与客户端及后端的服务器会分别建立一次 TCP连接,而在四层负载均衡模式下,仅建立一次TCP连接。由此可知,七层负载均衡对负载均衡设备的要求更高,而七层负载均衡的处理能力也必然低于四层模式的负载均衡。

 

 

LVS

LVS过来一个TCP连接之后呢,TCP连接会转发到负载均衡器上面来,负载均衡器不会做类似于代理这样一个处理。仅仅会对报文的信息做修改,为什么要修改报文信息因为是工作在四层,对网络的报文头也就是传输这块做出修改。比如修改报文目标的传输地址。或者修改源地址信息等等。这些刚好是在网络层实现的机制。

报文转发的机制是基于四层,基于网络层的原理结构实现。

将发过来的报文头的信息做了修改之后呢再把信息转发到后端的一个真实的real server节点上,其实就是转发连接的方式方式将请求发到了后端真实服务器上面去,四层负载更多的是转发连接。

负载均衡器先去接收,接收到之后将信息的报文做一定的修改,修改完之后这个报文的信息再次转发到目标服务器之上。LVS DR模式完全就是通过修改报文头的机制来实现的。

通俗一点说就是负载均衡器接收客户端的请求,因为负载均衡器是直接面对客户端的,比如客户端发来一个SVN请求之后,负载均衡器会根据负载均衡算法去指定后端的服务,就是将请求发送到后端哪台real server节点上,在进行负载均衡策略之后同时会将客户端发送过来的请求的IP地址修改为后端服务器的IP地址,因为要将请求转发给后端的IP。所以会将目标IP地址修改为后端服务器的IP地址,注意是转发,通过修改报文头信息。这样一个请求就完成了。这样看来一个TCP连接是客户端和服务端直接建立的,也就是客户端和realserver直接建立的,作为四层负载均衡仅仅只是做了一个转发,转发的概念可以理解为一个桥接。负载均衡只不过起到的作用是类似于路由器转发的动作

四层负载均衡典型特征就是转发请求,然后由客户端服务端和后端的real server直接建立连接

 

 

Haproxy

《Haproxy 超详细总结 四层负载均衡VS七层负载均衡 LVS VS Haproxy VS Nginx》

 七层负载均衡也称作为7层的交换机,也就是应用层。因为是在应用层,所以支持很多的功能,比如http,ftp包括SMTP等等都是工作在七层。那么七层负载均衡支持的功能也就是非常多的,协议也非常多

七层负载均衡的实现:首先客户端会发送一个请求到七层的负载均衡器上面。那么客户端会以七层的负载均衡器建立起独立的一条连接,连接建立起来之后呢将请求发送到负载均衡器上面,接收到该请求之后会对报文做一定的处理,处理完成之后再由七层负载均衡器在和real server再建立起另外一条独立的连接,然后将请求发送给后端的real server服务器上。这就完成客户端和后端real serevr通信的完整过程

整个处理过程是建立了两条独立的tcp连接,客户端和负载均衡器建立了一条TCP连接,然后负载均衡器和后端的real server又建立了一条TCP连接。七层负载均衡实现的就是代理的功能,和nginx的反向代理一样。

HAProxy是借助于操作系统的技术特性来实现性能最大化的,因此,在使用HAProxy时,对操作系统进行性能调优是非常重要的。在业业务系统方面,HAProxy非常适用于那些并发量特别大且需要持久连接或四层和七层处理机制的Web系统,例如门户网站或电商网站等。另外。HAProxy也可用于MySQL数据库(读操作)的负载均衡。

 

四层负载均衡和七层负载均衡实现的不同

首先在七层负载均衡模式下,客户端和负载均衡器,负载均衡器和后端的real server分别建立TCP连接,即建立两条TCP连接。

四层,客户端和Real Server仅仅只建立了一条连接,负载均衡器仅仅只起着转发这样的一个功能,只不过在转发的过程当中将IP报文头做个修改。但是连接始终还是一条连接。这就是四层和七层负载均衡最大的不同地方

可以看到七层负载均衡器对负载均衡要求更加高,因为一个正常连接都会建立两条独立的TCP连接。由于建立了两条TCP连接,那么在一个大并发的负载均衡模式下面很显然七层的这种负载均衡处理能力肯定是低于四层的。

七层返回数据模式:Real Server将请求处理完毕之后纯粹的将请求发回给负载均衡处理,负载均衡处理器再将请求转发给客户端,正常的TCP连接基于七层的,进要经过负载均衡器出也要经过负载均衡器,就是进出都要经过负载均衡器,那么对于负载均衡器要求一定是很高的,一旦负载均衡器出现问题,那么整个负载均衡系统可能马上就出现了问题。

四层返回数据模式:请求客户端到达服务端之后,服务端响应返回数据有两种方式。一种是直接将数据返回给客户端,而不经过中间的四层负载均衡器,这是经常使用的DR方式。另外一种方式是当客户端将请求发到服务端之后,在响应请求和返回数据的话,会将数据返回给四层负载均衡器,然后由四层负载均衡器转发给客户端,这是NAT模式。Real Server直接返回数据给客户端由隧道模式和DR模式,如果将数据返回给四层负载均衡器就是NAT模式,这些你就能够判断哪些性能会高哪些性能会差。很明显DR模式和隧道模式对于整个集群的性能是有一个很大的提高的。因为不会再去占用负载均衡器的性能和资源了

 

七层没有直接返回给客户端的机制,任何的请求不管是什么调度模式还是什么负载均衡算法,都会将请求再次返回给负载均衡器

对七层负载均衡器更加高的要求,那么一定要对负载均衡器做高可用,避免出现问题,因为负载量大,出问题几率高,另外硬件配置各个方面都要很高。

上面就是区别和优缺点 ,四层负载均衡器代表就是LVS 七层Haproxy Nginx(除了反向代理还能负载均衡)

 

Haproxy VS Nginx

Nginx和Haproxy相比较:Haproxy是一个更加专业的负载均衡器,不像Nginx,Nginx开始时作为HTTP服务器的,更多的功能是在HTTP Server上面。但时haproxy不一样。Haproxy的初衷就是做一款专业的负载均衡器,在实现负载均衡上面会有更加专业的功能。

 

 

HAProxy VS LVS的异同

Haproxy和LVS又有相同的地方:

Haproxy和LVS应用场景都一样,都是去实现负载均衡。应用最多的场景就是web应用,数据库应用等。

Haproxy和LVS又有不同的地方:

Haproxy是基于七层负载均衡的软件,而LVS是基于四层的。这里所指的七层模型是指网络当中的ISO七层模型。比如第一层物理层,第二层数据链路层,第三层网络层等等,作为LVS软件是工作在四层之下,也就是在网络层面做的负载均衡,也就是通过IP层和UDP层

下面就这两种负载均衡软件的异同做一个简单总结:

1)两者都是软件负载均衡产品,但是 LVS是基于Linux操作系统实现的一种软负载均衡,而HAProxy 是基于第三应用实现的软负载均衡。

2)LVS是基于四层的IP负载均衡技术,而 Haproxy 是基于四层和七层技术、可提供TCP和 HTTP应用的负载均衡综合解决方案。

3)LVS工作在 ISO模型的第四层,因此其状态监测功能单一,而Haproxy在状态监测方面功能强大,可支持端口、URL、脚本等多种状态检测方式。

4)Haproxy 虽然功能强大,但是整体处理性能低于四层模式的 LVS负载均衡,而LVS拥有接近硬件设备的网络吞吐和连接负载能力。

综上所述,HAProy和LMS各有优缺点,没有好坏之分,要选择哪个作为负载均衡器,要以实际应用环境来决定。


推荐阅读
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • AppFog 是一个基于 CloudFoundry 的多语言 PaaS(平台即服务)提供商,允许用户在其平台上轻松构建和部署 Web 应用程序。本文将通过详细的图文步骤,指导读者如何在 AppFog 免费云平台上成功部署 WordPress,帮助用户快速搭建个人博客或网站。 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • Mantis Bug Tracker:高效缺陷管理与跟踪系统
    缺陷管理平台Mantis,也做MantisBT,全称MantisBugTracker。Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺 ... [详细]
  • # 运维小白的成长日记第七天OSI七层传输层/应用层精讲!
    运维小白的成长日记第七天-OSI七层传输层应用层精讲!1、IP提供了点到点的连续接,通过IP地址可以找到目标主机。但是目标主机有很多应用,服务器到底使用哪个应用来响应客户端?通过端 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • 在将Web服务器和MySQL服务器分离的情况下,是否需要在Web服务器上安装MySQL?如果安装了MySQL,如何解决PHP连接MySQL服务器时出现的连接失败问题? ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本指南详细介绍了如何在CentOS 6.6 64位系统上以root用户身份部署Tomcat 8服务器。系统环境为CentOS 6.6 64位,采用源码安装方式。所需软件为apache-tomcat-8.0.23.tar.gz,建议将软件下载至/root/opt目录。具体下载地址请参见官方资源。本指南涵盖了从环境准备到服务启动的完整步骤,适用于需要在该系统环境下搭建高性能Web应用服务器的技术人员。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 西北工业大学作为陕西省三所985和211高校之一,虽然在农业和林业领域不如某些顶尖院校,但在航空航天领域的实力尤为突出。该校的计算机科学专业在科研和教学方面也具有显著优势,是考研的理想选择。 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 如何在主服务器响应变慢时,自动切换至备用服务器地址以确保服务连续性
    在主服务器响应速度下降时,如何通过编程实现自动切换至备用服务器地址,以确保服务的连续性和稳定性。本文将介绍一种基于PHP和MySQL的解决方案,通过监测主服务器的响应时间,当检测到延迟过高时,自动切换至备用服务器接口,从而保障系统的高可用性。 ... [详细]
author-avatar
沛公-若溪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有