码迷,mamicode.com
首页 > 其他好文 > 详细

LVS原理总结

时间:2016-08-13 14:16:38      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:集群机构 lvs   keepalived 高可用

1、LVS负载均衡调度技术是在linux内核中实现的,因此被称为linux虚拟服务器(linux  virtual server),我们使用该软件配置lvs的时候,不能直接配置内核中的ipvs,而是需要使用ipvs的管理工具ipvsadm来进行管理,当然,后面我们会使用keepalived软件直接管理ipvs


2、lvs技术点小结:

1、真正实现调度的工具是ipvs,工作在linux内核层面

2、lvs自带的ipvs管理工具是ipvsadm

3、keepalived实现ipvs及负载均衡器的高可用

 

3、lvs中的技术相关概念

lvs的术语

Direstor  Server(DS)

Real Server(RS)


VIP:virtual IP 向外部直接面向用户请求,作为用户请求的目标的IP地址。

DIP:Director Server IP,主要用于和内部主机通讯的IP地址

RIP:Real Server IP

CIP:Client IP,客户端IP


4、lvs工作原理

1、当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
2、PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
3、IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链
4、POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

(下图来源于网络)

技术分享


  

5、lvs的类型

根据架构有3种不同的模型

1、lvs-nat  (Network Address Translation)

2、lvs-dr (Direct Routing 直接路由)现在较多使用场景的方法


3、lvs-tun  (Tunneling 隧道)lvs-tun模型比较少用


LVS-NAT模型(图片来源于网络)

技术分享


技术分享



1、NAT技术将请求的报文(通过DNAT方式改写)和响应的报文(通过SNAT方式改写),通过调度器地址重写然后在转发给内部的服务器,报文返回时在改写成原来的用户请求的地址。

2、只需要在调度器LB上配置WAN公网IP即可,调度器也要有私有LAN IP和内部RS节点通信。

3、每台内部RS节点的网关地址,必须要配成调度器LB的私有LAN内物理网卡地址(LDIP),这样才能确保数据报文返回时仍然经过调度器LB。

4、由于请求与响应的数据报文都经过调度器LB,因此,网站访问量大时调度器LB有较大瓶颈,一般要求最多10-20台节点。

5、NAT模式支持对IP及端口的转换,即用户请求vip:80,可以通过调度器转换到RS节点的rip:8080(DR和TUN模式不具备的)。

6、所有NAT内部RS节点只需配置私有LAN IP即可。

7、由于数据包来回都需要经过调度器,因此,要开启内核转发net.ipv4.ip_forward = 1,当然也包括iptables防火墙的forward功能(DR和TUN模式不需要)


LVS-DR模型

技术分享


技术分享


特点:

LVS DR模式原理:

1、通过更改数据包的目标MAC地址实现数据包转发的。

2、所有节点和LVS要处于一个局域网。


1、通过在调度器LB上修改数据包的目的MAC地址实现转发。注意,源IP地址仍然是CIP,目的IP地址仍然是VIP。

2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高(和NAT模式比)。

3、因DR模式是通过MAC地址的改写机制实现的转发,因此,所有RS节点和调度器LB只能在一个局域网LAN中(小缺点)。

4、需要注意RS节点的VIP的绑定(lo:vip/32,lo1:vip/32)和ARP抑制问题。

5、RS节点的默认网关不需要是调度器LB的DIP,而直接是IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论讲:只要RS可以出网即可,不是必须要配置外网IP。

6、由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求的报文的目的端口(和NAT要区别)。

7、当前,调度器LB支持几乎所有的UNIX,LINUX系统,但目前不支持WINDOWS系统。真实服务器RS节点可以是WINDOWS系统。

8、总的来说DR模式效率很高,但是配置也较麻烦,因此,访问量不是特别大的公司可以用haproxy/nginx取代之。这符合运维的原则:简单、易用、高效。日1000-2000W PV或并发请求1万以下都可以考虑用haproxy/nginx(LVS NAT模式)

9、直接对外的访问业务,例如:web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,存储系统RS节点,最好只用内部IP地址。


LVS-Tun模型

技术分享


技术分享


TUN:


1、负载均衡器通过把请求的报文通过IP隧道(ipip隧道,高级班讲这个)的方式(请求的报文不经过原目的地址的改写(包括MAC),而是直接封装成另外的IP报文)转发至真实服务器,而真实服务器将响应处理后直接返回给客户端用户。

2、由于真实服务器将响应处理后的报文直接返回给客户端用户,因此,最好RS有一个外网IP地址,这样效率才会更高。理论上:只要能出网即可,无需外网IP地址。

3、由于调度器LB只处理入站请求的报文。因此,此集群系统的吞吐量可以提高10倍以上,但隧道模式也会带来一定的系统开销。TUN模式适合LAN/WAN。

4、TUN模式的LAN环境转发不如DR模式效率高,而且还要考虑系统对IP隧道的支持问题。

5、所有的RS服务器都要绑定VIP,抑制ARP,配置复杂。

6、LAN环境一般多采用DR模式,WAN环境可以用TUN模式,但是当前在WAN环境下,请求转发更多的被haproxy/nginx/DNS调度等代理取代。因此,TUN模式在国内公司实际应用的已经很少。跨机房应用要么拉光纤成局域网,要么DNS调度,底层数据还得同步。

7、直接对外的访问业务,例如:web服务做RS节点,最好用公网IP地址。不直接对外的业务,例如:MySQL,存储系统RS节点,最好用内部IP地址。



小结:

1、NAT模式:

入站DNAT,出站SNAT,入站出站都经过LVS,可以修改端口,私有网络。

2、DR模式

修改数据包的目的MAC地址,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,LAN内使用。

3、TUN模式

不改变数据包内容,数据包外部封装一个IP头,入站经过LVS,出站不经过LVS,直接返回客户,不能改端口,LAN/WAN使用。

LVS和节点之间通过隧道通信。


LVS调度算法:

固定调度算法:rr,wrr,dh,sh

动态调度算法:wlc,lc,lblc,lblcr,SED,NQ(后两种官方站点没提到,编译LVS,make过程可以看到rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

下篇我们进入lvs实操部分

本文出自 “厚德载物” 博客,谢绝转载!

LVS原理总结

标签:集群机构 lvs   keepalived 高可用

原文地址:http://huaxin.blog.51cto.com/903026/1837533

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!