LVS是基于Linux系统的服务器集群解决方案,它的目标就是创建一个具有较好的扩展性、较好的可靠性、较高的性能的一个体系,很多商业的集群产品,都是基于LVS技术来实现的。
LVS的核心就是通过一组服务器来进行负载均衡,通过前端的负载调度器,把请求无缝的调度到真实的服务器上,那么这样的话客户端是感受不到的。它的伸缩性就是在集群中加入或者删除节点来实现,通过检测节点或者服务进程的故障并且正确的设置来达到系统的高可用性,由于这个负载调度是在Linux内核中完成的,因此被称之为Linux 虚拟服务器,也就是Linux Virtual Server,简写为LVS。
我们把最前端的负载均衡器叫做DS,也就是Director Server,把后端的实际服务器叫做Real Server,也就是RS,把IP虚拟服务器软件叫做IPVS,也就是IP Virtual Server,而IP负载均衡技术是效率最高的。通过NAT将一组服务器构建成一台高性能的、高可用的虚拟服务器的技术,我们称之为VS/NAT技术,也就是Virtual Server via Network Address Translation。而IP隧道技术也就是VS/TUN(Virtual Server via IP Tunneling)和通过直接路由实现寻服务器的方法VS/DR(Virtual Server via Direct Routing),这两种方法都可以极大的提高系统的伸缩性。所以说IPVS软件实现了三种IP负载均衡技术。
对于上面的三种技术,我们这里做一下总结,首先是NAT技术肯定会节省IP地址,因为它对内部进行了伪装,但是效率很低,因为返回给请求方的流量需要经过转换器,它的瓶颈就在于调度器的处理能力上。第二中就是IP隧道技术,而IP隧道技术就是说调度器可以把请求报文通过IP隧道转发到真实的服务器,在通过真实的服务器将响应直接返回给客户,这样调度器就只需要处理请求报文即可。一般来说应答报文比请求报文大很多,采用IP隧道技术之后,集群系统的最大吞吐量可以提高10倍左右,IP隧道技术实现虚拟服务器的方式通常在集群的节点、邮件服务、新闻服务、dns服务、代理服务等等。而直接路由技术则是通过改写请求报文的MAC地址,直接将请求发送到真实的服务器,再由真实服务器将响应直接返回给客户,但是它相对于IP隧道技术少了一些开销,但是它要求调度器与真实的服务器通过网卡链接到同一物理网段。
对于LVS的几种算法,首先就是轮询,但是它不考虑服务器的实际连接数和系统负载情况,还可以是加权轮询,他会根据真实服务器的处理能力来调度访问的请求,这样处理能力强的服务器就可以处理更多的访问量。还可以是最少连接算法,它是通过将网络请求调度到已建立的连接数最少的服务器上。当然还可以是加权的最少连接算法,它用于处理服务器性能差距比较大的情况下。还有就是基于局部性的最少连接数,它对对目标的IP地址进行负载均衡,它会自动找出该IP地址最近使用的服务器,如果该服务器可用,则把该请求发送给它,如果服务器不存在,它会自动调用最少连接的原则。还可以使用地址散列算法,通常分为目标地址散列和源地址散列。这里还有SED和NQ算法,就不介绍了。
首先说一下KeepAlived软件吧,他是一个类似于Layer3、4、5交换机制的软件,也就是我们说的第3层、第4层、第5层交换。它的目的就是检测服务器的状态,如果有服务器死机或者工作出现故障,该软件就会检测到它并且把它剔除,当服务器工作正常之后,他会再把它加入到服务器集群中,这些都是自动完成的,不需要我们人工干涉。这里的KeepAlived就是用于RS的检测以及LoadBalance主机和Backup主机之间Failover的实现。
第三层交换它会像服务器集群中共的服务器发送一个ICMP的数据包,也就是咱们的ping程序,如果某台服务器的IP地址没有被激活,那么咱们的软件就会认为这台服务器失效了,并且会把它从服务器集群中剔除。也就是说,这一层它以服务器的IP地址是否有效作为判断服务器工作是否正常的标准。第四层交换会以TCP端口的状态来决定服务器的工作正常与否,比如咱们的web server一般都是80端口,它会检测某些特定端口是否被启动,从而确定是否会把这些服务器从其中剔除。第五层交换要复杂一些,因此它占用的宽带也就更高,它会根据用户的设定来检查服务器程序是否运行正常,如果与用户设置的不符,则会将服务器从集群中剔除。
原文地址:http://blog.csdn.net/xinguimeng/article/details/39336431