Lvs、ld及keepalived原理

一、lvs

Linux Virtual Server, Linux虚拟服务器 
它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且 调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。由于我们的负载调度技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)。 
为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。


1. 工作原理

这里写图片描述

上图所示,LVS可分为三部分: 
   Load Balancer这是LVS的核心部分,它好比我们网站MVC模型的Controller。它负责将客户的请求按照一定的算法分发到下一层不同的服务器进行处理,自己本身不做具体业务的处理。另外该层还可用监控下一层的状态,如果下一层的某台服务器不能正常工作了,它会自动把其剔除,恢复后又可用加上。该层由一台或者几台Director Server组成。 
   Server Array该层负责具体业务。可有WEB Server、mail Server、FTP Server、DNS Server等组成。注意,其实上层的Director Server也可以当Real server用的。 
   Shared Storage主要是提高上一层数据和为上一层保持数据一致。 
   


2. 四种负载均衡技术

NAT

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。 
优点:配置及管理简单。Director Server 和 Real Server 群组可以不在一个网段 
缺点:要求 Director Server 必须要有两块网卡 Director Server很容易成为整个集群的性能瓶颈(所有都数据经过这里) 
这里写图片描述

TUN

IP隧道模式,采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。 
优点: 性能介于 NAT 和 DR 模式之间 
Director Server 与 Real Server 可以在不同的网段内,即集群中的Real Server 可以在不同的城市 
缺点: 需要的Real Server 服务器的内核中,必须编译支持IP Tunnel这个选项 
这里写图片描述

DR

VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连 在同一物理网段上。 
优点:性能最好 
缺点:要求Director Server和所有的Real Server 必须在同一个网段中,不能实现集群的跨网段应用 
这里写图片描述

FULL-NAT

这里写图片描述
这里写图片描述 
在包从 LVS 转到 RS 的过程中,源地址从客户端 IP 被替换成了 LVS 的内网 IP。 
内网 IP 之间可以通过多个交换机跨 VLAN 通信。 
当 RS 处理完接受到的包,返回时,会将这个包返回给 LVS 的内网 IP,这一步也不受限于 VLAN。 
LVS 收到包后,在 NAT 模式修改源地址的基础上,再把 RS 发来的包中的目标地址从 LVS 内网 IP 改为客户端的 IP。 
Full-NAT 主要的思想是把网关和其下机器的通信,改为了普通的网络通信,从而解决了跨 VLAN 的问题。采用这种方式,LVS 和 RS 的部署在 VLAN 上将不再有任何限制,大大提高了运维部署的便利性

这里写图片描述


3. LVS 的负载调度算法

在内核中的连接调度算法上,IPVS 已实现了以下八种调度算法:

1)轮叫调度(Round­Robin Scheduling )

以轮叫的方式依次将请求调度不同的服务器,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2)加权轮叫调度(Weighted Round­Robin Scheduling )

根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3)最小连接调度(Least­Connection Scheduling )

是把新的连接请求分配到当前连接数最小的服务器。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。

4)加权最小连接调度(Weighted Least­Connection Scheduling)

是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。 
在集群系统中的服务器性能差异较大的情况下,调度器采用”加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

5)基于局部性的最少链接(Locality­Based Least Connections Scheduling )

是针对请求报文的目标 IP 地址的负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群中客户请求报文的目标 IP 地址是变化的。 
该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用”最少链接”的原则选出一个可用的服务 器,将请求发送到该服务器。

6)带复制的基于局部性最少链接(Locality­Based Least Connections with Replication Scheduling)

也是针对目标 IP 地址的负载均衡,目前主要用于 Cache 
集群系统。它与 LBLC 算法的不同之处是它要 维护从一个目标 IP 地址到一组服务器的映射,而 LBLC 算法维护从一个目标 IP 地址到一台服务器的映射。

7)目标地址散列调度(Destination Hashing Scheduling )

算法也是针对目标 IP 地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标 IP 地址映射到一台服务器。 
目标地址散列调度算法先根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

8)源地址散列调度(Source Hashing Scheduling)

正好与目标地址散列调度算法相反,它根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。


4. 实现原理

1)具体访问流程

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS被称为ip虚拟服务器,是运行在LVS下提供负载均衡功能的一种技术实现程序:ipvsadm.。是LVS集群系统的核心软件。它的主要作用是:安装在 Director Server(前端服务器)上,同时Director Server上虚拟出一个IP地址(VIP),用户必须通过这个虚拟的VIP地址访问服务。—–访问请求首先经过VIP到达负载均衡调度器,然后由 负载均衡调度器根据设定好的算法 从 Real Server 列表中选取一个服务节点响应用户请求。 
具体过程:访问请求—>VIP(由ipvsadm程序虚拟出来的)—>负载均衡调度器(根据设定好的算法进行选取)—>RS

2)关于vip地址

VIP 地址为调度器和服务器组共享,调度器配置的 VIP 地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把 VIP 地址配置在各自的 NonARP 网络设备上,它对外面是不可见的,只是用于处理目标地址为 VIP 的网络请求

3)什么是ARP协议

当主机需要发送一个数据到一个目的IP时,设备驱动程序并不能理解这个IP地址,但系统可以通过ARP协议将IP地址转换为网络地址,再传递给设备驱动程序发送出去 
ARP为地址解析协议,内核中保存有一个ARP表,里面保存有IP地址和MAC地址对应关系,使用arp命令可以查看主机的ARP表。

4)用iptables能不能实现arptables的功能呢?

当然不能。 
因为当需要发送一个数据包到未知目的MAC地址的时候,数据包完成网络层的封装,封装到数据链路层,因为不知道目的MAC地址,会触发ARP请求,请求目的IP地址的MAC地址。 
由此可见ARP协议是当数据包在数据链路层需要往外发送的时候体现它的作用的,而iptables只是工作在网络层的,对这个根本不能控制

二、ldirectord

1. 实现原理

用以LVS监控real server 节点的运行状态,当real server失效时,把它从虚拟服务器列表中删除,恢复是重新加入到列表。同时,它还能调用ipvsadm 自动创建LVS路由表。

三、keepalived

『操作环境:rhel6.5』 
由于ld仅具有健康检查的作用,而keepalived即可高可用,又可健康检查,为了避免冲突,用keepalived时将ld关掉

1. 实现原理

是类似于layer3,4&7交换机制的软件 
作用:主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现(即高可用)

1) 关于双机热备

通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。 
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。

2)VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议

keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。 
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。

VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协 同工作,共同构成一台虚拟路由器。

VRRP中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由 中会重新选举出一个主控路由,来继续工作,来保障不间断服务

本文系统环境如下: 
master :172.25.14.1 
backup:172.25.14.4 
vip:172.25.14.100

这里写图片描述

图解: 
节点A vm1 172.25.14.1 (主节点), 
节点B vm4 172.25.14.4(备用节点), 
虚拟IP(对外提供服务的IP 172.25.14.100)

在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。

当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。

3)原理介绍

  • keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
  • 当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去: 
    172.25.14.100 这个IP对应的MAC地址为节点A网卡的MAC地址 
    图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应172.25.14.100的MAC地址=节点A网卡的MAC地址。

  • 当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去: 
    172.25.14.100 这个IP对应的MAC地址为节点B网卡的MAC地址 
    图中的其它电脑如客户端会更新自己的ARP表,对应172.25.14.100的MAC地址=节点B网卡的MAC地址。

猜你喜欢

转载自blog.csdn.net/weixin_42167918/article/details/81294117
今日推荐