一、LVS集群通用架构图
负载 均衡层:位于整个集群系统的前端,由一个或多个负载调度器(Director server)组成。LVS核心模板IPVS安装在Director 服务器上,Director的主要功能类似于路由器。它包含为完成LVS功能而设置的路由表,通过这些路由表,用户的请求被分发到服务器的 阵列层中的应用服务器 阵列服务器]。同时,DirectorServer上要安装监控模块LdirectordforReal Server,用于监控每个RealServer服务的健康状态。当真正的 服务器不可用时,可以将其从LVS路由表中删除,并在恢复时重新加入。
服务器 阵列层:由一组实际运行应用服务的机器组成。真正的 服务器可以是Web服务器、邮件服务器、FTP服务器、DNS服务器、视频服务器中的一种或多种。每一台真正的 服务器都是通过分布在各地的高速局域网或广域网连接起来的。在实际应用中,Director服务器也可以作为真正的 服务器。
Hared 存储层:为所有真实 服务器提供共享存储空和内容一致性的存储区域,一般由磁盘阵列设备组成。,为了提供内容的一致性,数据一般可以通过NFS网络文件系统共享,但 NFS在繁忙的业务系统中表现不佳。这时可以采用集群文件系统,比如红帽的GFS文件系统,Oracle提供的OCFS2文件系统。
从整个LVS结构可以看出,导演服务器是整个LVS的核心。目前用于DirectorServer的 *** 作系统只有Linux和FreeBSD。Linux2.6内核完全内置LVS模块,无需任何设置即可支持LVS功能。
对于真正的服务器,几乎所有的系统平台,Linux,Windows,Solaris,AIX,BSD系列都可以很好的支持。
二。负载调度算法
负载均衡技术的实现方案有很多种,如基于DNS域名解析依次实现的方法、基于客户端调度访问的方法、基于应用层系统负载的方法、基于IP地址的方法等。在这些负载调度算法中,IP负载均衡技术的执行效率最高。
LVS 的IP负载均衡技术是通过IPVS模块实现的。IPVS是LVS集群系统的核心软件。它的主要作用是安装在Director 服务器上,同时在Director 服务器上虚拟一个IP地址。用户必须通过这个虚拟IP地址访问服务器。这个虚拟IP一般被称为LVSVIP,即虚拟 IP。首先,访问请求通过VIP到达负载调度器,然后负载调度器从真实服务器列表中选择一个服务节点来响应用户的请求。
用户的请求到达负载调度器后,调度器如何将请求发送给提供服务的真实服务器节点,真实 服务器节点如何将数据返回给用户,是IPVS实现的关键技术。IPVS实现负载均衡有三种方式,分别是NAT(FULL NAT)、TUN和DR,下面详细介绍。
三。灾难恢复模式
以下是DR模式的数据传输图:
DR 模式:即通过直接 路由的虚拟服务器,即通过直接路由技术实现虚拟服务器。这种连接调度和管理方法与前两种方法相同,但其消息转发方法不同。VS/DR通过重写请求消息的MAC地址 向真实服务器发送请求,真实 服务器直接向客户返回响应,从而避免了VS/TUN中的IP隧道开销。在三种负载调度方法中,该方法的性能最好。
以下是DR模式下IP包调度的流程图:
原理图简述:
DR 模式将消息直接路由到目标真实服务器。在DR模式下,调度程序根据负载情况和每个实际服务器的连接数来动态选择服务器。调度器不是修改目标IP地址和目标端口 ,也不是封装IP消息,而是将请求消息的数据帧的目标MAC地址改为真实服务器的MAC地址。然后,在服务器组的LAN上发送修改后的数据帧。因为数据帧的MAC地址 是真实服务器的MAC地址,而且是在同一个局域网。然后根据局域网的通信原理,真正的复位肯定是接收LB发来的数据包。真实服务器收到 发来的请求包时,解锁IP包头,看到目标IP是VIP。
此时,只有我们自己的IP与目标IP匹配才会被接收,因此我们需要在本地环回借口上配置VIP。另外,所有的网络接口都会响应ARP广播,但是集群中的所有其他机器都有这个VIP的lo接口,它们的响应会发生冲突。所以我们需要关闭真实服务器的lo接口的ARP响应。
然后真正的服务器做出请求响应,然后根据自己的路由信息把这个响应包发回给客户端,源IP地址是VIP。
灾难恢复模式总结:
1.通过修改调度器1b上的目的地MAC地址来转发数据分组。注意源地址还是CIP,目的地址还是VIP。
2.请求的消息经过调度器,而RS响应处理的消息不需要经过调度器LB,所以在并发访问较大的情况下(相对于NAT模式)使用效率非常高
3.由于DR模式通过MAC地址重写机制实现转发,所以所有RS节点和调度器LB只能在一个局域网内。
4.RS主机需要将VIP地址绑定到LO接口,配置ARP抑制。
5.RS节点的默认网关不需要配置为LB,而是直接配置为上级路由的网关,这样RS就可以直接退网。
6.由于DR模式下的调度器只重写MAC地址,调度器LB无法重写目标端口,所以RS服务器不得不使用与VIP相同的端口来提供服务。
四。NAT/全NAT模式
NAT 模式:通过网络地址 转换的虚拟服务器,即通过网络地址转换技术实现的虚拟服务器。当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)重写为所选择的 真实服务器地址,并将报文的目标端口改为所选择的真实服务器的对应端口,最后将报文请求发送给所选择的真实 服务器。服务器获取数据后,当真实的 服务器向用户返回数据时,需要再次通过负载调度器将报文的源地址和端口更改为虚拟IP地址和对应的端口,然后将数据发送给用户,完成整个负载调度过程。
以下是NAT模式IP包调度流程图:
示意图:
1.客户端请求数据,目标IP是VIP。
2.当请求的数据到达LB服务器时,LB根据调度算法将目的地址修改为RIP地址和对应的端口(这个RIP地址是根据调度算法得到的。)并将此连接记录在连接哈希表中。
3.数据包从LB服务器到达RS服务器webserver,然后webserver响应。web服务器的网关必须是LB,然后数据会返回到LB服务器。
4.收到RS返回的数据后,根据连接哈希表修改源地址为VIP,目的地址为CIP,对应端口80。那么数据将从1b到达客户端。
5.客户端只有收到VIP\DIP信息才能看到。
NAT模式的优缺点:
1.NAT技术要求LB重写请求消息和响应消息的地址。所以LB负载均衡调度器在网站访问量大的时候瓶颈很大,一般最多需要10-20个节点。
2.只需在LB上配置一个公共IP地址。
3.每个内部realserver服务器的网关地址必须是调度程序LB的内部网地址。
4.NAT模式支持IP地址和端口的转换。也就是说,用户请求的端口和真实服务器的端口可能不同。
完全NAT模式
完全NATT的基本原则:
全NAT向客户端请求VIP时,不仅替换包的dstip,还替换srcip的包装;但是,当VIP返回到客户端时,它也会替换srcip。
(1)首先,客户端向VIP发送请求包;;
(2)VIP收到包后,会根据LVS制定的LB算法选择一个合适的realserver,然后将包的DSTIP改为realserverIP;将资源ip更改为lvs群集的LBIP
(realserver收到这个包后,判断dstip是自己的,然后处理这个包,处理后把这个包发送给LVSLBIP。
(4)LVS收到此数据包后,将源ip更改为VIPIP,将源IP更改为客户端IP,并发送给客户端。
完整NAT模式的注意事项:
全NAT模式也不要求LBIP和realserverip在同一个网段;
与nat相比,fullnat有以下优点:保证RS返回的数据包可以返回LVS;;因为源地址是LVS->:不确定
全nat的正常性能比nat模式低10%,因为它需要更新源ip。
V.IP隧道模式
TUN :即通过IP隧道实现虚拟服务器 ,即通过IP隧道技术实现虚拟服务器。在VS/TUN模式下,调度器使用IP隧道技术将用户的请求转发给一个真实的服务器,这个真实的 服务器会直接响应用户的请求,而不经过前端调度器。另外,对真实服务器的地理位置没有要求,可以与Director 服务器位于同一个网段,也可以位于独立的网络中。因此,在TUN模式下,调度器只会处理用户的消息请求,从而大大提高了集群系统的吞吐量。
TUN的工作流程图如下:
它 与NAT模式的区别在于,它在LB和rs之间的传输不需要重写IP地址。相反,客户端请求数据包被封装在IP 隧道中,然后被发送到RS节点服务器。节点服务器收到后,解锁IP 隧道,然后响应。并且通过其自己的外联网地址直接将分组发送给客户,而不经过LB服务器。
原理图流程简述:
1.客户请求数据包,目的地址VIP被发送到LB。
2. LB接收客户请求包,用IP隧道封装。也就是在原来的头上加上IP Tunnel的头。然后是适当的realserver将根据LVS设定的LB算法进行选择;并将客户端发送的包 打包成新的IP包;新IP包的dst是真实服务器的IP。
3. RS节点服务器根据IP隧道报头信息接收请求分组。realserver收到这个包后,判断dstip 是自己的,然后解析包的dst是VIP;会检测Vip的IP地址是否绑定在我们的网卡上;如果是绑定的,这个包会处理,如果不是直接扔掉。 一般我们在realserver上绑定Vip的IP地址为lo:0,这样就可以处理客户的请求包,并对其进行响应。
4.处理完响应后,RS服务器使用自己的公共网络线路将此响应数据包发送到客户端。IP地址是VIP地址。
IP隧道模式注意事项:
隧道模式必须在所有realserver机器上绑定VIP的IP地址。
隧道模式VIP->:realserver的包通信是通过隧道模式的,内网和外网都可以通信,所以lvsvip和realserver不需要在同一个网段。
隧道模式realserver将直接向客户端发送数据包,而不是lvs。
隧道模式是隧道模式, *** 作维护比较困难,一般不使用。
六。LVS负载调度算法
Lvs的调度算法决定了如何在集群节点之间分配工作负载。当directorscheduler收到客户端访问VIP上的群集服务的入站请求时,directorscheduler必须决定哪个群集节点应该处理该请求。Directorscheduler使用的计划方法基本上分为两类:
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr
为LVS调度算法选择生产环境:
1、一般网络服务,如www、mail、mysql等常用的LVS调度算法有:
A.基本轮询调度rr
B.加权最小连接调度
C.加权轮询调度
2.基于局部性的lblc和带复制的lblcr主要适用于web缓存和DB缓存。
3.源地址哈希调度sh和目的地址哈希调度DH可以在防火墙集群中合并,可以保证整个系统唯一的入口和出口。
在实际中,这些算法的应用范围非常广泛,所以最好参考一下内核中连接调度算法的实现原理,然后根据具体的业务需求进行合理的选择。
本文来自“http://ixdba.blog.51cto.com/2895551/1767494.艾薇Linux”博客,请保留这个来源
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)