Loading... <p><span style="font-family:宋体;font-size:14px">LVS(linux virtual machine) <span style="font-family:宋体">的简写,</span></span><span style="font-family:宋体;font-size:16px">是一个虚拟的服务器集群系统</span><span style="font-family:宋体;font-size:16px">,</span><span style="font-family:宋体;font-size:14px">主要用于4层负载均衡。 <br /></span></p> <p><span style="font-family:宋体;font-size:14px">宗旨:</span></p> <p style="text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px">使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.</span></p> <p style="text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px">很好的可伸缩性(Scalability)</span></p> <p style="text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px">很好的可靠性(Reliability)</span><span style="font-family:宋体;font-size:16px">,应该还是高可用吧</span></p> <p style="text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px">很好的可管理性(Manageability)。</span><span style="font-family:宋体;font-size:16px">很容易使用,很好学。</span></p> <p style="text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px"> </span></p> <p style="text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px">lvs自身应该不能实现高可用,需要结合其它软件实现。</span></p> <p style="text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px">可伸缩性:</span></p> <p style="margin-left:28px;text-indent:28px;text-align:left"><span style="font-family:宋体;font-size:16px">1、</span><span style="font-family:宋体;font-size:16px">可伸缩性,简单来说,是以更大的规模来做你现在所做的事。伸展一个Web应用的规模在于让更多的人使用你的程序。如果你没法找出方法在伸展规模的同时提高性能,没关系。而且只要你可以伸展规模来处理更大数量的用户,那么有几个单点故障(single point of failure)也没关系。</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:14px"> </span></p> <p><span style="font-family:宋体;font-size:14px">LVS<span style="font-family:宋体">的几个术语:</span></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:14px">VIP<span style="font-family:宋体">:</span><span style="font-family:Times New Roman">Director</span><span style="font-family:宋体">用来向外部提供服务的</span><span style="font-family:Times New Roman">IP</span><span style="font-family:宋体">地址</span><span style="font-family:Times New Roman">,</span><span style="font-family:宋体">也就是</span><span style="font-family:Times New Roman">DNS</span><span style="font-family:宋体">通过域名解析到的</span><span style="font-family:Times New Roman">IP</span></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:14px">RIP<span style="font-family:宋体">:集群节点(后台真正提供服务的服务器)所使用的</span><span style="font-family:Times New Roman">IP</span><span style="font-family:宋体">地址</span></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:14px">DIP<span style="font-family:宋体">:</span><span style="font-family:Times New Roman">Director</span><span style="font-family:宋体">用来和</span><span style="font-family:Times New Roman">RIP</span><span style="font-family:宋体">进行交互的</span><span style="font-family:Times New Roman">IP</span><span style="font-family:宋体">地址</span></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:14px">CIP<span style="font-family:宋体">:客户端使用的</span><span style="font-family:Times New Roman">IP</span><span style="font-family:宋体">或公网</span><span style="font-family:Times New Roman">IP</span></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:14px">R S :<span style="font-family:宋体">集群节点服务器</span><span style="font-family:Times New Roman">Real server</span></span></p> <p><span style="font-family:宋体;font-size:14px">lvs内核模型:</span></p> <p><span style="font-family:宋体;font-size:14px"> <img alt="}}F`_{GJ1PS7Y$K611MFNWY.png" src="//cto.wang/usr/uploads/2016/07/20160703161232-20.png" title="1442113862361363.png" /></span></p> <p><span style="font-family:宋体;font-size:16px">LVS的三种负载均衡技术:</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">NAT</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">优点</span><span style="font-family:宋体;font-size:16px">:</span><span style="font-family:宋体;font-size:16px">服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在LVS主机上,服务器组可以用私有的IP地址。</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">缺点</span><span style="font-family:宋体;font-size:16px">:</span><span style="font-family:宋体;font-size:16px">扩充能力有限,当服务器结点</span><span style="font-family:宋体;font-size:16px">数目很多时</span><span style="font-family:宋体;font-size:16px">,LVS主机本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应封包都需要通过负载平衡LVS主机。</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">特点:</span></p> <p> <span style="font-family:宋体;font-size:16px">1、RIP要使用使用地址,网关指向DIP</span></p> <p> <span style="font-family:宋体;font-size:16px">2、请求报文和响应报文都需经过Director:所以Director可能成为系统性能瓶颈。</span></p> <p> <span style="font-family:宋体;font-size:16px">3、支不支持端口映射,支持</span></p> <p> <span style="font-family:宋体;font-size:16px">4、RS可以使用任意操作系统。</span></p> <p><span style="font-family:宋体;font-size:16px"> 请求流程:</span></p> <p><span style="font-family:宋体;font-size:16px"><img alt="KA37VB0A8Q_G_@%~GA2EJ$O.jpg" src="//cto.wang/usr/uploads/2016/07/20160703161233-21.jpg" title="1442110127192549.jpg" /></span></p> <p><img alt="ICM7J3(T_FZY}{X601CDRH6.jpg" src="//cto.wang/usr/uploads/2016/07/20160703161233-76.jpg" title="1442113951416139.jpg" /></p> <p><span style="font-family:宋体;font-size:16px"> </span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">DR</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">VS/DR</span><span style="font-family:宋体;font-size:16px"> </span><span style="font-family:宋体;font-size:16px">LVS主机只处理客户到服务器端的连接,响应资料可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">同 VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载平衡LVS主机与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备或者设备别名不 作 ARP 响应。</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px"> </span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">特点:</span></p> <p> <span style="font-family:宋体;font-size:16px">1、保证前端路由将VIP的报文通通发往Directory,而不是RS</span></p> <p> <span style="font-family:宋体;font-size:16px">解决方案:</span></p> <p> <span style="font-family:宋体;font-size:16px">(1)、静态地址绑定,在前端路由器上操作</span></p> <p> <span style="font-family:宋体;font-size:16px">问题:未必有路由操作权限</span></p> <p> <span style="font-family:宋体;font-size:16px">(2)、在real server上配置iptables不让响应</span></p> <p> <span style="font-family:宋体;font-size:16px">(3)、修改RS上的内核参数,将RS上的VIP配置在lo接口的别名上,并且限制其不能响应对VIP地址解析请求。</span></p> <p> <span style="font-family:宋体;font-size:16px">2、RS可以使用私有地址,也可以使用公网地址,此时可以通过互联网对其直接进行访问。</span></p> <p> <span style="font-family:宋体;font-size:16px">3、RS和Directory必须在同一物理网络中。</span></p> <p> <span style="font-family:宋体;font-size:16px">4、所有的请求报文经由Director,但是响应报文必须不能经过Director</span></p> <p> <span style="font-family:宋体;font-size:16px">5、不支持端口映射。</span></p> <p> <span style="font-family:宋体;font-size:16px">6、RS可以是大多数常见的OS。</span></p> <p> <span style="font-family:宋体;font-size:16px">7、RS网关不指向DIP</span></p> <p><span style="font-family:宋体;font-size:16px"> 请求流程<br /></span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px"></span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703161233-6.gif" /><img alt="UQ9VLPSCK[(`}%BBH]L5BUV.jpg" src="//cto.wang/usr/uploads/2016/07/20160703161233-66.jpg" title="1442114171230513.jpg" /></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px"></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">TUN</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">在VS/TUN 的集群系统中,负载平衡LVS主机只将请求分配到不同的实际服务器,实际服务器将应答的资料直接返回给用户。这样,负载平衡LVS主机就可以处理巨量的请 求,而不会成为系统的瓶颈。即使负载平衡LVS主机只有100Mbps的全双工网卡,虚拟服务器的最大吞吐量可以达到几Gbps。所以,VS/TUN可以 极大地增加负载平衡LVS主机分配的服务器数量,它可以用来构建高性能超级服务器。VS/TUN技术对服务器的要求是所有的服务器必须支持"IP Tunneling"或者"IP Encapsulation"协议。目前,VS/TUN 的后端服务器主要运行Linux操作系统。因为"IP Tunneling"正成为各个操作系统的标准协议,所以VS/TUN也会适用运行其它操作系统的后端服务器。</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px"> </span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">特点:</span></p> <p> <span style="font-family:宋体;font-size:16px">1、RIP、VIP、DIP全部是公网地址</span></p> <p> <span style="font-family:宋体;font-size:16px">2、RS的网关不会也不可能指向DIP</span></p> <p> <span style="font-family:宋体;font-size:16px">3、请求报文经由Director,但响应报文必须不能经过Director</span></p> <p> <span style="font-family:宋体;font-size:16px">4、不支持端口映射</span></p> <p> <span style="font-family:宋体;font-size:16px">5、支持隧道类型</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"> 请求流程</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"><img alt="M[K_PLL]GAAIBXJHQDJ{2FO.png" src="//cto.wang/usr/uploads/2016/07/20160703161234-37.png" title="1442110194992655.png" /></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"> </span></p> <p><span style="font-family:宋体;font-size:16px"> </span></p> <p><span style="font-family:宋体;font-size:16px"><img alt="XL@TSIX5ROX4%1KX3GN2AEX.png" src="//cto.wang/usr/uploads/2016/07/20160703161234-98.png" title="1442111554580053.png" />LVS的常见调度算法:</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">rr(round robin):将工作平均的分配到服务器 (用于实际服务主机性能一致)</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">lc:(least-connections )</span></p> <p style="text-indent:28px"> <span style="font-family:宋体;font-size:16px">向较少连接的服务器分配较多的工作(tcp计时器判断后端连接数量。用于实际服务主机性能一致。)</span></p> <p style="text-indent:28px"> <span style="font-family:宋体;font-size:16px">overhead值,表示当前负载状况 。</span></p> <p style="text-indent:28px"> <span style="font-family:宋体;font-size:16px">overhead = active*256 + innactive <br /></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"> <br /></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">wrr(weighted round robin):</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"> 加权轮询,能者多劳。谁性能好分给谁的请求多。 (用于实际服务主机性能不一致时) <br /></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">wlc(weighted least-connections):</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"> 考虑它们的容量向较少连接的服务器分配较多的工作。容量通过用户指定的砝码来说明,可以根据装载信息动态的向上或向下调整。(用于实际服务主机性能不一致时)</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"> overhead = (active*256 + inactive) /weight</span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px"> </span></p> <p><span style="font-family:宋体;font-size:16px"> sh:(source hashing):</span></p> <p style="margin-left:28px;text-indent:28px"><span style="font-family:宋体;font-size:16px">源地址hash,为了session持久的功能,在IPv4的代码中自行位置一个hash表,把CIPhash存储,任何一个客户端在来,先查hash表。这就是来自同一个IP的主机将始终定向至同一个real server.</span></p> <p><span style="font-family:宋体;font-size:16px"> dh:(destination hashing),目标地址hash,real server访问外部时, <br /></span></p> <p style="text-indent:28px"><span style="font-family:宋体;font-size:16px">还有一些调度算法,用的比较少,就不再列举了。 <br /></span></p> <p><span style="font-family:宋体;font-size:16px"> </span></p> <p><span style="font-family:宋体;font-size:16px">参考: <br /></span></p> <p><span style="font-family:宋体;font-size:16px">http://www.infoq.com/cn/news/2007/10/whatisscalability</span><span style="font-family:宋体;font-size:16px"> 你真的明白什么是可伸缩性吗? <br /></span></p> <p><span style="font-family:宋体;font-size:16px">http://baike.baidu.com/link?url=jIw3aTgnp6_SV7Op9LnIb7bL1Ik8xQGxTfhz-D5GraGOPkR97y6f3rMXtgS8axp9NlNilEUpLHWUNoJ5EVUGU18J4sdJlmOCbfCNeHwgZzy</span><span style="font-family:宋体;font-size:16px"> LVS百度百科的介绍</span></p> <p>http://os.51cto.com/art/201202/319979.htm<span style="font-family:宋体;font-size:16px"> 专题:LVS负载均衡手册</span></p> <p><span style="font-family:宋体;font-size:16px"></span></p> <p><span style="font-family:宋体;font-size:16px">总结:</span></p> <p><span style="font-family:宋体;font-size:16px"> 1、网上已经有很多lvs的资料了,这篇博客也没有什么新意,edraw软件在电脑上没反应,没有好的画图工具,三种lvs 调度模型,描述的就不够详细,而且是摘抄的别人的图。</span></p> <p><span style="font-family:宋体;font-size:16px"> 2、感觉概念一般是死的,写来写去好像也就是这么多东西,不过总结一下对自己有些帮助吧。</span></p> <p><span style="font-family:宋体;font-size:16px"> 3、如果布局太差,那么在编辑的时候,文字间距离看起来还行啊,预览的时候行间距就很大,这下次编辑的时候在看看是不是还是这种情况。</span></p> <p><span style="font-family:宋体;font-size:16px"></span></p> <p><span style="font-family:宋体;font-size:16px">最后就是,接着这篇博客,会写一下lvs调度模型的具体实现。<br /></span></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信