三层结构
Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。
Server Array层:由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。
Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Red hat的GFS文件系统,oracle提供的OCFS2文件系统等。
三种模式
1、Direct Route
ld接收到req包,选择负载较轻的rs,将req包的目的mac地址改成选中的rs机器mac,rs机器收到req包,看到dst ip是自己的ip(这里要求rs都配置vip),处理请求,将结果包直接返给client。
约束条件:
(1)ld、rs必须同网段
(2)rs必须绑定vip的ip
优点:
(1)回包不经过ld,效率有提升
缺点:
(1)暴露后端rs的ip,有安全风险
2、NAT/ 淘宝的FULL NAT
NAT模式:ld收到req包,选择负载较轻的rs,将req包的dst ip改成选中的rs的ip,rs机器收到req包,看到dst ip是自己的ip,处理请求,处理完后将回包发给ld, ld收到回包后把src ip改成ld的VIP,dst ip改成 client ip然后发送给client。
优点:
(1)ld、rs不必同网段
(2)不会暴露rs的ip
缺点
(1)回包经过ld,有瓶颈
(2)ld改写回包的dst ip,src ip,有时间损耗
淘宝的FULL NAT模式:在NAT模式基础上,既修改req包的dst ip为选中的rs的ip,也修改req包的src ip为lvs 集群的LB IP,其余步骤一致。
FULL NAT模式在一定程度上防止syncflood攻击。但由于需要修改req包的src ip,性能损耗比NAT下降10%。
3、TUNNEL
1> client发送req包到LVS服务器的VIP上。
2> VIP按照算法选择后端的一个rs,并将记录一条消息到hash表中,然后将client的req包封装到一个新的IP包里,新IP包的目的IP是rs的ip,然后转发给rs。
3> rs收到包后,解封装,取出client的req包,发现他的目的地址是VIP,而rs发现在自己的lo:0口上有这个IP地址,于是处理client的请求,然后将relpy这个req包直接发给client。
4>该client的后面的req包,LVS直接按照hash表中的记录直接转发给rs,当传输完毕或者连接超时,那么将删除hash表中的记录。
约束条件:
(1)TUNNEL 模式必须在所有的realserver 机器上面绑定VIP的IP地址
性能比较
因为DR模式 TP TUNELL 模式都是在package in 时经过LVS ;在package out是直接返回给client;所以二者的性能比NAT 模式高;但IP TUNNEL 因为是TUNNEL 模式比较复杂,其性能不如DR模式;FULL NAT 模式因为不仅要更换 DST IP 还更换 SOURCE IP 所以性能比NAT 下降10%
所以,4中模式的性能如下:DR --> IP TUNNEL --->NAT ----->FULL NAT
hello
参考:
http://blog.csdn.net/caoshuming_500/article/details/8291940