负载均衡LVS工作模型

简介: 一、集群概念二、LVS介绍三、Lvs集群的类型四、几种常见的lvs集群模式

负载均衡LVS工作模型

 

 

目录:

一、集群概念

二、LVS介绍

三、Lvs集群的类型

四、几种常见的lvs集群模式

 

 

 

一、集群概念


Cluster概念

1.    系统扩展方式︰

Scale UP:向上扩展,增强(优化物理设备)

Scale Out :向外扩展,增加设备,调度分配问题,Cluster

 

2.    Cluster:集群为解决某个特定问题将多台计算机组合起来形成的单个系统

 

3.Linux Cluster类型:

Ø  LB : Load Balancing,负载均衡

Ø  HA : High Availiablity,高可用(如MHA),SPOF ( single Point Of failure )

MTBF:Mean Time Between Failure平均无故障时间

MTTR:Mean Time To Restoration ( repair )平均恢复前时间

A=MTBF/ (MTBF+MTTR)(0,1): 99%,99.5%99.9%,99.99%,99.999%

 

4.HPC : High-performance computing,高性能www.top500.org

 

5.分布式系统︰

分布式存储︰云盘

分布式计算:hadoop ,Spark

 

 

Cluster分类

6.LB Cluster的实现


7.硬件

F5 Big-IP

Citrix NetscalerA10 A10

 

8.软件

lvs : Linux Virtual Server

nginx:支持七层调度

haproxy:支持七层调度

ats : apache traffic server , yahoo捐助

perlbal : Perl 编写

 

9.基于工作的协议层次划分

 

10.传输层(通用) :DPORT

LVS :

nginx : stream

haproxy : mode tcp

 

11.应用层(专用)︰针对特定协议,自定义的请求模型分类

proxy server :

http : nginx, httpd, haproxy(mode http),...fastcgi : nginx, httpd, ...

mysql : mysql-proxy,..

pound      

       

Cluster相关

1.会话保持:负载均衡

(1) session sticky :同一用户调度固定服务器

Source IP : LVS sh算法(对某一特定服务而言)

Cookie

(2) session replication:每台服务器拥有全部session

session multicast cluster

(3) session server : 专门的session服务器

Memcached . Redicl

 

2.HA集群实现方案

keepalived:vrrp协议

ais:应用接口规范

heartbeat

cman+rgmanager(RHCS)

coresync_pacemaker  

 

 

二、LVS介绍


1.LVS : Linux Virtual Server,负载调度器,集成内核

官网: http://www.linuxvirtualserver.org/

vs: Virtual Server,负责调度'

RS: Real Server,负责真正提供服务

L4∶四层路由器或交换机

 

2.工作原理:VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS

 

3.iptables/netfilter :

iptables :用户空间的管理工具netfilter :内核空间上的框架

流入:PREROUTING --> INPUT流出:OUTPUT --> POSTROUTING

转发:PREROUTING -->FORWARD --> POSTROUTING

DNAT︰目标地址转换;PREROUTING

/**

*DNAT可以实现将目标地址进行转换,适用场景是

*互联网发出的请求去访问企业内部,在访问内部是,访问的

*先后顺序是先去访问连接公网的地址,然后再将其请求转换

*到内网的私有地址,以此来对外提供服务。

 

鉴于DNAT本身*的一对一的特性,无法将请求分配到多台服务器上,只能实

*一对一转换。而vs则可以实现根据请求的报文的目标ip

*目标协议及端口将其调度转发至某RS,根据调度算法来挑选*RS

**/

 

4.LVS : Linux Virtual Server,负载调度器,集成内核

官网: http://www.linuxvirtualserver.org/

Vs: Virtual Server,负责调度

RS: Real Server,负责真正提供服务

L4︰四层路由器或交换机

 

5.工作原理:VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS

 

 

6.iptables/netfilter :

iptables :用户空间的管理工具

netfilter :内核空间上的框架

流入:PREROUTING --> INPUT流出:OUTPUT --> POSTROUTING

转发∶PREROUTING -->FORWARD -->POSTROUTING

DNAT:目标地址转换;PREROUTING

//DNAT实现的单节点转换(一对一转换),无法做到调度功能。

 

 

LVS概念

1.lvs集群类型中的术语

Ø  vs : Virtual Server , Director Server(DS)

Dispatcher(调度器)Load Balancer

//Virtual Server(虚拟服务器),Director Server(DS) //Dispatcher,Load Balancer这些指的都是前面的vs

//调度器。

Ø  RS : Real Server(lvs), upstream server(nginx)

backend server(haproxy)

/**

*整正提供服务的后端服务器是RealServer,也可以称

*之为upstream server,Nginx里面也称之为上游服*务器。在haproxy里面也称作后端服务器。

**/

Ø  CIP : Client lP

//客户端的ip地址被称做CIP

Ø  VIP: Virtual serve lP  VS外网的IP

/**vs发布到互联网上的地址名为vip,当它作为调度

*器时,存在两个地址,一个是发给互联网的地址,另一*个是连接内网的地址。

**/

Ø  DIP: Director lP   VS内网的IP

Ø  RIP: Real server IP

Ø  访问流程︰CIP <--> VIP == DIP<-->RIP

 

 

三、lvs集群的类型

lvs: ipvsadm/ipvs

ipvsadm :用户空间的命令行工具,规则管理器

用于管理集群服务及RealServer

 

ipvs :工作于内核空间netfilter日的INPUT钩子上的框架

 

IPVS的框架示意图:

image.png

 

/**

*最大的方框表示lvs服务器

*用户发送请求首先会到达prerouting,再交由路由表

*route)检查,检查完毕后交由input转发,当input*发完毕后也就到达了本地进程,响应完毕后到达output

*outputforward最终都会汇总到route路由表,经过*路由表审核后,还会经过postroutingLvsroute*input之间的位置进行工作。在此可以截取错误指令发给route

**/

 

 

lvs集群的类型:

lvs-nat :修改请求报文的目标IP,多目标IPDNAT

 

lvs-dr:操纵封装新的MAC地址

 

//注:重点掌握lvs-natlvs-dr两种集群模式

 

lvs-tun:在原请求IP报文之外新加一个IP首部

 

lvs-fullnat :修改请求报文的源和目标IP

 

//注:了解lvs-tun,lvs-fullnat两种集群模式的原理即可。

 

 

LVS/NAT的体系结构如下图:

 

NAT的工作原理:

image.png

 

/**

*lvs服务器上存在两个地址,一个是vip,用于连接外网,

 

*另一个是DIP用于连接内网。两台RS服务器的地址不同。

*客户端的ip地址是CIP。客户端(浏览器)的地址是原地*址,目标是vipDESTTCP80端口。

*DNAT的工作原理就是将用户发送的请求转发到某个固*定的端口上,原地址不变,端口不变,目标替换成需要转*发成的服务器(RIP1)。数据报文在经过内部的网络之后

 

*到达了后端的RS1,后端在回应数据报文时,原地址变成*RIP1 80/TCP,目标地址则变成了CIP XXXXX

数据*报文在返回的时候应该走原路径而不是另辟蹊径,此时所*有被替换的地址都应被替换回去。这种模式存在的问题是*lvs服务器负载压力过大。

 

后端服务器与lvs服务器之间*可以存在路由器,但是一般情况下不会加路由器,中间一*般是交互机

**/

 

/**

*user客户端通过客户端发请求到达lvslvs收到请求后的原地址理*论上应该是客户端的地址,目标地址是vip,这时的lvs服务器需要

*将其进行转换到内部去,转换的过程地址会发生转变,类似于DNAT

*的工作原理。

**/

 


四、几种常见的lvs集群模式

lvs-nat模式

lvs-nat :

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

 

( 1 )RIPDIP应在同一个IP网络(一般情况下位于同一个网络),且应使用私网地址;RS的网关要指向DIP(前提是位于同一个网段下)

 

(2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈

 

(3)支持端口映射,可修改请求报文的目标PORT

 

(4 ) LVS必须是Linux系统,RS可以是任意OS系统

 

NAT模式示意图:

image.png

 

 

NAT模式IP包调度过程:

image.png

 

/**

*当客户端发送的请求经过互联网到达lvs服务器后目标地*VIP转换为目的地址RIP,因为支持端口映射,所以端口*也又原来的80转变为9000

经过交互机之后便到达了*web服务器,数据报文在返回时,又会被替换回去。

**/

 

LVS-DR模式

LVS-DR :

Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MACDIP所在的接口的MAC,目标MAC是某挑选出的RSRIP所在接口的MAC地址;IP/PORT,以及目标IP/PORT均保持不变

 

( 1 ) Director和各RS都配置有VIP

 

(2)确保前端路由器将目标IPVIP的请求报文发往Director

Ø  在前端网关做静态绑定VIP和口DirectorMAC地址

Ø  RS上使用arptables工具

arptables -A IN -d $VIP -j DROP

arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

 

Ø  Rs上修改内核参数以限制arp通告及应答级/proc/sys/net/ipv4/conf/all/arp_ignore/proc/sys/net/ipv4/conf/all/arp_announce


( 3 )RSRIP可以使用私网地址,也可以是公网地址;RIPDIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director


( 4 )RSDirector要在同一个物理网络

 

( 5 )请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

 

( 6)不支持端口映射(端口不能修败)(7 )RS可使用大多数OS系统

 

DR模式辅助理解示意图:

image.png

 

/**

*DR模式的工作原理大致是这样的,在LVS上有两个地址,*一个是VIP,还有一个是DIP。客户端发送请求经过路由器,*进入到企业内部,首先到达LVS服务器,这时的LVS服务**在接受到请求之后并不做网络层的修改。这一点与我们之*前讲的NAT DNAT会进行地址替换又有所不同。

 

*路由器不会修改地址,在到达lvs服务器之后,lvs会根据*调度算法将其调度到一个机器上去。特别注意调度过程是*如何实现的:

 

原地址CIP XXXX 不变,目标地址 VIP 80*然不变,但是MAC地址变了,MAC地址由原先的MAClvs*变为了MACrs1

 

*lvs通过广播寻找到它的MAC地址,但需要注意的是如*果使用了广播去寻找地址,那么LVSROUTE之间就只*能是交互机而不能是路由器。当然数据报文还是能够到达*后端的really server 的。

 

这时会出现新的问题,reall *server无法识别目标地址;解决方案是给每一台reall *server都配置一个RIP

 

回应数据包,原地址变成了vip

*80 MACrs1,目标地址变为了CIP XXXXX MAC2

 

MAC2*是通过广播获得的。转出去后原地址变成了 VIP 80 MAC1,*目标地址变为了CIP XXX MACc。逻辑上比较复杂,但是*配置起来十分的简单。

 

同步请求:

客户端发送请求到达LVS*后到达RS,回应报文是第二次过程。实际上同步请求进行了

 

 

*两次操作。

**/

image.png

 

 

//同一个网卡下的VIPCIP 下的MAC地址是同一个地址。

 

实际生产过程中的集群环境:

image.png

//总体上是一个多级调度的过程,比较典型的例子便是大众点评的调度设置。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
9月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
384 11
|
12月前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
1825 6
LVS,软负载均衡
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
12月前
|
机器学习/深度学习 缓存 负载均衡
Qwen MoE关键细节:通过全局负载均衡提升模型性能和专家的特异化程度
Qwen MoE关键细节:通过全局负载均衡提升模型性能和专家的特异化程度
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1893 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
429 8
LVS+Keepalived 负载均衡
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
292 6
|
负载均衡 网络协议
使用LVS搭建集群实现负载均衡(二)安装使用
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡(二)安装使用
270 5
|
存储 负载均衡 算法
使用LVS搭建集群实现负载均衡(一)
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡
712 5
|
负载均衡 网络协议 算法
使用IPVSADM配置LVS负载均衡
使用IPVSADM配置LVS负载均衡