转载:https://www.jianshu.com/p/7a063123d1f1,https://blog.51cto.com/huanglianfeng/1604828
本想直接放入“链接”,还是自己整理一下,加深理解。
一、LVS是什么?
LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器,是一个虚拟服务器集群。它是我们国家的章文嵩博士的一个开源项目。
在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。
二、LVS能干什么?
LVS主要用于多服务器的负载均衡。
它工作在网络层,可以实现高性能,高可用的服务器集群技术。
它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。
它易用,配置非常简单,且有多种负载均衡的方法。
它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。
另外可扩展性也非常好。
三、工作原理
LVS术语
Director Server:调度服务器,将负载分发到RealServer的服务器上
Real Server:真实服务器,真正提供应用服务的服务器
VIP:虚拟IP地址,公布给用户访问的IP地址
RIP:真实IP地址,集群节点上使用的IP地址
DIP:Director连接到RealServer的IP地址
如上图,LVS可分为三部分:
1、Load Balancer,前端负载均衡层
这是LVS的核心部分,它好比我们网站MVC模型的Controller。
由一台或多台负载调度器(Director Server)组成,LVS模块就安装在调度器上。
调度器的作用类似于路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Array Server层的应用服务器(真实服务器)。
同时在调度器上,还要安装对真实服务器服务的监控模块Ldirectord,Ldirectord模块用于检测各个真实服务器的健康状况,在真实服务器不可用时把它从LVS路由表剔除,恢复时重新加入。
2、Server Array,中间服务器群组层
由一组实际运行的应用服务器/真实服务器组成,真实服务器(Real Server)可以是web服务器,mail服务器,DNS服务器,FTP服务器,视频服务器中的一个或多个。
每个真实服务器之间可以通过高速LAN或分布在各地的WAN相连接。
注意,其实上层的Director Server也可以当Real server用的。
3、Shared Storage,底层数据共享存储层
为所有Real Server提供共享存储空间和内容一致性的存储区域。
在物理上,一般由磁盘阵列设备组成,为了提供内容一致性,一般通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能不是很好,此时可以采用集群文件系统,例如Red Hat的GFS文件系统,oracle提供的OCFS2文件系统。
四、负载均衡机制
前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。
LVS的通过控制IP来实现负载均衡。IPVS(IP Virtual Server)是其具体的实现模块。
IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如果返回给客户端数据等等。
IPVS为此有三种机制:
1.VS/NAT(Virtual Server via Network Address Translation),网络地址翻转技术实现虚拟服务器
当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给RealServer。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。
2.VS/TUN(Virtual Server via IP Tunneling),IP隧道技术实现虚拟服务器
它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。
3.VS/DR(Virtual server via Direct Routing),直接路由技术实现虚拟服务器
跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。
五、负载调度算法
前面我们都知道Director Server要选择不同的Real server,那么它具体的如果选择Real Server以达到负载均衡的呢,IPVS实现了八种调度方法,具体算法可以查看官网或者百度,这里就不一一列出了。官网:www.linuxvirtualserver.org。