负载均衡技术Load Balance简称LB是构建大型网站必不可少的架构策略之一。它的目的是把用户的请求分发到多台后端的设备上,用以均衡服务器的负载。咱们能够把负载均衡器划分为两大类:硬件负载均衡器和软件负载均衡器,这里重点介绍软件实现方法中的LVS。html
LVS原理介绍和配置实践
2019年09月03日 - 拆分LVS-Keepalived中LVS
2019年08月23日 - 更新LVS/NAT、LVS/DR、LVS/TUN三种模式的原理和配置实践
2018年12月03日 - 精简和更新配置步骤
2018年07月31日 - 初稿前端
阅读原文 - https://wsgzao.github.io/post...mysql
扩展阅读linux
LVS - http://www.linuxvirtualserver...
Keepalived - http://www.keepalived.org/nginx
LVS - http://www.linuxvirtualserver...
How virtual server works? - http://www.linuxvirtualserver...
LVS和Keepalived官方中文手册PDF - https://pan.baidu.com/s/1s0P6...git
如下术语涉及LVS三种工做模式的原理
负载均衡实现方法有两种:硬件实现和软件实现
硬件比较常见的有:github
软件比较常见的有:web
LVS特色是:算法
Nginx负载均衡器的特色是:sql
HAProxy的特色是:
LVS是一个开源的软件,能够实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。
LB 集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到 Director Server 上,而后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器 (real server) 上。为了不不一样机器上用户请求获得的数据不同,须要用到了共享存储,这样保证全部用户请求的数据是同样的。
LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver... 如今 LVS 已是 Linux 内核标准的一部分。使用 LVS 能够达到的技术目标是:经过 LVS 达到的负载均衡技术和 Linux 操做系统实现一个高性能高可用的 Linux 服务器集群,它具备良好的可靠性、可扩展性和可操做性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从逻辑上可分为调度层、Server 集群层和共享存储。
目前有三种IP负载均衡技术(VS/NAT,VS/TUN,VS/DR)
Virtual Server via Network Address Translation(VS/NAT)
经过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文经过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
Virtual Server via IP Tunneling(VS/TUN)
采用NAT技术时,因为请求和响应报文都必须通过调度器地址重写,当客户请求愈来愈多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报 文经过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,因此调度器只处理请求报文。因为通常网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量能够提升10倍。
Virtual Server via Direct Routing(VS/DR)
VS/DR经过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术同样,VS/DR技术可极大地 提升集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,可是要求调度器与真实服务器都有一块网卡连 在同一物理网段上。
三种模式的主要区别
VS/NAT | VS/TUN | VS/DR | |
---|---|---|---|
server | any | tunneling | non-arp device |
server network | private | LAN/WAN | LAN |
server number | low (10~20) | high | high |
server gateway | load balancer | own router | own router |
模式与特色 | NAT 模式 | IPIP 模式 | DR 模式 |
---|---|---|---|
对服务器的要求 | 服务节点可使任何操做系统 | 必须支持 IP 隧道,目前只有 Linux 系统支持 | 服务器节点支持虚拟网卡设备,可以禁用设备的 ARP 响应 |
网络要求 | 拥有私有 IP 地址的局域网络 | 拥有合法 IP 地址的局域,网或广域网 | 拥有合法 IP 地址的局域,服务器节点与负载均衡器必须在同一个网段 |
一般支持节点数量 | 10 到 20 个,根据负载均衡器的处理能力而定 | 较高,能够支持 100 个服务节点 | 较高,能够支持 100 个服务节点 |
网关 | 负载均衡器为服务器节点网关 | 服务器的节点同本身的网关或者路由器链接,不通过负载均衡器 | 服务节点同本身的网关或者路由器链接,不通过负载均衡器 |
服务节点安全性 | 较好,采用内部 IP,服务节点隐蔽 | 较差,采用公用 IP 地址,节点安全暴露 | 较差,采用公用 IP 地址,节点安全暴露 |
IP 要求 | 仅须要一个合法的 IP 地址做为 VIP 地址 | 除了 VIPO 地址外,每一个服务器界定啊须要拥有合法的 IP 地址,能够直接从路由到客户端 | 除了 VIP 外,每一个服务节点需拥有合法的 IP 地址,能够直接从路由到客户端 |
特色 | 地址转换 | 封装 IP | 修改 MAC 地址 |
配置复杂度 | 简单 | 复杂 | 复杂 |
LVS 由2部分程序组成,包括 ipvs 和 ipvsadm。
原生只有3种模式(NAT,TUN,DR), fullnat工做模式默认不支持
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。
重点理解NAT方式的实现原理和数据包的改变。
(1). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(2). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(3). IPVS比对数据包请求的服务是否为集群服务,如果,修改数据包的目标IP地址为后端服务器IP,而后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
(4). POSTROUTING链经过选路,将数据包发送给Real Server
(5). Real Server比对发现目标为本身的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
(6). Director Server在响应客户端前,此时会将源IP地址修改成本身的VIP地址,而后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP
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 调度器及应用服务器能够在不一样网段中,网络架构更灵活,应用服务器只须要进行简单的网络设定便可加入集群。
重点将请求报文的目标MAC地址设定为挑选出的RS的MAC地址
(1) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
(2) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(3) IPVS比对数据包请求的服务是否为集群服务,如果,将请求报文中的源MAC地址修改成DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,而后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
(4) 因为DS和RS在同一个网络中,因此是经过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
(5) RS发现请求报文的MAC地址是本身的MAC地址,就接收此报文。处理完成以后,将响应报文经过lo接口传送给eth0网卡而后向外发出。 此时的源IP地址为VIP,目标IP为CIP
(6) 响应报文最终送达至客户端
LVS/DR模型的特性
特色1的解决方案:
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_announce arp_ignore
(2) RS的RIP可使用私网地址,也能够是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director;
(3) RS跟Director要在同一个物理网络;
(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;
(5) 此模式不支持端口映射;
缺点:惟一的缺陷在于它要求LVS 调度器及全部应用服务器在同一个网段中,所以不能实现集群的跨网段应用。
优势:可见在处理过程当中LVS Route只处理请求的直接路由转发,全部响应结果由各个应用服务器自行处理,并对用户进行回复,网络流量将集中在LVS调度器之上。
在原有的IP报文外再次封装多一层IP首部,内部IP首部(源地址为CIP,目标IIP为VIP),外层IP首部(源地址为DIP,目标IP为RIP)
(1) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。
(2) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(3) IPVS比对数据包请求的服务是否为集群服务,如果,在请求报文的首部再次封装一层IP报文,封装源IP为DIP,目标IP为RIP。而后发至POSTROUTING链。 此时源IP为DIP,目标IP为RIP
(4) POSTROUTING链根据最新封装的IP报文,将数据包发至RS(由于在外层封装多了一层IP首部,因此能够理解为此时经过隧道传输)。 此时源IP为DIP,目标IP为RIP
(5) RS接收到报文后发现是本身的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,并且目标是本身的lo接口VIP,那么此时RS开始处理此请求,处理完成以后,经过lo接口送给eth0网卡,而后向外传递。 此时的源IP地址为VIP,目标IP为CIP
(6) 响应报文最终送达至客户端
LVS/TUN模型特性
其实企业中最经常使用的是 DR 实现方式,而 NAT 配置上比较简单和方便,后边实践中会总结 DR 和 NAT 具体使用配置过程。
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 隧道来进行转发,故二者能够存在于不一样的网段中。
lvs-fullnat工做模式默认不支持
此模式相似DNAT,它经过同时修改请求报文的源IP地址和目标IP地址进行转发
注意:
(1) VIP是公网地址,RIP和DIP是私网地址,且一般不在同一IP网络;所以,RIP的网关通常不会指向DIP;
(2) RS收到的请求报文源地址是DIP,所以,只需响应给DIP;但Director还要将其发往Client;
(3) 请求和响应报文都经由Director;
(4) 支持端口映射;
八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)
针对不一样的网络服务需求和服务器配置,IPVS调度器实现了以下八种负载调度算法:
轮叫调度rr(Round Robin)
调度器经过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而无论服务器上实际的链接数和系统负载。
加权轮叫wrr(Weighted Round Robin)
调度器经过"加权轮叫"调度算法根据真实服务器的不一样处理能力来调度访问请求。这样能够保证处理能力强的服务器处理更多的访问流量。调度器能够自动问询真实服务器的负载状况,并动态地调整其权值。
最少连接lc(Least Connections)
调度器经过"最少链接"调度算法动态地将网络请求调度到已创建的连接数最少的服务器上。若是集群系统的真实服务器具备相近的系统性能,采用"最小链接"调度算法能够较好地均衡负载。
加权最少连接wlc(Weighted Least Connections)
在集群系统中的服务器性能差别较大的状况下,调度器采用"加权最少连接"调度算法优化负载均衡性能,具备较高权值的服务器将承受较大比例的活动链接负载。调度器能够自动问询真实服务器的负载状况,并动态地调整其权值。
基于局部性的最少连接lblc(Locality-Based Least Connections)
"基于局部性的最少连接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工做负载,则用"最少连接"的原则选出一个可用的服务 器,将请求发送到该服务器。
带复制的基于局部性最少连接lblcr(Locality-Based Least Connections with Replication)
"带复制的基于局部性最少连接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不一样之处是它要维护从一个 目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务 器组,按"最小链接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小链接"原则从这个集群中选出一 台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以下降复制的 程度。
目标地址散列dh(Destination Hashing)
"目标地址散列"调度算法根据请求的目标IP地址,做为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。
源地址散列sh(Source Hashing)
"源地址散列"调度算法根据请求的源IP地址,做为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。
原做者写得很详细,我这边作下引用在此表示感谢,LVS 部署之细枝末节
本文总结了在 LVS 部署过程当中须要注意的一些小细节。这些内容比较杂,而且没有规律和内在联系;它们分散在 LVS 部署过程当中的各个小环节中,不是系统性的知识,也没有主线对它们进行链接。你能够经过此文对他们进行一个大概的了解,在实践过程当中若是遇到能够再过来进行详细的查阅,以解决实际问题。
LVS 在 VS/NAT 方式下须要开启数据包转发 (ip_forward) 功能。由于在 LVS 的 VS/NAT 模式下,对 IP 数据进行负载均衡时,须要把多台真实服务器节点中的专网 IP 映射到同一个虚拟服务器的公网 IP 上;这就须要经过 NAT 技术对 IP 数据包进行转发,从而将 IP 数据包发送到真实服务器上进行处理。LVS 在 VS/DR 模式下,由于 director 的 DIP 与真实服务器节点的 RIP 在同一网段,因此不须要开启路由转发功能。LVS 在 VS/TUN 模式下,IP 数据包是经过 IP 隧道技术进行封包后再分发的方式到达真实服务器节点的,也不须要开启路由转发功能。
开启 Linux 的路由转发功能的方法不少,具体细节请参阅文章 Linux ip_forward 数据包转发。
在 ARP 协议中,为了减小 arp 请求的次数,当主机接收到询问本身的 arp 请求的时候,就会把源 ip 和源 Mac 放入自 己的 arp 表里面,方便接下来的通信。若是收到不是询问本身的包(arp 是广播的,全部人都收到),就会丢掉,这样不会形成 arp 表里面无用数据太多致使 有用的记录被删除。
在 LVS 的 VS/DR 模式下,当内网的真实服务器(Linux 主机)要发送一个到外部网络的 ip 包(LVS 负载器分配置过来的做业的处理结果),那么它就会请求路由器的 Mac 地址,发送一个 arp 请求,这个 arp 请求里面包括了本身的 ip 地址和 Mac 地址。而 linux 主机默认是使用 ip 数据包的源 ip 地址做为 arp 里面的源 ip 地址,而不是使用发送设备上面网络接口卡的 ip 地址。这样在 LVS 的 VS/DR 架构下,全部真实服务器在响应外部请求时的 IP 数据包的源地址都是同一个 VIP 地址,那么 arp 请求就会包括 VIP 地址和设备 Mac。而路由器收到这个 arp 请求就会更新本身的 arp 缓存,这样就会形成 ip 欺骗了,VIP 被抢夺,因此就会有问题。
因此当 LVS 运行在 VS/DR 模式下时,须要在全部真实服务器上修改 ARP 请求与响应策略,以保证以上问题不会发生。
由于在 lo(本地环回网络接口)上配置了 VIP,因此须要对真实服务器中的 ARP 请求与响应策略配置以下:
net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.lo.arp_ignore=1 net.ipv4.conf.all.arp_announce=2 net.ipv4.conf.lo.arp_announce=2
将以上代码段追加到 /etc/sysctl.conf 文件中,而后执行 sysctl -p
指令就能够。以上配置的具体含义请参阅 Linux 内核参数 arp_ignore & arp_announce 详解。
在 VS/DR 模式下 VIP 、DIP 和 RIP 不须要在同一网段!
其中 VIP 必须是公网 IP;而 DIP 和 RIP 必须在同一网段(能够是任意网段的 IP,也能够是私网 IP),且须要节点主机的 RIP 能够把 IP 数据包发送到一个能把 IP 数据包路由到公网的路由器上。
其实 LVS 在 VS/DR 模式下的要求是 DIP 和 RIP 必须处于同一网段中。在实际的部署过程当中发现若是在 Director 上 VIP 和 DIP 在同一网段、或在 RealServer 上 VIP 与 RIP 在同一网段,LVS 集群工做会很不稳定。由于当一个 IP 数据包须要发到默认网关时(在 RealServer 或 Director 上),Linux 主机不知道应该使用哪一个接口(在同一子网中的 VIP 和 DIP/RIP),他可能会随机选一个,但这个不必定能成功。我感受能够经过在 Linux 中配置路由表来解决,但没有验证(哪位同窗若是有兴趣能够实践验证一下,若是能把验证结果反馈给我那是再好不过了)。
在 Linux 中用于对 网卡的反向路由过滤策略进行配置的内核参数是 rp_filter,有关此参数的详细介绍以及配置方式请参见 Linux 内核参数 rp_filter。
LVS 在 VS/TUN 模式下,须要对 tunl0 虚拟网卡的反向路由过滤策略进行配置。最直接的办法是把其值设置为 0。
net.ipv4.conf.tunl0.rp_filter=0 net.ipv4.conf.all.rp_filter=0
由于 Linux 系统在对网卡应用反向路由过滤策略时,除了检查本网卡的 rp_filter 参数外,还会检查 all 配置项上的 rp_filter 参数,并使用这两个值中较大的值做为应用到当前网卡的反向路由过滤策略。因此须要同时把 net.ipv4.conf.all.rp_filter
参数设置为 0。
LVS 在 VS/TUN 模式下,须要在每一个真实服务器上开启 tunl0 网卡,并把 VIP 配置到 tunl0 网卡上。有关 tunl0 网卡的说明能够参考一下 Linux 中 IP 隧道模块浅析。
LVS 在 VS/TUN 模式下 由于 Director 主机须要经过 ipip 协议向 RealServer 分发数据包;因此须要在 RealServer 上配置防火墙,容许 ipip 协议的数据包经过。
iptables -I INPUT 1 -p 4 -j ACCEPT
通常建议和Keepalived配置文件搭配使用
[root@d126009 wangao]# ipvsadm -h ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1) Usage: ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags] ipvsadm -D -t|u|f service-address ipvsadm -C ipvsadm -R ipvsadm -S [-n] ipvsadm -a|e -t|u|f service-address -r server-address [options] ipvsadm -d -t|u|f service-address -r server-address ipvsadm -L|l [options] ipvsadm -Z [-t|u|f service-address] ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid] ipvsadm --stop-daemon state ipvsadm -h Commands: Either long or short options are allowed. --add-service -A add virtual service with options --edit-service -E edit virtual service with options --delete-service -D delete virtual service --clear -C clear the whole table --restore -R restore rules from stdin --save -S save rules to stdout --add-server -a add real server with options --edit-server -e edit real server with options --delete-server -d delete real server --list -L|-l list the table --zero -Z zero counters in a service or all services --set tcp tcpfin udp set connection timeout values --start-daemon start connection sync daemon --stop-daemon stop connection sync daemon --help -h display this help message Options: --tcp-service -t service-address service-address is host[:port] --udp-service -u service-address service-address is host[:port] --fwmark-service -f fwmark fwmark is an integer greater than zero --ipv6 -6 fwmark entry uses IPv6 --scheduler -s scheduler one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, the default scheduler is wlc. --pe engine alternate persistence engine may be sip, not set by default. --persistent -p [timeout] persistent service --netmask -M netmask persistent granularity mask --real-server -r server-address server-address is host (and port) --gatewaying -g gatewaying (direct routing) (default) --ipip -i ipip encapsulation (tunneling) --masquerading -m masquerading (NAT) --weight -w weight capacity of real server --u-threshold -x uthreshold upper threshold of connections --l-threshold -y lthreshold lower threshold of connections --mcast-interface interface multicast interface for connection sync --syncid sid syncid for connection sync (default=255) --connection -c output of current IPVS connections --timeout output of timeout (tcp tcpfin udp) --daemon output of daemon information --stats output of statistics information --rate output of rate information --exact expand numbers (display exact values) --thresholds output of thresholds information --persistent-conn output of persistent connection info --nosort disable sorting output of service/server entries --sort does nothing, for backwards compatibility --ops -o one-packet scheduling --numeric -n numeric output of addresses and ports --sched-flags -b flags scheduler flags (comma-separated)
# 每台realserver index.html文件内容为ip 地址,例如httpd: echo "172.27.233.43" > /var/www/html/index.html echo "172.27.233.44" > /var/www/html/index.html # Nginx test echo "rs1" > /usr/share/nginx/html/index.html echo "rs2" > /usr/share/nginx/html/index.html # 启动http服务 /etc/init.d/httpd start # 客户端模拟请求 for((i=1;i<=10;i++));do curl http://172.27.233.45/; done 172.27.233.44 172.27.233.43 172.27.233.44 172.27.233.43 172.27.233.44 172.27.233.43 172.27.233.44 172.27.233.43 172.27.233.44 172.27.233.43 # 请求分配结果 ipvsadm -Ln --stats IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 172.27.233.45:80 10 50 0 4330 0 -> 172.27.233.43:80 5 25 0 2165 0 -> 172.27.233.44:80 5 25 0 2165 0 参数含义 --stats 显示统计信息 Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes 链接数 输入包 输出包 输入流量 输出流量 # 实时观察 watch ipvsadm -Ln --stats
LVS和Keepalived的原理介绍和配置实践
LVS原理介绍和配置实践
Keepalived原理介绍和配置实践
LVS-NAT原理介绍和配置实践
LVS-DR原理介绍和配置实践
LVS-TUN原理介绍和配置实践