负载均衡(Load Balance)、集群(cluster)和LVS模式(Linux Virtual Server)的DR、TUN、NAT、fullNAT,lvsfullnat


负载均衡(Load Balance)

提供故障转移,实现高可用 分摊到多个操作单元上进行执行,例如Web服务器、 FTP服务器、企业关键应用服务器和其它关键任务服务器等,共同完成工作任务 解决并发压力,提高应用处理性能,增加吞吐量,加强网络处理能力,提高网络的灵活性和可用性 安全防护,及负载均衡设备上做一些过滤,黑白名单等处理

集群(cluster)

集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。集群系统的主要优点:高可扩展性、高可用性、高性能、高性价比。通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。

负载均衡集群(LB:Load Balancing)

负载均衡集群中有一个分发器或者叫调度器( Director),它处在多台服务器的上面,分发器根据内部所定义的规则或调度方式从下面的服务器群中选择一个以此来响应客户端发送的请求。 基于 OSI 第四层: LVS( Linux Virtual Server) 基于 OSI 第七层: nginx、 HAProxy

高可用集群(HA:High Availability)

高可用集群是服务的可用性比较高,因为会有健康检查,所以当某一台服务器死机或挂掉后不会影响到我们的服务体验。其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断。一般来说我们集群中工作在前端(分发器)的服务器都会对我们的后端服务器做一个健康检查,如果发现我们服务器当机就不会对其在做转发。 衡量标准:可用性=在线时间/(在线时间+故障处理时间)
99%、 99.9%、 99.99%、 99.999%

高性能集群(HP:Hight Performance)

当某一个任务量非常大的时,我们做一个集群共同来完成这一个任务。这种处理方式我们称为并行处理集群,并行处理集群是将大任务划分为小任务,分别进行处理的机制。一般这样的集群用来科学研究与大数据运算等方面的工作。

三种集群之间的区别

负载均衡着重在于提供服务并发处理能力的集群 高可用以提升服务在线的能力的集群 高性能着重用于处理一个海量任务

四层负载均衡和七层负载均衡的区别

四层的本质是转发 七层的本质是代理

LVS模式

工作在TCP/IP协议的四层,其转发是依赖于四层协议的特征进行转发,由于其转发要依赖于协议的特征进行转发,因此需要在内核的TCP/IP协议栈进行过滤筛选,这就需要在内核的模块来完成,而这样的过滤转发规则又是由管理员进行定义。LVS是两段式的架构设计,在内核空间中工作的是”ipvs”, 而在用户空间中工作的,用来定义集群服务规则的是”ipvsadm”。这就很容易想到iptables,而LVS正好工作在iptables的input链上。

LVS的组成

ipvsadm:用于管理集群服务的命令行工具,工作于Linux系统中的用户空间。 ipvs:IP虚拟服务器(IP Virtual Server),简写为IPVS,为lvs提供服务的内核模块,工作于内核空间 (相对于是框架,通过ipvsadm添加规则,来实现ipvs功能)。

内核状态

kernel 2.6.x 已內建 LVS 模组 kernel 2.4.x 需打补丁 rhel5 预设安裝即可使用 LVS 模组, 另以 yum 安裝 ipvsadm 套件 Linux内核2.4.23之前的内核中模块默认是不存在的,需要自己手动打补丁,然后把此模块编译进内核才可以使用此功能。

LVS中每个主机IP地址的定义

VIP:Director用来向客户端提供服务的IP地址,也是DNS解析的IP RIP:集群节点(后台真正提供服务的服务器)所使用的IP地址 DIP:Director用来和RIP进行交互的IP地址 CIP:公网IP,客户端使用的IP

LVS的四种转发模式

DR:直接路由 Direct routing TUN:IP隧道 IP tunneling NAT:网络地址转换 Network address translation FullNAT:网络地址转换

DR

client -> vs -> Rs ->client 修改目标MAC 请求由LVS接受,由真实提供服务的服务器(RealServer, RS)直接返回给用户,返回的时候不经过LVS。 负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。 DR模式是性能最好的一种模式。 调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连。

TUN(隧道)

client ->vs ->Rs -> client 各集群节点可以跨越不同的网络,不用在同一个VLAN 调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个 IP 报文中,再将封装后的 IP 报文转发给选出的服务器 服务器收到报文后,先将报文解封获得原来目标地址为 VIP 的报文,服务器发现 VIP地址被配置在本 地的 IP 隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户

NAT

client -> vs -> Rs ->vs ->client 服务器可以运行任何支持 TCP/IP 的操作系统 只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。 伸缩能力有限, 当服务器结点数目升到 20 时,调度器本身有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。

FullNAT

抗攻击,跨vlan,需要重新编译内核 解决了跨VLAN的问题。采用这种方式,LVS和RS的部署在VLAN上将不再有任何限制,大大提高了运维部署的便利性。

调度算法

LVS 的负载调度算法 在内核中的连接调度算法上,IPVS 已实现了以下八种调度算法 轮叫调度(Round-Robin Scheduling )
(1)轮叫的方式依次将请求调度不同的服务器
(2)算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。 加权轮叫调度(Weighted Round-Robin Scheduling )
(1)解决服务器间性能不一的情况,
(2)按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服 务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。 最小连接调度(Least-Connection Scheduling )
(1)把新的连接请求分配到当前连接数最小的服务器。
(2)一种动态调度算法,它通过服务器当前所活跃的连接数来估计服
务 器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加 1;当连接中止或超时,其连接数减一。 加权最小连接调度(Weighted Least-Connection Scheduling)
(1)最小连接调度的超集,各个服务器用相应的权值表示其处理性能。
(2)服务器的缺省权值为1,系统管理员可以动态地设置服务器的权 值。
(3)加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。 基于局部性的最少链接(Locality-Based Least Connections Scheduling )
(1)简称LBLC算法,针对请求报文的目标 IP 地址的负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群中 客户请求报文的目标 IP 地址是变化的。
(2)假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和主存 Cache 命中率,从而整个集群系统的处理能力。
(3)LBLC调度算法先根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于其一半的工作负载,则用 “ 最少链接 ” 的原则选出一个可用的服务器,将请求发送到该服务器。 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
(1)简称 LBLCR算法,也是针对目标 IP 地址的负载均衡,目前主要用于 Cache集群系统。它与 LBLC 算法的不同之处是它要维护从一个目标 IP 地址到一组服务器的映射。
(2)LBLCR 算法先根据请求的目标 IP 地址找出该目标 IP 地址对应的服务器组;按 “ 最小连接 ” 原则从该服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载;则按 “ 最小连接 ” 原则从整个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服 务器从服务器组中删除,以降低复制的程度。 目标地址散列调度(Destination Hashing Scheduling)
(1)针对目标 IP 地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标 IP 地址映射到一台服务器。
(2)目标地址散列调度算法先根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。 源地址散列调度(Source Hashing Scheduling)
(1)源地址散列调度(Source Hashing Scheduling)算法正好与目标地址散列调度算法相反
(2)它根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
(3)它采用的散列函数与目标地址散列调度算法 的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标 IP 地址换成请求的源 IP 地址。
(4)在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。 

相关内容