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 上将不再有任何限制,大大提高了运维部署的便利性。

服务系统集群LVS(Linux Virtual Server)学习笔记

首先向LVS创始人张文嵩先生致以敬意,感谢您,使我们这些后生才能接触到此款优秀应用

此文主要对lvs负载均衡学习的总结,一为记录,二为巩固,主要介绍lvs的一些基础知识。

前提:负载均衡(LB Cluster)负载均衡实现方法有两种:硬件实现和软件实现;硬件比较常见的有:   1) F5 Big-IP;2)Citrix Netscaler;3)A TEN软件比较常见的有:   1)LVS(Linux Virtual Server);2)nginx;3)HAProxy;4)ATS(Apache Traffic Server)

一、LVS基础

1.1 什么是lvs

  LVS是Linux Virtual Server的缩写,顾名思义是一个虚拟的服务器集群系统,项目在1998年5月由张文嵩博士成立,在linux 2.6版本后,LVS被收录到内核中。

1.2 lvs能拿来干什么

  LVS作为一个调度器,能把用户的大量并发请求负载均衡至后端服务器,使得网站在高并发下还能提供服务,而不至于瘫痪。LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。 LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站(www.linux.com)、向RealPlayer提供音频视频服务而闻名的Real公司(www.real.com)、全球最大的开源网站(sourceforge.net)等。

1.3 lvs的工作模式

  LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS支持TCP/UDP的负载均衡。因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。

  LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。 当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有几种,分别是NAT、DR、TUN及FULLNAT。

1.3.1 lvs-nat工作模式

  

NAT(Network Address Translation 网络地址转换)是一种外网和内外地址映射的技术,内网可以是私有网址,外网可以使用NAT方法修改数据报头,让外网与内网能够互相通信。NAT模式下,网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,LVS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完,返回响应时,源IP是RS IP,目标IP是客户端的IP。这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP;
(2)请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;
(3)支持端口映射,可修改请求报文的目标PORT;
(4)vs必须是Linux系统,rs可以是任意系统;

缺点:在整个过程中,所有输入输出的流量都要经过LVS 调度服务器。显然,LVS 调度服务器的网络I/O压力将会非常大,因此很容易成为瓶颈,特别是对于请求流量很小,而响应流量很大的Web类应用来说尤为如此。

优点: NAT模式的优点在于配置及管理简单,由于了使用NAT技术,LVS 调度器及应用服务器可以在不同网段中,网络架构更灵活,应用服务器只需要进行简单的网络设定即可加入集群。

1.3.2 lvs-dr工作模式(最为常用)

  DR(Direct Routing 直接路由模式)此模式时LVS 调度器只接收客户发来的请求并将请求转发给后端服务器,后端服务器处理请求后直接把内容直接响应给客户,而不用再次经过LVS调度器。LVS只需要将网络帧的MAC地址修改为某一台后端服务器RS的MAC,该包就会被转发到相应的RS处理,注意此时的源IP和目标IP都没变。RS收到LVS转发来的包时,链路层发现MAC是自己的,到上面的网络层,发现IP也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。

注意:(1) 确保前端路由器将目标IP为VIP的请求报文发往Director:(a) 在前端网关做静态绑定;(b) 在RS上使用arptables;(c) 在RS上修改内核参数以限制arp通告及应答级别;arp_announcearp_ignore(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;(3) RS跟Director要在同一个物理网络;(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;(5) 此模式不支持端口映射;

缺点:唯一的缺陷在于它要求LVS 调度器及所有应用服务器在同一个网段中,因此不能实现集群的跨网段应用。

优点:可见在处理过程中LVS Route只处理请求的直接路由转发,所有响应结果由各个应用服务器自行处理,并对用户进行回复,网络流量将集中在LVS调度器之上。

1.3.3 lvs-tun 工作模式

  TUN(virtual server via ip tunneling IP 隧道)调度器把请求的报文通过IP隧道转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文。此转发方式不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP),由于一般网络服务应答数据比请求报文大很多,采用lvs-tun模式后,集群系统的最大吞吐量可以提高10倍

注意:(1) DIP, VIP, RIP都应该是公网地址;(2) RS的网关不能,也不可能指向DIP;(3) 请求报文要经由Director,但响应不能经由Director;(4) 此模式不支持端口映射;(5) RS的操作系统得支持隧道功能

缺点:由于后端服务器RS处理数据后响应发送给用户,此时需要租借大量IP(特别是后端服务器使用较多的情况下)。

优点:实现lvs-tun模式时,LVS 调度器将TCP/IP请求进行重新封装并转发给后端服务器,由目标应用服务器直接回复用户。应用服务器之间是通过IP 隧道来进行转发,故两者可以存在于不同的网段中。

1.3.4 lvs-fullnat模式(此类型默认不支持

  此模式类似DNAT,它通过同时修改请求报文的源IP地址和目标IP地址进行转发

注意:(1) VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;(2) RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client;(3) 请求和响应报文都经由Director;(4) 支持端口映射;
1.4 LVS 的调度算法

根据其调度时是否考虑各RS当前的负载状态,可分为静态方法和动态方法两种。

静态方法:   仅根据算法本身进行调度;RR:roundrobin,轮询调度,即简单在各主机间轮流调度;WRR:Weighted RR,加权轮询调度,根据各主机的权重进行轮询;SH:Source Hashing,实现session sticy,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定;DH:Destination Hashing;目标地址哈希,将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡;动态方法:主要根据每RS当前的负载状态及调度算法进行调度;Overhead=LC:least connections最小连接调度,;lvs根据Overhead=activeconns*256+inactiveconns计算服务器的负载状态,每次选择overhead最小的服务器WLC:Weighted LC 加权最小连接调度;lvs根据Overhead=(activeconns*256+inactiveconns)/weight来计算服务器负载,每次选择overhead最小的服务器,它是lvs的默认调度算法;SED:Shortest Expection Delay最短期望延迟,它不对 inactive 状态的连接进行计算,根据Overhead=(activeconns+1)*256/weight计算服务器负载,选择 overhead 最小的服务器进行调度NQ:Never Queue当有空闲服务器时,直接调度至空闲服务器,当没有空闲服务器时,使用 SED 算法进行调度LBLC:Locality-Based LC,动态的DH算法,基于局部性最少连接,相当于 dh + wlc,正常请求下使用 dh 算法进行调度,如果服务器超载,则使用 wlc 算法调度至其他服务器;LBLCR:LBLC with Replication,带复制功能的LBLC,与 LBLC 不同的是 LVS 将请求 IP 映射至一个服务池中,使用 dh 算法调度请求至对应的服务池中,使用 lc 算法选择服务池中的节点,当服务池中的所有节点超载,使用 lc 算法从所有后端 Realserver 中选择一个添加至服务吃中。
1.5 ipvsadm lvs负载均衡管理命令
核心功能:集群服务管理(lvs调度器):增、删、改;集群服务的RS管理:增、删、改;查看;管理集群服务:增、改、删;增、改:ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]删:ipvsadm -D -t|u|f service-addressservice-address:-t|u|f:-t: TCP协议的端口,VIP:TCP_PORT-u: TCP协议的端口,VIP:UDP_PORT-f:firewall MARK,是一个数字;[-s scheduler]:指定集群的调度算法,默认为wlc;例子:# ipvsadm -A -t 172.16.33.116:80 -s rr管理集群上的RS:增、改、删;增、改:ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]删:ipvsadm -d -t|u|f service-address -r server-addressserver-address:rip[:port]选项:lvs类型:-g: gateway, dr类型-i: ipip, tun类型-m: masquerade, nat类型   -w weight:权重;例子:# ipvsadm -a -t 172.16.33.117:80 -r 192.168.100.1 -m# ipvsadm -a -t 172.16.33.118:80 -r 192.168.100.2 -m清空定义的所有内容:ipvsadm -C查看:ipvsadm -L|l [options]--numeric, -n:numeric output of addresses and ports --exact:expand numbers (display exact values)--connection, -c:output of current IPVS connections--stats:output of statistics information--rate :output of rate information保存和重载:ipvsadm -S = ipvsadm-saveipvsadm -R = ipvsadm-restore

分类: Linux负载均衡

转载于:https://www.cnblogs.com/luoahong/p/6747172.html

LVS的四种模式的实现相关推荐

  1. lvs工作在第几层_LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)...

    目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.lvs调度算法(最常用的四种) 轮叫调度(rr) 调度器通过外部请求的顺序轮流分配到集群中的真实服务器上,对每台服务器都是均等的 ...

  2. spi协议时序图和四种模式实际应用详解

    大家好,我是无际. 上个章节我们讲解了spi接口定义,今天我们更加深入讲解下spi协议时序图和spi四种模式的用法. 刚开始接触单片机开发时,最怕就是看时序图,对于我来说就是奇怪的知识. 特别是SPI ...

  3. ThinkPHP的访问模式分为四种模式

    ThinkPHP的访问模式分为四种模式 0 普通模式 http://www.yual.com/index.php?m=user&a=show 1 pathinfo模式 http://www.y ...

  4. gRPC四种模式、认证和授权实战演示

    前言 上一篇对gRPC进行简单介绍,并通过示例体验了一下开发过程.接下来说说实际开发常用功能,如:gRPC的四种模式.gRPC集成JWT做认证和授权等. 正文 1. gRPC四种模式服务 以下案例演示 ...

  5. 2021年用独立站铁赚的四种模式

    近期独立站建站平台发布财报,在2020年一年时间里,GMV 翻了一番.这个结果充分说明了独立站越来越受到卖家们的青睐,布局独立站也成为了必备标配. 想在2021年里利用独立站走上人生巅峰?那必然离不开 ...

  6. 企业风险管理的四种模式五种策略分别是什么?

    企业风险管理一直是一个经久不衰的话题,企业风险管理对于企业主来说尤为重要,这在很大程度上关系着企业能否健康的发展.鉴于很多人对于企业风险管理这一内容了解不是很透彻,今天分享企业风险管理的四种模式和五种 ...

  7. 云计算技术架构-云计算四种模式(公有云、私有云、混合云、行业云)

    接下来几篇主要从技术角度介绍云计算的架构:  云计算四种模式:公有云.私有云.混合云和行业云(本文讲述)  云计算架构:基础架构层.云平台层.业务应用层和业务管理层  云计算服务模式:IaaS. ...

  8. Seata的四种模式介绍

    什么时候需要用到分布式事务: 就是指不是单个服务或者单个数据库架构下产生的事务,例如: 跨数据源的分布式事务 跨服务的分布式事务 Seata有四种模式: XA.AT(默认).TCC.Seaga XA: ...

  9. Burp Suite爆破模块中的四种模式的区别详解和演示(暴力破解)

    BrupSuite爆破的四种模式详解 最近看了好多关于暴力破解的博客,其中用的最多的工具就是bp了,但是好多都是一上来给了执行步骤,却没有对爆破的这几个模式选择进行解释,所以今天萌新写个纪录,来阐明这 ...

最新文章

  1. 【CI3.1】CI框架简单使用方法
  2. 【转载】如何:为 Windows Phone 创建警报和提醒
  3. 面向连接的Socket Server的简单实现
  4. C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法
  5. 突然决定,送一台笔记本!
  6. 折叠屏究竟是不是智能手机的未来?| 畅言
  7. 学生电脑哪个牌子好_香米哪个牌子好
  8. LVS_Cluster
  9. 第四季-专题12-按键驱动程序设计
  10. Quartz配置文件详解生产配置
  11. cnpack多国语言控件帮助
  12. 地址总线是单向还是双向_「计算机组成原理」:总线、地址总线、数据总线和控制总线...
  13. 麻省理工十亿美元计算机学院,麻省理工学院10亿美元打造全新计算机科学学院,让所有学科的研究人员都能接触到最新的计算科学...
  14. SigmaStudio之Sine Tone的Freq\Ison换算
  15. Ubuntu 18.04 LTS 桌面版 WPS 安装字体
  16. 评价指标(一)精确率,召回率,F1-score
  17. oracle form 6i菜单模块,利用DDE技术实现ORACLE FORMS 6i 中打开文件(如:EXCEL、WORD、图片、网页)的功能...
  18. DB 查询分析器 方便地创建DB2自定义函数
  19. 单片机c语言电梯程序设计,基于51单片机的模拟电梯控制系统设计.doc
  20. 图标设计五条黄金法则

热门文章

  1. 会计电算化的过程 实质上是用计算机,会计电算化的过程,实质上是用计算机()的过程。A.单一地替代手工会计操作B.单一地替代对会计进行分...
  2. 仪器和软件通讯测试软件,软件定义的仪器-测试测量-与非网
  3. dnf机器人猜数字奖励_DNF:周年庆策划啪啪打脸,工作人员也出错误,难道又是临时工的锅?...
  4. js方式调用php_举例说明JS调用PHP和PHP调用JS的方法
  5. map分组后取前10个_map根据属性排序、取出map前n个
  6. 11尺寸长宽 iphone_弱电工程LED显示屏尺寸规格及计算方法
  7. c获取文件的名字和运行到程序的第几行功能
  8. 【C++grammar】C++类数据成员的初始化
  9. 肯德基收银系统模式_肯德基的完整形式是什么?
  10. n个节点的二叉树n+1_使用C ++程序将链接列表中的最后N个节点附加到第一个