CentOS 6.5 LVS原理详解及DR的初步实现

前言:

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是现在LVS已经是Linux内核标准的一部分。 使用LVS可以达到的技术目标是:通过LVS达到的负载均衡技术和Linux操作系统实现一个高性能高可用的Linux服务器群集,它具有良好的可靠性,可拓展性和可操作性。从而以低廉的成本实现最优的性能。 使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),它就是我们图中的Director;中间的服务器群组层,这里是用apache来实现;最底层的数据共享存储层,用Shared Storage表示,这里是数据库和NFS在同一台虚拟机上。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

LVS的各个层次的详细介绍:

Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给apache层的应用服务器(Real Server)上。同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,(这里我们不做什么监控,大至实现LVS的过程而),此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。 Apache层:由一组实际运行应用服务的机器组成,Real Server是WEB服务器(也可以是MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个),每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。 Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数 据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,从整个LVS结构可以看出,Director Server是整个LVS的核心。IP负载均衡 负载均衡技术有很多实现方案,有基于DNS域名轮流解析的方法、有基于客户端调度访问的方法、有基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的是IP负载均衡技术。 LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。 当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,是IPVS实现的重点技术,IPVS实现负载均衡机制有三种,分别是NAT、TUN和DR。 VS/NAT: 即(Virtual Server via Network Address Translation)也就是网络地址翻译技术实现虚拟服务器,当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口也改成选定的Real Server的相应端口,最后将报文请求发送到选定的Real Server。在服务器端得到数据后,Real Server返回数据给用户时,需要再次经过负载调度器将报文的源地址和源端口改成虚拟IP地址和相应端口,然后把数据发送给用户,完成整个负载调度过程。可以看出,在NAT方式下,用户请求和响应报文都必须经过Director Server地址重写,当用户请求越来越多时,调度器核压力将非常大,此时就会影响调度器的性能。 NAT:特性及要求,,iptables中dnat的工作机制:当用户请求到达本机的一刹那,进来的这个请求可能是访问本机的,一但访问的是本机,经过路由之后就会经过INPUT的链,但是dnat的工作机制是当请求一到达本机之后,在PREROUTING就马上把地址转换成内部主机了,不再访问本机,由POSTROUTING转发出去了,整个过程也没有进入用户空间。

NAT是直接工作在INPUT的链上的,其实ipvs结合了netfilter的代码工作在INPUT的链上的一个能够根据用户定义的规则进行转发的一种应用,当用户请求到达时,的确是访问本机的,就交由INPUT的链,但我们在INPUT的链上定义了ipvs集群规则,这个请求将通过ipvs集群规则进行处理,通过算法确定将请求分配到各主机处理用户请求;但是ipvs也只是个框架,需要依赖于规则来完成转发,一旦定义了ipvs规则,它就可以直接在INPUT的链上工作起来,所以到达本机经过INPUT的链上的请求时,一旦匹配ipvs集群规则,直接转发到POSTROUTING转到别的主机上去,在INPUT的链上被强行转发出去,所以一般来讲ipvs跟iptables的过滤(natfilter)不应该同时使用, VS/TUN :即(Virtual Server via IP Tunneling)也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与VS/NAT方式一样,只是它的报文转发方法不同,VS/TUN方式中,调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real Server的地域位置没有要求,可以和Director Server位于同一个网段,也可以是独立的一个网络。因此,在TUN方式中,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高。 VS/DR:即(Virtual Server via Direct Routing)也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与VS/NAT和VS/TUN中的一样,但它的报文转发方法又有不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。 ipvs的规则是什么呢:简单来讲它就是用来定义集群服务的,就是把监听在哪个套接字上的请求或者应用定义成集群服务,比如172.16.100.1:80定义成集群服务,而ipvs又会在这个集群服务定义一个或多个正真响应后端的服务器,因此当请求在INPUT的链上被匹配到之后被强行的转发。

根据上图LVS-DR实现过程及步骤:

不要等待机会,而要创造机会。

CentOS 6.5 LVS原理详解及DR的初步实现

相关文章:

你感兴趣的文章:

标签云: