lvs入门

lvs负载均衡

标签(空格分隔): 负载均衡算法 反向代理算法


本文学习自以下文章,讲解得很透彻,想知道深层原理的可以去看看:https://www.cnblogs.com/liwei0526vip/p/6370103.html

一、反向代理模式

(1)dr模式
(2)nat模式
(3)tunnel模式

dr模式

(1)当lvs服务器接收客户端请求的时候,请求包经过网卡到达read_buffer,然后发送给PREROUTING。PREROUTING链过滤之后发现请求包的
    目的地址为本地VIP,源地址为CIP。于是mangle表将请求包设置响应的标志位并且发送给INPUT链。
(2)INPUT收到数据包之后,由于IPVS是内建在INPUT链上的,因此IPVS会判断此数据包是否为本集群的数据包,是的话就将修改请求包的源MAC地址
修改为本机的DIP接口的MAC地址,将目的地址修改为后端应用服务器的RIP接口的MAC地址。并且将修改后的数据包发送给POSTROUTING链。
(3)此时的数据包结构为{[CIP][DIP_MAC]---[VIP][RIP_MAC]}
(4)POSTROUTING检查MAC表,发现目的MAC地址就是后端应用服务器的MAC,所以直接通过二层通讯将数据帧发送给后端应用服务器。
(5)后端服务器收到数据帧之后进行处理,然后通过环回口lo将响应包发送给ens33接口然后再发送至客户端。
(6)此时数据包的结构为{[VIP][VIP_MAC]---[CIP][CIP_MAC]}

这里有一点小疑问,Real server为什么能够知道客户端的MAC地址,那个VIP_MAC地址填的是哪个接口的地址

特点1:保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
RS跟Director Server必须在同一个物理网络中
所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
不支持地址转换,也不支持端口映射
RS可以是大多数常见的操作系统
RS的网关绝不允许指向DIP(因为我们不允许他经过director)
RS上的lo接口配置VIP的IP地址
缺陷:RS和DS必须在同一机房中
客户端 PREROUTING链 INPUT链 POSTROUTING链 Real server 请求包{[CIP][CIP_MAC]--[VIP][VIP_MAC]} 这个数据包处理一下 修改后{[CIP][D IP_MAC]--[V IP][RIP_MAC]} 这个帮忙发出去 这是给你的 处理数据包 这是响应包{[VIP][VIP_MAC]--[CIP][CIP_MAC]} 客户端 PREROUTING链 INPUT链 POSTROUTING链 Real server

nat模式

(1)Director server收到请求包之后,PREROUTING对数据包进行判断,发现是发往本机的,因此PREROUTING将数据包发送给INPUT链。
(2)此时的数据包结构为{[CIP][CIP_MAC]--[VIP][VIP_MAC]}
(3)INPUT链上的IPVS判断数据包为集群的数据包,因此将数据包的源IP修改为DIP,将目的IP修改为RIP,并且发送给后端应用服务器。
(4)此时的数据包结构为{[DIP]}--[RIP]}
(5)后端服务器收处理数据包,并且将响应包发送给Director
(6)此时的数据包结构为{[RIP]--[DIP]}
(7)Director将数据包的源IP修改为VIP,将目的IP修改为CIP,并且发送给客户端
客户端 PREROUTING链 INPUT链 POSTROUTING链 Real server 请求包{[CIP]--[VIP]} 这个数据包你处理一下 修改后{[DIP]--[RIP] } 你把这个包发出去 这是你的包 处理数据包 这个包处理好了,给你{[RIP]--[DIP]} 把源目地址修改一下 修改后{[VIP]--[CIP] } 你把这个发给客户端 这是你的响应包 客户端 PREROUTING链 INPUT链 POSTROUTING链 Real server

tunnel模式

(1)客户端将数据包发送给Director,此时的数据包结构为{[CIP]--[VIP]}
(2)PREROUTING收到数据包后,判断数据包为发往本机的,因此将 数据包转发给INPUT链,INPUT链对数据包重新封装。
(3)重新封装后的数据包为{[DIP-CIP]--[RIP-VIP]},INPUT链将此包发送给POSTROUTING链,POSTROUTING链发现目的IP为RIP,因此POSTROUTING链将此包转发给Real server。
(5)Real server收到数据包后进行拆包,发现这个包的真实结构为{[CIP]--[VIP]},并且开始处理数据包,根据需求生成了响应包。
(6)响应包的结构为{[VIP]--[CIP]},此包即将发送给客户端
客户端 PREROUTING链 INPUT链 POSTROUTING链 Real server 请求包{[CIP]--[VIP]} 这是发往本机的包,请处理 重新封装后{[DIP-CI P]--[RIP-VIP]} 这个帮忙快递出去 这个目的地址是RIP,那就发给Real server 这是您的快递,请查收^_^ 拆开封装:这 个目的地址是 我的lo接口IP 处理数据包 生成响应包{[VI P]--[CIP]} 通过lo虚拟接 口,再通过本地 物理接口发送出去 这是响应包 客户端 PREROUTING链 INPUT链 POSTROUTING链 Real server

8种负载均衡算法

负载均衡算法原理优点
轮询rr循环地将请求调度到各个服务器上配置简单,若服务器的配置都差不多,那么用轮询还是挺好的
加权轮询wrr在轮询的基础上对某些服务器附加权重,使请求更加倾向发送到权重较高的服务器上后端服务器的配置参差不齐就可根据配置好坏来配置权重
最少连接算法lc根据后端服务器已存在的连接数来分配请求,连接数越少越有机会被分配到请求这样不至于存在两极分化
加权最少连接算法在lc的基础上增加权重类似于lc算法
基于局部的最少连接算法lblc优先选择最近处理过此客户端请求的服务器,若没有则再选择曾经处理过此客户端请求的服务器。若此客户端是新的,那么就根据lc算法来进行分配两种算法结合,有利于减少资源消耗
复杂的基于局部的最少连接算法记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标IP到一组服务器之间的映射关系,防止单点服务器负载过高。比lblcr更加优化
基于源地址散列根据源ip进行散列从而静态地分配服务器资源有利于会话保持
基于目的地址散列根据目的ip进行散列从而静态地分配服务器资源有利于会话保持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值