Linux LVS集群技术

LVS集群概述

1、集群概念

1.1、介绍

集群是指多台服务器集中在一起,实现同一业务,可以视为一台计算机。多台服务器组成的一组计算机,作为一个整体存在,向用户提供一组网络资源,这些单个的服务器就是集群的节点。

特点:

1.高性价比

通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级计算机相比具有更高的性价比

2.可扩展性

集群的性能不限于单一的服务实体,新的服务实体可以动态的加入到集群,从而增强集群的性能

3.高可用性

如果集群某个节点发生故障,这台节点上面运行的服务,可以被其他服务节点接管,从而增强集群的高可用性。

4.负载均衡

负载均衡能把任务比较均匀的分布到集群环境下的计算和网络资源,以便提高数据吞吐量

5.透明性

多个独立计算机组成的松耦合集群系统构成一个虚拟服务器。用户或客户端程序访问集群系统时,就像访问一台高性能,高可用的服务器一样,集群中一部分服务器的上线,下线不会中断整个系统服务,这对用户也是透明的

6.可管理性

整个系统可能在物理上很大,但是集群系统易管理,就像管理一个单一映像系统一样。在理想状况下,软硬件模块的插入能做到即插即用

1.2、类型

负载均衡集群(Load Balance Cluster)

负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。

负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。

Load Balancing负载均衡(LB),不同节点之间相互独立,不共享任何资源;通过一定算法将客户端的访问请求平分到群集的各个节点上,充分利用每个节点的资源。负载均衡扩展了网络设备和服务器带宽,增加吞吐量,加强网络数据处理能。

高可用集群(High Availability Cluster)

常见的就是2个节点做成的HA集群,有很多通俗的不科学的名称,比如"双机热备", "双机互备", "双机"。

高可用集群解决的是保障用户的应用程序持续对外提供服务的能力。

High availability Cluster高可用群集(HAC) ;主要用于高可用解决方案的实现,节点间以主备形式,实现容灾;在大型故障(宕机,服务器故障)的情况下实现快速恢复,快速提供服务。

高可用群集可实现以下三种方式:

主从方式:主机工作,备机监控。此方式不能有效的利用服务器资源。

互为主从:两服务器同时在线,一台服务器故障可切换到另一台上。此 方式有效的利用服务器资源,但当服务器故障时候,将导致一台服务器上运行多个业务。

多台服务器主从:大部分服务器在线使用,小部分监控;若有部分服务器故障,可切换到指定的小部分服务器上。此方式为前两种方式的综合。然后多台服务器群集,也增加了管理的复杂度。

科学计算集群(High Performance Computing Cluster)

简称HPC集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力。

并行计算或称平行计算是相对于串行计算来说的。并行计算的能力的目的是提高计算速度。

并行计算分为时间计算和空间计算:

时间计算既是流水线技术,一个处理器分为多个单元,每个单元负责不同任务,这些单元可并行计算。

空间计算利用多个处理器并发的执行计算。目前PC机的计算能力越来越强,将大量低廉的PC机互联起来,组成一个"大型计算机"以解决复杂的计算任务。

高性能计算集群采用将计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域。

HPC集群特别适合于在计算中各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果会影响到其它节点计算结果的情况。

2、LVS介绍

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统LVS简单工作原理为用户请求LVS VIP,LVS根据转发方式和算法,将请求转发给后端服务器,后端服务器接收到请求,返回给用户。对于用户来说,看不到Web后端具体的应用。

LVS(Linux Virtual Server)是基于Linux内核的四层负载均衡解决方案,通过将多台服务器组成虚拟服务集群,实现高性能、高可用的网络服务。其核心组件包括:

  • Director:负载均衡调度器,接收客户端请求并分发到后端 Real Server(调度器)
  • RS (Real Server):实际处理请求的后端服务器(真实服务器)
  • VS (Virtual Server): 虚拟服务器,负责调度
  • VIP (Virtual IP):对外服务的虚拟IP地址
  • RIP (Real IP):后端服务器的真实IP地址
  • DIP (Director IP):VS内网的IP 代理服务器的 内网ip
  • CIP (Client IP):客户端源IP地址

3、LVS和nginx区别

  • LVS比nginx具有更强的抗负载能力,性能更高,对内存和cpu资源消耗低。
  • LVS工作在网络层,具体流量由操作系统内核进行处理,nginx工作在应用层,可针对http应用实施一些分流策略。
  • LVS安装配置比较复杂点,网络依赖性较大,稳定性高,lvs不支持正则表达式,不能实现动静分离操作。
  • LVS使用的协议范围广, Nginx 仅支持 HTTP、HTTPS、Email 协议,适用范围小。

(五)、LVS调度算法

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态分为两种:

  1. 静态算法(不考虑RS负载)

RR(round robin,轮询):将收到的访问请求按照顺序轮流分配给群集中的各节点,均等地对待每台服务器,而不管服务器实际的连接数和系统负载。

WRR(weight round robin,加权轮询):根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务并且分配的请求越多,这样可以保证性能高的节点承担更多请求。

SH(source hashing,源地址散列算法(HASH)):根据请求来源的IP地址进行Hash计算,得到后端服务器,这样来自同一个IP的请求总是会落到同一台服务器上处理,以致于可以将请求上下文信息存储在这个服务器上。

  1. 动态算法(基于RS负载状态)

LC(leash-connection,最少连接):根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式可以更好地均衡负载。简单算法:active * 256 + inactive (谁的小选谁)

WLC(加权最少连接):在服务器节点的性能差异较大的情况下,调度器可以根据节点服务器负载自动调整权重,权重较高的节点将承担更大比例的活动连接负载。 简单算法:(active * 256 + inactive) / weight(谁的小选谁)

SED(最少期望延迟):优化高权重节点的初始连接分配。Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接 ;

NQ(never queue,永不排队):Never Queue,第一轮均匀分配,后续SED。

LBLC(基于局部性的最少连接 )

不仅考虑全局的服务器负载,还考虑服务器所在局部的负载情况,从而实现更细致的负载均衡。

LBLCR(基于局部性的带复制功能的最少连接)

在LBLC的基础上,当某个服务器过载时,可以选择复制流量到其他服务器,以平衡负载。

LVS工作模式

lvs****软件相关信息

程序包:ipvsadm
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm

lvs****集群中的增删改

1.管理集群服务中的增删改
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A #添加
-E #修改
-t #tcp服务
-u #udp服务
-s #指定调度算法,默认为WLC
-p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-f #firewall mask 火墙标记,是一个数字
2.管理集群中RealServer的曾增删改
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]
-a #添加realserver
-e #更改realserver
-t #tcp协议
-u #udp协议
-f #火墙 标签
-r #realserver地址
-g #直连路由模式
-i #ipip隧道模式
-m #nat模式
-w #设定权重
-Z #清空计数器
-C #清空lvs策略
-L #查看lvs策略
-n #不做解析
--rate :输出速率信息

1、基于NAT的LVS模式负载均衡

NAT(network address translation) 网络地址转换,其主要原理是修改数据报头,使得位于企业内部的私有ip地址可以访问外网,以及外部用户可以访问位于公司内部的私有的ip主机。

LVS调度器中有一个连接Hash表,该表会记录连接请求及其转发信息,当同一个连接下一个数据包发送给调度器时,该Hash表可以直接找到之前连接的记录,并根据记录信息选出相同真实服务器及其端口信息。

1.1、工作原理

  1. 当用户的请求到达调度器时,请求报文会先到内核空间的PREROUTING链上。此时报文的源IP为CIP,目标IP为VIP
  2. PREROUTING检查发现数据包的目标IP是本机,就将数据包送至INPUT链。
  3. IPVS工作在INPUT链上,当数据包抵达INPUT链后,IPVS会检查数据包所请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器RIP,然后将数据包送往 POSTROUTING链。此时报文的源IP为CIP,目标IP为RIP。
  4. POSTROUTING链通过选路,将数据包转发给Real Server
  5. Real Server对比发现目标IP是自己,就会接受这个请求报文,开始构建响应报文发回给调度器。源IP为RIP,目标IP为CIP
  6. 调度器在响应客户端前,会将报文的源IP地址修改为自己的VIP,然后响应给客户端。此时报文的源IP为VIP,目标IP为CIP

1.2、NAT模式特性

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发

  • RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
  • 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
  • 支持端口映射,可修改请求报文的目标PORT
  • VS必须是Linux系统,RS可以是任意OS系统

1.3、NAT的优缺点

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。

缺点:伸缩能力有限,当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢。

2、基于TUN的LVS负载均衡(不常用)

IP 隧道:IP Tunnel,简称:TUN 模式,采用开放式的网络结构,负载调度器作为客户机的访问入口,各节点通过各自的 Internet 连接直接回应给客户机,而不经过负载调度器,服务器节点分散在互联网中的不同位置,有独立的公网 IP 地址,通过专用 IP 隧道与负载调度器相互通信。

2.1、实现原理

  1. 在原有的ip报文外在封装多一层的ip首部,内部ip首部(原地址为cip,目标ip为vip),外层ip首部原地址为dip,.目标地址为rip
  2. 客户端发送数据包经过网络后到 LVS 网卡,数据包源 IP 为 CIP,目的 IP 为 VIP。
  3. 进入 PREROUTING 链后,会根据目的 IP 去查找路由,确定是否为本机 IP,数据包将转发至 INPUT 链中,到 LVS,源 IP 和 目的 IP 不变。
  4. 到 LVS 后,通过目的 IP 和目的 PORT 查找是否为 IPVS 服务,如是 IPVS 服务,将会选择一个 RS 后端服务器, 源 IP 为 DIP,目标 IP 为 RIP,数据包将会转发至 OUTPUT 链中。
  5. 数据包根据路由信息到达 LVS 网卡,发送至路由器网关,最终到达后端服务器。
  6. 后端服务器收到数据包后,会拆掉最外层的 IP 地址后,会发现还有一层 IP 首部,源 IP 为 CIP,目的 IP 为 VIP,TUNL0 上配置 VIP,查找路由后判断为本机 IP 地址,将会发给用户空间层的应用程序响应后 VIP 为源 IP,CIP 为目的 IP 数据包发送至网卡,最终返回至客户端用户。
2.2、TUN模式特性

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)。

2.3、 TUN模式的特点

  • 单臂模式,LVS 负载压力小。

  • 数据包修改小,信息完整性高。

  • 可跨机房。

  • 请求报文要经由Director,但响应不能经由Director 。

  • 不支持端口映射

  • RS的OS须支持隧道功能

  • RS的网关一般不能指向DIP

  • DIP, VIP, RIP都应该是公网地址

2.4 、TUN模式的缺点

缺点:

  • 不支持端口映射。

  • 需在 RS 后端服务器安装模块(ipip)及配置 VIP。

  • 隧道头部 IP 地址固定,RS 后端服务器网卡可能会不均匀。

  • 隧道头部的加入可能会导致分片,最终会影响服务器性能。

3、基于DR的LVS负载均衡

直接路由:Direct Routing,简称 DR 模式,采用半开放式的网络结构,与 TUN 模式的结构类似,但各节点并不是分散在各个地方,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道。它是最常用的工作模式,因为它的功能性强大。

3.1、DR 实现原理

  1. 当用户诸求到达Director server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP。
  2. PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链。
  3. IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址。
  4. 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real server。
  5. RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过10接口传5、送给eth0网卡然后向外发出。此时的源IP地址为VIP,目标IP为CIP。
  6. 响应报文最终送达至客户端。

4、full net模式

4.1full net工作原理

fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发
CIP --> DIP
VIP --> RIP

4.2、full net模式的特点

1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP
2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client
3.请求和响应报文都经由Director
4.支持端口映射

IPVS模块

1、IPVS的介绍

IPVS基本上是一种高效的Layer-4交换机,它提供负载平衡的功能。当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查看报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS不用检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。

2、IPVS的工作原理

IPVS是LVS的关键,因为LVS的IP负载平衡技术就是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。

LVS的本身分成了两个部分,第一部分是工作在内核空间的一个IPVS的模块(工作在Netfilter框架的input链上),其实LVS的功能都是IPVS模块实现的,第二部分是工作在用户空间的一个用来定义集群服务的一个工具ipvsadm, 这个工具的主要作用是将管理员定义的集群服务列表传送给工作在内核空间中的IPVS模块。

3、ipvsadm命令

核心功能:

  • 集群服务管理:增、删、改
  • 集群服务的RS管理:增、删、改
  • 查看

命令参数:

复制代码
管理集群服务 
ipvsadm -A|E -t(tcp)|u(udp)|f(防护墙标签) \
 service-address(集群地址) \ 
[-s scheduler(调度算法)] \ 
[-p [timeout]] \ 
[-M netmask] \ 
[--pepersistence_engine] \ 
[-b sched-flags] 
ipvsadm -D -t|u|f service-address 删除 
ipvsadm --C 清空 
ipvsadm --R 重载 
ipvsadm -S [-n] 保存 

管理集群中的real server 
ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-w weight](权重) 
ipvsadm -d -t|u|f service-address -r server-address 删除RS 
ipvsadm -L|l [options] 查看rs
ipvsadm -Z [-t|u|f service-address] 清楚计数器

pvs规则:/proc/net/ip_vs
ipvs连接:/proc/net/ip_vs_conn

相关推荐
望获linux3 分钟前
【实时Linux实战系列】Linux 内核的实时组调度(Real-Time Group Scheduling)
java·linux·服务器·前端·数据库·人工智能·深度学习
云宏信息4 分钟前
【深度解析】VMware替代的关键一环:云宏ROW快照如何实现高频业务下的“无感”数据保护?
服务器·网络·数据库·架构·云计算·快照
MC丶科14 分钟前
【SpringBoot常见报错与解决方案】端口被占用?Spring Boot 修改端口号的 3 种方法,第 3 种 90% 的人不知道!
java·linux·spring boot
江公望28 分钟前
ubuntu kylin(优麒麟)和标准ubuntu的区别浅谈
linux·服务器·ubuntu·kylin
Lynnxiaowen29 分钟前
今天我们开始学习python语句和模块
linux·运维·开发语言·python·学习
生态笔记1 小时前
PPT宏代码
linux·服务器·powerpoint
mucheni1 小时前
迅为RK3588开发板Ubuntu 系统开发ubuntu终端密码登录
linux·运维·ubuntu
skywoodsky1 小时前
Ubuntu 24.04环境下的挂起转休眠
linux
小云数据库服务专线1 小时前
GaussDB 应用侧报Read timed out解决方法
linux·服务器·gaussdb
放弃幻想_1 小时前
S4和ECC或者不通CLIENT,不通HANA服务器互相取数
服务器·数据库·sap·abap·abap sap