LVS负载均衡集群


负载均衡简介

在网站架构中,负载均衡集群是网站架构伸缩性的主要方案。例如当并发用户压力过大时,通过在集群中增加服务器缓解并发访问压力。

LVS负载均衡

LVS是章文嵩开发的一个国产开源负载均衡软件,后来集成到Linux的内核之中,有不少开源牛人都为LVS开发过辅助工具和辅助组件,最出名的就是Alexandre为LVS编写的Keepalived,它最初专门用于监控LVS,后来加入了通过VRRP实现高可用的功能。

LVS是四层和七层的负载均衡工具,不过七层负载功能不太完善,所以大多数都是用它的四层负载功能。
LVS工作在内核的组件叫ipvs,ipvs工作在内核的Netfilter中的INPUT链上,不需要监听在套接字上,摆脱了套接字最大并发的限制,所以说LVS在四层负载并发上甩Nginx或HAproxy几条街。ipvs通过用户空间程序的ipvsadm工具来管理。该工具可以定义一些规则来管理内核中的ipvs。就像iptables和netfilter的关系一样。

LVS-ipvs的四种工作模式

LVS术语

在理解四种工作模式之前,先来说明下LVS的专用术语。
VS:虚拟服务器,调度器,负载均衡器
RS:真实服务器,后端服务器,上流服务器
CIP:client ip,客户IP
VIP:virtual ip,用于跟客户cip通信
DIP:director ip,调度器ip,用于跟rip通信
RIP:real server ip,真实服务器的ip,用于跟dip通信

四种模式简介:

lvs/nat,通过地址转换把客户请求的数据包发到后端,后端响应后,由VS发回给客户,这样VS承担着请求和响应的数据包,容易称为瓶颈,所以有了通过IP隧道实现的虚拟服务功能lvs/tun,和直接通过路由实现的虚拟服务功能lvs/dr,而FULL-NAT则更像是VS/NAT的扩展

LVS/NAT

客户端发送请求到达Director,Director改写请求报文的目标地址为根据负载均衡算法得出的后端服务器的RIP,RS处理完后,把响应报文响应给Director,Director把响应报文的源地址改成VIP,回复给客户端。
特性:
1.DIP和RIP必须在同一子网中,而且直接通信。
2.RS的网关必须指向Director。
3.由于请求和响应报文都经由Director,而且响应报文通常报文主体部分数据很大所以Director容易成为瓶颈。
4.Director必须是linux系统,RS可以是任意系统
5.支持端口映射

LVS/TUN

LVS/NAT模式由于请求和响应报文都需要经过Director所以在Director容易出现瓶颈,解决此问题,可以使用TUN模式,Director只处理请求报文,而响应报文通过IP隧道发送到由后端的RS返回给客户端,这样能极大解放Director,集群系统的最大吞吐量可以提高10倍。
工作原理:
IP隧道也称IP封装技术,它在原来的报文上,再添加一层网络首部,并且再RS服务器上配置tun接口的IP为VIP。
1.VS/TUN模式下,客户发送报文到VIP上,被Director接受后,Director再次报文上,增加IP隧道两端的IP地址(DIP<--->RIP),形成新的数据包,发送到后端的RS上。
2.后端的RS服务器收到后,解封报文得到原有的CIP <--> VIP,发现里面的VIP和自己的tun接口上的IP一样,所以接受。
3.响应报文不通过Director出去,而响应报文的源IP和目的IP,则为VIP --> CIP

特性:
1.VIP,DIP,RIP都应该是公网地址
2.RS的网关不能设置为Director
3.Real server的tun接口需要配置VIP。
4.通过隧道传输时,隧道外层的报文源地址是DIP,目的地址是RIP,而RS响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP。这样客户端就无法区分这个VIP到底是director的还是服务器组中的。

一般来说,VS/TUN模式会用来负载调度缓存服务器组,这些缓存服务器一般放置在不同网络环境,可以就近返回数据给客户端。在请求对象不能在Cache服务器本地命中的情况下,Cache服务器要向源服务器发请求,将结果取回,最后将结果返回给客户。

LVS/DR

简介:
VS/DR模式跟VS/TUN类型,对于客户端发来的数据包网络层数据不做任何修改,而是修改链路层数据,把源MAC修改为DIP的网卡MAC,把目标MAC修改为后端用负载算法计算出来的RIP网卡MAC,由于使用MAC直接通信,所以DIP跟RIP必须在同一子网内。
在RS上,也需要在lo接口上配置VIP,响应报文在lo接口上发给跟网关通信的网卡上出去。

特点:
1.确保前端路由器将目标IP为VIP的请求报文发往Director,所以在RS上修改内核参数以限制arp通告及应答级别;
arp_announce
arp_ignore

2.RS跟Director Server必须在同一个物理网络中
3.RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
4.RS的网关不能指向Director

FULL-NAT

双向转换。这个模式是NAT的扩展,更像一个反代模型,对于客户的请求报文,Director把源地址改为DIP,目的地址改问RIP;在RS响应时,响应报文直接响应给Director,然后Director修改报文的源地址为VIP,目的地址为CIP,这种模式并不依赖拓扑,RS也不需要把网关指向Director。因为RS认为请求是Director发出的。

负载均衡算法

Director如何选择后端服务呢,依靠的是负载均衡算法来实现。
LVS的负载均衡算法有两种类型:静态和动态。
静态算法讲求起点公平,即它不管后端负载情况,直接根据算法计算后,轮到谁就调度给谁。举个简单例子,如开始有1000个请求,RS1和RS2各分担了500个,下个请求到来前,RS1已经把490请求完成了,并且断开了,剩10个连接,而RS2连接数还有490,才断开了10个,如果说根据算法,下个请求应该轮到RS2了,那么该请求还是调度到RS2上。
动态算法讲求结果公平,它根据后端服务器的负载压力,把请求调度到负载压力低的服务器上。负载均衡算法考虑服务器的实时负载和响应情况,不断调整服务器间处理请求的比例,来避免有些服务器超载时依然收到大量请求,从而提高整个系统的吞吐率

静态算法调度

RR:(Round Robin Scheduling)轮询,简单来说,就是轮流调度
WRR:(Weighted Round Robin Scheduling)加权轮询,举个例子,有2台RS,比例2:3,即第一台RS会被调度2次,第二台被调度3次。
SH:(Source Hashing Scheduling)源地址哈希,在一定时间内,只要是来自同一个客户端的请求,就发送至同一个RS;实现方法:在一块内存地址种,对IP进行哈希计算,以键值保存在内存中,而键值对应的值则是RS服务器。
DH:(Desitnation Hashing scheduling)目的地址哈希,通常用于正向代理集群中,对于访问同一IP的请求,发送到同一RS上。

动态反馈调度

主要根据每RS当前的负载状态及调度算法进行调度,算法有个指标叫overhead。越少即负载越低。
LC:least connections 最少连接

公式:Overhead=activeconns*256+inactiveconns
调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某服务器,其连接数加1;当连接中止或超时,其连接数减1。当各个服务器的处理能力不同时,该算法不理想。

WLC:Weighted LC 加权最少连接

公式:Overhead=(activeconns*256+inactiveconns)/weight
具有较高权重的服务器将承受较大比例的连接请求

SED:Shortest Expection Delay 最短的延迟的预期

公式:Overhead=(activeconns+1)*256/weight
不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权重过大的时候,会导致空闲服务器一直处于无连接状态。

NQ:Never Queue

如果有台 realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空闲。

LBLC:Locality-Based Least Connections Scheduling 基于本地的最少连接

将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。 主要用于Cache集群

LBLCR:Locality-Based Least Connections with Replication Scheduling,lblcr 带复制的基于局部性最少连接

对于已绑定的客户,忽略绑定,至于缓存,通过缓存项复制 主要用于Cache集群

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,082评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,231评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,047评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,977评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,893评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,976评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,605评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,888评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,906评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,732评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,513评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,980评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,132评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,447评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,027评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,232评论 2 339

推荐阅读更多精彩内容

  • why LVS 说到LVS,不得不说起F5。F5的LTM(本地流量管理器)在部署上、负载均衡原理上类似,但是也有十...
    朱晓飞阅读 4,796评论 1 12
  • 本文部分观点图片采用于:http://chenx1242.blog.51cto.com 随着智能机的逐渐普及,大量...
    BossHuang阅读 3,106评论 0 16
  • 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有ngin...
    jiangmo阅读 1,311评论 0 1
  • 转载:http://blog.51cto.com/xuding/1740228 一、LVS概述 1.LVS:Lin...
    SkTj阅读 1,693评论 0 8
  • 在网页中创建一个这样的图表,你觉得会要多久? 确实需要很久很久,如果你对JavaScript不是特别熟练的话。但是...
    徐笔笔阅读 1,094评论 4 8