`
onmyway_1985
  • 浏览: 33017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Web基础架构:负载均衡和LVS (转)

 
阅读更多
(虽然在书上看了,但是这个博客配上了图片说明,更加一目了然,就转一下)

在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库、缓存等等)。
一、负载均衡的作用

    负载均衡设备的任务就是作为应用服务器流量的入口,挑选最合适的一台服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像它面对的是一台拥有近乎无限能力的服务器,而本质上,真正提供服务的,是后端的集群。

    一个典型的互联网应用的拓扑结构是这样的:


二、负载均衡的类型

    负载均衡可以采用硬件设备,也可以采用软件负载。

    商用硬件负载设备成本通常较高(一台几十万上百万很正常),所以在条件允许的情况下我们会采用软负载,软负载解决的两个核心问题是:选谁、转发,其中最著名的是LVS(Linux Virtual Server)。

三、软负载——LVS

    LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。

    LVS的转发主要通过修改IP地址(NAT模式,分为源地址修改SNAT和目标地址修改DNAT)、修改目标MAC(DR模式)来实现。

    那么为什么LVS是在第四层做负载均衡?

        首先LVS不像HAProxy等七层软负载面向的是HTTP包,所以七层负载可以做的URL解析等工作,LVS无法完成。其次,某次用户访问是与服务端建立连接后交换数据包实现的,如果在第三层网络层做负载均衡,那么将失去「连接」的语义。软负载面向的对象应该是一个已经建立连接的用户,而不是一个孤零零的IP包。后面会看到,实际上LVS的机器代替真实的服务器与用户通过TCP三次握手建立了连接,所以LVS是需要关心「连接」级别的状态的。

    LVS的工作模式主要有4种:

        DR(直接路由)

        NAT

        TUNNEL

        Full-NAT

    这里挑选常用的DR、NAT、Full-NAT来简单介绍一下。
    1、DR

        





        请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。

        DR模式下需要LVS和绑定同一个VIP(RS通过将VIP绑定在loopback实现)。

        一个请求过来时,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变,LVS只是做了一下移花接木。

        RS收到LVS转发来的包,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。

        而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。

        DR模式是性能最好的一种模式。

    2、NAT




        NAT(Network Address Translation)是一种外网和内网地址映射的技术。

        NAT模式下,网络报的进出都要经过LVS的处理。LVS需要作为RS的网关。

        当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。

        RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。

        这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

    3、Full-NAT




        无论是DR还是NAT模式,不可避免的都有一个问题:LVS和RS必须在同一个VLAN下,否则LVS无法作为RS的网关。

        这引发的两个问题是:

        1、同一个VLAN的限制导致运维不方便,跨VLAN的RS无法接入。

        2、LVS的水平扩展受到制约。当RS水平扩容时,总有一天其上的单点LVS会成为瓶颈。

        Full-NAT由此而生,解决的是LVS和RS跨VLAN的问题,而跨VLAN问题解决后,LVS和RS不再存在VLAN上的从属关系,可以做到多个LVS对应多个RS,解决水平扩容的问题。

        Full-NAT相比NAT的主要改进是,在SNAT/DNAT的基础上,加上另一种转换,转换过程如下:

        在包从LVS转到RS的过程中,源地址从客户端IP被替换成了LVS的内网IP。

        内网IP之间可以通过多个交换机跨VLAN通信。

        当RS处理完接受到的包,返回时,会将这个包返回给LVS的内网IP,这一步也不受限于VLAN。

        LVS收到包后,在NAT模式修改源地址的基础上,再把RS发来的包中的目标地址从LVS内网IP改为客户端的IP。

        Full-NAT主要的思想是把网关和其下机器的通信,改为了普通的网络通信,从而解决了跨VLAN的问题。采用这种方式,LVS和RS的部署在VLAN上将不再有任何限制,大大提高了运维部署的便利性。

    4、Session

        客户端与服务端的通信,一次请求可能包含多个TCP包,LVS必须保证同一连接的TCP包,必须被转发到同一台RS,否则就乱套了。为了确保这一点,LVS内部维护着一个Session的Hash表,通过客户端的某些信息可以找到应该转发到哪一台RS上。

    5、LVS集群化

        采用Full-NAT模式后,可以搭建LVS的集群,拓扑结构如下图:




    6、容灾

        容灾分为RS的容灾和LVS的容灾。

        RS的容灾可以通过LVS定期健康检测实现,如果某台RS失去心跳,则认为其已经下线,不会在转发到该RS上。

        LVS的容灾可以通过主备+心跳的方式实现。主LVS失去心跳后,备LVS可以作为热备立即替换。

        容灾主要是靠KeepAlived来做的。

参考:
http://www.importnew.com/11229.html
  • 大小: 73.6 KB
  • 大小: 55.5 KB
  • 大小: 62.4 KB
  • 大小: 124.6 KB
  • 大小: 68.5 KB
分享到:
评论

相关推荐

    Java详解Web 基础架构:负载均衡和 LVS.doc

    Java 详解 Web 基础架构:负载均衡和 LVS 一、负载均衡的作用 负载均衡设备的任务就是作为应用服务器流量的入口,挑选最合适的一台服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。在大...

    Web基础架构:负载均衡和LVS_尚硅谷_张晓飞+1

    【Web基础架构:负载均衡和LVS】 在大规模的互联网应用中,为了应对高并发和大流量的压力,负载均衡成为了必不可少的技术。它主要用于分发客户端请求到多台服务器,确保服务的稳定性和高可用性。负载均衡器作为前端...

    基于LVS负载均衡的高性能Web站点设计与实现

    在构建高性能Web站点时,基于LVS(Linux Virtual Server)的负载均衡技术是关键的一环。LVS是一种开源的负载均衡解决方案,它能够将网络流量有效地分发到多个服务器上,以提高系统的处理能力和可用性。本文将详细...

    Web基础架构:负载均衡和LVS

    在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库、缓存等等)。负载均衡设备...

    LVS+Keepalived实现高可用负载均衡

    本文档中所描述的具体业务场景是以CentOS Linux release 6.0 (Final)操作系统为基础,使用LVS+Keepalived实现高可用负载均衡。系统架构如图2所示,其中负载均衡服务器负责将客户端对VIP的访问请求转发至后端的真实...

    负载均衡集群技术 LVS

    而对于Web2.0,由于数据频繁变化和高请求量,可能需要更复杂的解决方案,如Nginx,它能提供基于内容的负载均衡和缓存管理,但需要考虑高并发时的性能优化和架构扩展性。 在高并发环境中,LVS通常作为第一层负载均衡...

    PHP特级课:LVS负载均衡:搜索引擎.docx

    - LVS NAT和IP-TUN模式:讲解LVS的两种工作模式,Nat模式通过修改IP包头部进行负载均衡,而IP-TUN模式则利用隧道技术实现负载均衡。 - LVS DR模式和实验测试:详细阐述DR模式的工作原理,以及如何通过实验验证其性能...

    基础架构_产品简介_负载均衡1

    【负载均衡】是云计算基础架构中的重要组成部分,它旨在通过分散网络流量,提高服务的可用性和响应速度,确保系统的稳定运行。阿里云提供的负载均衡服务是企业级的云上负载分发解决方案,能够帮助用户应对高并发访问...

    Javaweb技术文档

    封捷_ModelDriven和Preparable拦截器 张晓飞_Tomcat的设计模式分析 ...Web基础架构:负载均衡和LVS_张晓飞 Web应用环境搭建__封捷 XML简介_封捷 版本控制器[上]服务器端安装与配置__封捷 缓存技术浅谈_张晓飞

    lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.rar

    这个文档"lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.docx"将详细解释每个组件的配置细节、集群的架构图以及可能出现的问题及解决方案,帮助你更好地理解和实施这个高性能的负载均衡集群。

    lvs负载均衡

    LVS作为一种成熟的负载均衡解决方案,在实际部署中能够显著提升服务器集群的整体性能和服务质量。通过对LVS架构的理解及其不同组件的深入了解,可以更好地利用这一技术解决实际问题,提高网络服务的可靠性和用户体验...

    大流量WEB架构-LVS集群配置.pdf

    总结来说,LVS-DR模式提供了一种高效且灵活的负载均衡解决方案,通过在LVS节点上配置适当的规则,结合Web服务器的正确配置,可以实现高流量Web服务的稳定运行,同时支持多种调度策略,以适应不同的业务需求。

    LVS官方教材

    - 定义了 LVS 基础配置的概念,包括前端调度器、真实服务器和负载均衡策略。 - **数据复制与共享**:介绍了在不同真实服务器之间进行数据复制和共享的方法,确保数据的一致性和完整性。 - **三层架构的 LVS 配置*...

    高性能业务架构解决方案(LVS+Keepalived)

    在众多的负载均衡方案中,Nginx、HAProxy 和 LVS 各有所长。Nginx 适用于网络环境不太严格的情况,尤其适合对静态资源处理要求较高的场景;HAProxy 更倾向于大型 Web 服务器的负载均衡需求;而 LVS 则因其出色的性能...

    负载均衡haproxy(1)

    1. **四层负载均衡架构**:客户端直接与Haproxy交互,Haproxy负责将流量分发到Web服务器和数据库服务器,适用于简单流量管理和TCP服务代理。 2. **七层负载均衡架构**:在四层负载均衡(如LVS)之后,Haproxy作为七...

Global site tag (gtag.js) - Google Analytics