设为首页 收藏本站
查看: 1086|回复: 0

[经验分享] LVS 手册学习

[复制链接]

尚未签到

发表于 2015-9-5 08:59:00 | 显示全部楼层 |阅读模式
  本文是自己对LVS手册的理解,很多引用了手册的内容http://zh.linuxvirtualserver.org/node/7
  LVS是Linux Virtual Server的缩写,用来实现LINUX条件下简单的负载均衡。是一种实现可伸缩性网络(随着用户数目的增长而提高其性能)的开源软件。
DSC0000.jpg
  上图为LVS的体系结构。LVS由客户端client,调度器LinuxDirector(和其备份Backup),实际的服务器real server,和分布式文件系统组成。在实际的使用中,只需要调度器为Linux即可,其他的机器可以使用windows系统。
  LVS的精髓在于调度器的实现。调度器实现有两种方式:



1 IP负载均衡技术
2 基于内容多请求分发技术
  其中1最常用,而且高效。IP负载均衡技术分为三种:



1 VS/NAT
2 VS/TUN
3 VS/DR
  1.VS/NAT
  当内部网络中的主机要访问Internet或被Internet访问时,就需要采用网络地址转换(Network Address Translation, 以下简称NAT),将内部地址转化为Internets上可用的外部地址。
  NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户相信它们连接一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成在一个IP地址上的一个虚拟服务。
DSC0001.jpg
  这样,客户所看到的只是在Virtual IP Address上提供的服务,而服务器集群的结构对用户是透明的。在VS/NAT的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新瓶颈。
  处理流程
  用户报文到达时:
  客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接Hash表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务器。
  服务器返回报文时:
  当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口。
  2.VS/TUN
  IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。
  我们利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给客户。可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。
DSC0002.jpg
  
  服务器发送报文的方式与NAT不同:
  服务器收到报文后,先将报文解封获得原来目标地址为VIP的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。
  3.VS/DR
    调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。VIP地址为调度器和服务器 组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。
     DSC0003.jpg
    它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC 地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报 文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。
  http://tsjianxin.blog.iyunv.com/1309817/354686这篇文章整理了这三中链接方式



NAT模式


IPIP模式


DR模式


对服务器结点要求


服务结点可以是任何操作系统


必须支持IP隧道模式,目前只有Linux


服务结点支持虚拟网卡设备,能够禁用设备的ARP响应


网络要求


拥有私有IP地址的局域网络


拥有合法IP地址的局域网或广域网


拥有合法IP地址的局域网,服务结点与均衡器必须在同一个网段


通常支持结点数


10~20个,试均衡器处理能力而定


较高,可以支持到100个服务结点


较高,可以支持到100个服务结点


网关


均衡器即为服务器结点网关


服务结点同自己的网关或者路由器连接,不经过均衡器


服务结点同自己的网关或者路由器连接,不经过均衡器


服务结点安全性


较好,采用内部IP,服务结点隐蔽


较差,采用公用IP地址,结点完全暴露


较差,采用公用IP地址,结点完全暴露


IP要求


仅需要一个合法IP地址作为VIP


除VIP外,每个服务结点需拥有合法的IP地址,可以直接路由至客户端


除VIP外,每个服务结点需拥有合法的IP地址,可以直接路由至客户端
  

  服务器调度算法有静态和动态之分
  静态调度算法有以下:
  


  • 轮叫调度(Round-Robin Scheduling)
  • 加权轮叫调度(Weighted Round-Robin Scheduling)
  • 最小连接调度(Least-Connection Scheduling)
  • 加权最小连接调度(Weighted Least-Connection Scheduling)
  • 基于局部性的最少链接(Locality-Based Least Connections Scheduling)
  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
  • 目标地址散列调度(Destination Hashing Scheduling)
  • 源地址散列调度(Source Hashing Scheduling)
  • 最短预期延时调度(Shortest Expected Delay Scheduling)
  • 不排队调度(Never Queue Scheduling)
  动态调度算法动态反馈负载均衡算法考虑服务器的实时负载和响应情况,不断调整服务器间处理请求的比例。
  W表示权值
  对于服务器Si,可以得到分别在时间T1和T2时的计数器值Ci1和Ci2,计算出在时间间隔T2-T1内服务器 Si收到新连接数Ni = Ci2 - Ci1
  平均连接数
   DSC0004.gif
  综合负载为
   DSC0005.gif
  权值W为
   DSC0006.gif
  这样就可以再跟据前面静态调度算法选择一个以权值为依据进行调度的算法进行调度。
  这篇手册后面主要是一些细节问题,这些细节问题在实践安装LVS中再进行理解。 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-109577-1-1.html 上篇帖子: Linux服务器集群系统――LVS(Linux Virtual Server)项目 下篇帖子: LVS学习笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表