LVS介绍

LVS介绍

LVS

	LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。
	现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
	使用LVS技术要达到的目标是:
		通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性,从而以低廉的成本实现最优的服务性能。
		以低廉的成本实现最优的服务性能。
	LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了,可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等。
	LVS是一套开源组件,用于实现负载均衡,其工作于内核空间,四层转发或四层路由,即在传输层转发。
	由于LVS工作在内核空间,突破了套接字数量限制,所以工作性能极强。
	若内核优化得当,经测试最高能并发转发400w条各种请求。

LVS体系架构

	最前端的为负载均衡层(loader balancer)
		由一台或多台负载调度器(director server)组成,LVS模块就安装在其上面,主要作用类似一个路由器,将用户请求分发给server array层的real server。
		director server上还安装着对real server服务的监控模块ldirectord,来检测各个real server的健康状态,在其不可用时在LVS路由表上删除,在其可用时在LVS路由表上重新加入。
	中间的服务器集群层(server array)
		由一组实际运行应用服务的机器组成,real server可以是web服务器、mail服务器、ftp服务器、dns服务器等中的一个或多个,real server之间通过LAN或分别在各地的WLAN连接。
	最底层的数据共享存储层(shared storage)
		由磁盘阵列等存储设备组成,是为所有的real server提供共享存储空间和内容一致性的存储区域。
		可采用集群文件系统来共享数据。
	总体来看
		负载调度器(director server)是整个LVS的核心,支持其的操作系统有Linux和Free BSD。

LVS的基本原理

	LVS根据请求报文的目标IP 和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。
	RS间可通过局域网或广域网连接。
	当用户的请求发送到虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。
	RS再将用户请求结构返回给用户。
	同请求包一样,应答包的返回方式也与包转发策略有关。
	LVS的这种结构对用户来说是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供的服务的RS群。
	LVS不需要打开文件,直接在内核转发,没有套接字(16位,65535个最大连接)的限制,不用维护套接字文件,不用维护套接字。

LVS的四种负载均衡模式

	NAT 模式:网络地址转换
	DR 模式:直接路由
	TUN模式:封装新IP头实现转发
	FULLNAT模式:修改请求报文的源和目标IP
	lvs-nat 与lvs-fullnat :请求和响应报文都经由Director
		lvs-nat :RIP 的网关要指向DIP,修改请求报文的目标IP, 多目标IP的DNAT(目标地址转换)
		lvs-fullnat :RIP 和DIP 未必在同一IP 网络,但要能通信,修改请求报文的源和目标IP
	lvs-dr 与lvs-tun :请求报文要经由Director,但响应报文由RS直接发往Client
		lvs-dr :通过封装新的MAC 首部实现,通过MAC 网络转发
		lvs-tun :通过在原IP 报文外封装新IP头实现转发,支持远距离通信

LVS的十种调度算法

	静态调度
		RR(Round Robin):轮询调度
		WRR:weight,加权轮询(以权重之间的比例实现在各主机之间进行调度)
		SH:source hashing,源地址散列。主要实现会话绑定,能够将此前建立的session信息保留了
		DH:Destination hashing:目标地址散列。把同一个IP地址的请求,发送给同一个server。
	动态调度
		LC(Least-Connection):最少连接
		WLC(Weighted Least-Connection Scheduling):加权最少连接。
		SED(Shortest Expected Delay):最短期望延迟
		NQ(never queue):永不排队(改进的sed)
		LBLC(Locality-Based Least Connection):基于局部性的最少连接
		LBLCR(Locality-Based Least Connections withReplication):带复制的基于局部性最少链接

LVS的优缺点

	LVS的优点是:
		1、抗负载能力强。
			是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
		2、配置性比较低。
			这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
		3、工作稳定。
			因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
		4、无流量。
			LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
		5、应用范围比较广。
			因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
	LVS的缺点是:
		1、软件本身不支持正则表达式处理,不能做动静分离。
			而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
		2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
posted @ 2018-02-23 10:21  shenxm  阅读(397)  评论(0编辑  收藏  举报