LVS(Linux Virtual Server)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了LVS(Linux Virtual Server),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4784字,纯文字阅读大概需要7分钟。
内容图文
![LVS(Linux Virtual Server)](/upload/InfoBanner/zyjiaocheng/980/8fe92cacfd374827a6a78948509bdb86.jpg)
- 通过NAT实现虚拟服务器(VS/NAT)
VS/NAT的体系结构图如下所示。在一组服务器前有一个调度器,它们之间通过交换机或者是集线器相连。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器上,执行结果都是一样的。
客户通过Virtual Ip Address (虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法从一组真实的服务器中选出一台服务器,将报文的目标地址virtual ip address 改写成选定服务器的地址,报文的目标端口也被改写为选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接hash表中记录这个连接(连接终止或结束时删除),当这个连接的下一个报文到达时,从连接hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文发送给原选定的服务器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为virtual ip address 和相应的端口,再把报文发送给用户。
下面,举个例子来进一步说明VS/NAT,如图所示:
VS/NAT 的配置如下表所示,所有到IP地址为202.103.106.5和端口为80的流量都被负载均衡地调度的真实服务器172.16.0.2:80和 172.16.0.3:8000上。目标地址为202.103.106.5:21的报文被转移到172.16.0.3:21上。而到其他端口的报文将被拒绝。
VS/NAT 的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限, 当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。
-通过IP隧道实现虚拟服务器(VS/TUN)
在VS/NAT的集群系统中,请求和相应的数据报文都需要通过负载调度器,当真是服务器的数量在10-20之间时,负载调度器将成为整个集群系统的新瓶颈。大多数的Internet服务都有这样的特点:请求报文较短而响应报文区包含大量的数据。如果能将请求和相应分开处理,即在负载调度器中只负责调度请求而响应则直接返回个客户,将极大地提高整个集群系统的吞吐量。
IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文中的技术,这样使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术也称作IP封装技术。IP隧道主要用于移动主机和虚拟私有网路,在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。
利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给客户。但是呢,后端服务器有一组而不是一个,所以我们不可能静态的建立一一对应的隧道,而是动态的选择一个服务器,将请求报文封装和转发给选出的服务器,这样,我们可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。VS/TUN的体系结构图如下所示,各个服务器将VIP地址配置在自己的IP隧道设备上。
VS/TUN的工作流程下图所示,他的连接调度和管理与VS/NAT中的一样,只是他的报文转发方法不同。调度器根据各个服务器的负载情况,动态的选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后得到IP报文转发给选出的服务器,服务器收到报文后,先将报文解封获得原来目标地址为VIP的报文,服务器发现VIP被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。根据缺省的tcp/ip协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也是vip,所以响应报文不需要任何修改,可以直接返回个客户,客户认为得到正常的服务,而不知道是哪一台服务器处理的。
在VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈,可以用来构建高性能的超级服务器。但是VS/TUN技术对服务器有要求,即所有的服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议。
-通过直接路由实现虚拟服务器(VS/DR)
跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群式系统的吞吐量。
VS/DR的体系结构图如下所示,调度器和服务器必须在物理上有个一网卡通过不分断的局域网连接,如通过高速的交换机或者集线器相连。VIP地址为调度器和服务器组共享,调度器配置的VIP对外可见,用于接收虚拟服务的请求报文,而所有的服务器把VIP地址配置在各自的non-arp网络设备上,对外不可见,只是用于处理目标地址为VIP的网络请求。
他的连接调度和管理跟NAT、TUN中的一样,但是他的报文转发方法不同,将保温直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态的选择一台服务器,不修改IP也不封装IP报文,而是将数据帧的目标mac地址改为选出服务器的mac地址,再将修改后的数据帧在服务器组的局域网内发送,因为数据真的mac地址是选出的服务器的mac地址,所以服务器肯定可以接受到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。
跟VS/TUN方法一样,VS/DR调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。跟VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向到本地的Socket端口上。
-LVS官网提供的4篇文章:
http://www.linuxvirtualserver.org/zh/lvs1.html
http://www.linuxvirtualserver.org/zh/lvs2.html
http://www.linuxvirtualserver.org/zh/lvs3.html
http://www.linuxvirtualserver.org/zh/lvs4.html
内容总结
以上是互联网集市为您收集整理的LVS(Linux Virtual Server)全部内容,希望文章能够帮你解决LVS(Linux Virtual Server)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。