负载均衡LVS工作模型

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
公网NAT网关,每月750个小时 15CU
简介: 一、集群概念二、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

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

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
80 8
LVS+Keepalived 负载均衡
|
3月前
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
67 5
|
7月前
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
4月前
|
负载均衡 网络协议
使用LVS搭建集群实现负载均衡(二)安装使用
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡(二)安装使用
76 5
|
4月前
|
存储 负载均衡 算法
使用LVS搭建集群实现负载均衡(一)
【8月更文挑战第8天】使用LVS搭建集群实现负载均衡
159 5
|
4月前
|
Kubernetes Linux API
在Linux中,LVS-DR模型的特性是什么?
在Linux中,LVS-DR模型的特性是什么?
|
4月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模型的特性是什么?
在Linux中,LVS-NAT模型的特性是什么?
|
4月前
|
缓存 负载均衡 算法
在Linux中, LVS负载均衡有哪些策略?
在Linux中, LVS负载均衡有哪些策略?
|
5月前
|
负载均衡 网络协议 算法
使用IPVSADM配置LVS负载均衡
使用IPVSADM配置LVS负载均衡
|
7月前
|
负载均衡 网络协议
NAT模式 LVS负载均衡部署
NAT模式 LVS负载均衡部署