Lvs
原理及负载均衡ipvs三种机制、调度、
简介:
Lvs
负载均衡软件、是一位中国人发明的、这个软件、章文嵩开发的软件。
此软件是在linux内核2.4前、先编译一下内核、要让linux内核支持lvs此软件、在2.4内核以后就不用了。
体系与结构:
Lvs
架构服务器分三个层次:负载均衡层、(load balancer)服务器群集层、(server array)数据共享层(shared storage)
拓补图:
在前端:负载均衡层、用户想访问数据共享的东西,那这个负载均衡器就像是台路由器,将外来的用户请求转发到服务集群组、而这些服务集群组可以是web服务器、也可以使dns服务器、ftp服务器……而在LAN还是在WAN负载均衡调度器是可以兼容不同的角色。
而数据共享层、必须要和共享出来的数据内容保持一致性的存储区域、在物理上、一般有磁盘阵列设备组成、为了就是保持内容一致性、在linux系统上、一般可以通过NFS网络共享文件系统共享数据的、但在业务繁忙时、性能并不是很好、此时可以采用集群文件系统、例如rhthat的gfs文件系统、oracle提供的ocfs2文件系统等。
LVS
集群的特点:
IP
负载均衡与负载调度算法:
在lvs的在负载均衡技术上、ipvs这个模块作用是在安装在最前端的服务器上的、(这个ipvs模块是lvs集群的核心软件),作用是虚拟出一个ip地址出来、用户必须通过此虚拟ip地址来通过它在才能访问。
首先用户通过访问虚拟ip地址来到了负载均衡调度器、从而在通过负载均衡调度器(注:的真实ip地址访问)服务器群集列表里、选出一个服务节点响应用户请求、在这过程中、ipvs实现负载均衡机制有三种、分别是、NAT 、TUN、DR、。
Ipvs
的三种技术:vs/NAT (Virtual Server via Network Address Translation) (注:网络地址转换)
1、
就是用户在访问时、先访问的虚拟ip地址、然后通过vs/nat转换成、真实的服务器ip地址和真实的相应的端口、从而访问数据后、在经过负载均衡调度器、在然后vs/nat在把服务器真实ip地址、及相应的端口、转换层虚拟ip地址、及端口号、返回给访问的用户。
拓补图:
2、
VS/TUN (Virtual Server via IP Tunneling)
TUN
和nat一样、而不一样的地方就是、它直接响应到访问的用户、
首先用户想访问共享的数据、先经过负载均衡调度器、(这里与nat一样)然后经nat转换成真实的ip地址和端口访问、并且不响应用户访问到了所需要的东西、然而不是像nat那样原路返回、而是它直接跟用户打交道、(注:这里调度器采用IP隧道技术将用户请求转发到某个Real Server)直接把用户想访问的东西直接交给用户、不需要在转换成虚拟ip地址和端口、不在经过调度器、并且返回给用户,这个VS/TUN、这一点不需要、而且VS/tun优点就是、它可以分布在不同的地域位置没有要求、也可以和位和负载均衡调度器在一个网段下、也可以是一个独立的网络、所以再。TUN方式中,调度器只处理用户的报文求、这样集群系统的吞吐量就大大提高了。
拓补图:
Vs/DR
:(Virtual Server via Direct Routing)
这项技术和nat tun的报文请求时一样的
首先用户访问先找到了服务器负载均衡调度器、通过转换访问到了共享的数据、然而不一样的就是、在负载均衡调度器vs/DR 通过改写请求报文的mac地址,在将请求发送到了集群服务器、最后通过访问到了数据直接回给访问的用户、vs/dr免去了VS/tun中的ip隧道开销。
而这种方式是、这三种负载调度机制中性能最高最好的了。但是它必须要与要求Director Server与Real Server在一个网段下。
拓补图:
负载均衡调度算法:
Ipvs
实现如下八种算法、最常用的就是四种、
1、
轮叫调度:(Round Robin)
有四个用户想访问共享的数据、而集群当中的服务器、有很多,因为考虑到了负载均衡,这种轮叫调度就是说、第一位用户叫张三、访问的一个集群服务器第一台(注:不一定非个是一定台也许是另一台服务器)、就是1:1的调度
那下一个用户想访问时,如用户是李四、那调度的不是第一台集群服务器了、而是另一台集群服务器 1:1调度,而当用户不只这些时就会又从头开始1:1的调度了
这就是轮叫调度算法、这种算法平等的对待每一台集群服务器。
优点:访问速度快。
缺点:不管服务器上实际的负载状况和连接状态、
加权轮叫调度(Weighted Round Robin)
加权轮叫调度算法就是根据、集群服务器的不同的处理能力来调度访问请求的、可以对每一它群集服务器设置不同的调度权值;从而让那些性能好的集群服务器处理更多的、用户访问、那些性能较差的集群服务器调度权值可以设置低一些,这样可以从份的利用好服务器的资源、同时调度器还可以监听集群服务器的负载情况、并动态地调整器权值。
最少连接调度:(Least Connections)
就是说、每一台集群服务器上的用户访问的连接数那台最少、那么调度算法就会自动的连接那台用户访问连接数最少的那台集群服务器、
加权最少连接调度(Weighted Least Connections)
是说:加权最少连接调度、是最少连接调度的扩展版、每个集群服务器可以用相应的权值表示改集群服务器的其处理能力、而这时系统管理员可以动态的设置相应的权值、缺省权值为1.、 而加权的最小连接调度在分配新连接请求时尽可能是服务器与连接数和其权值成正比。
其另四种调度算法分别为、基于局部性的最少连接、带复制的基于局部性最少连接、目标地址散列和源地址散列。
高可用性:HA三种工作方式
(1)主从方式 (非对称方式)
工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享
存储系统解决。
(2)双机双工方式(互备互援)
工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享
存储系统中。
(3)
集群工作方式(多服务器互备方式)
工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。
高可用性:因为它是基于linux内核的应用软件、因此具备了很高的处理性能、及时出现故障也不会影响整个系统的正常使用、与此可用并发链接上百万个并发链接、如集群配置千兆网卡、则系统的吞度量可接近10gbits/S每秒。
高可靠性:在教育、公司、大型企业、在过国外也有很多公司普遍lvs做的负载均衡系统、运行时间长、…… 这就说明了lvs的高可用性和高可考性了。
Lvs
的使用环境:
在各个平台下的系统都支持lvs
但是支持大多数的
TCP
和
UDP
协议,支持
TCP
协议的应用有:
HTTP
,
HTTPS
,
FTP
,
SMTP
,,
POP3
,
IMAP4
,
PROXY
,
LDAP
,
SSMTP
等等。支持
UDP
协议的应用有:
DNS
,
NTP
,
ICP
,视频、音频流播放协议等。
在此文档有不对的地方请指出、好修改、谢谢。