聊聊lvs负载均衡调度

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目。它的官网是http://www.linuxvirtualserver.org。目前lvs已经被集成到linux的内核模块中。现在我们可以通过lvs实现架构的负载均衡高可用。它具有良好的可靠性、可扩展性和可操作性。用低廉成本达到最优的性能。

lvs组成

lvs由俩部分组成,包括ipvs和ipvsadm。

ipvs工作在内核空间,是真正实现调度的代码。类似nginx的proxy_pass
ipvsadm工作在用户空间,负责ipvs内核框架编写规则。提供集群/Real Server后端服务器等信息,类似nginx的upstream.

工作原理

当用向负责均衡调度器发起请求,调度器将请求发往内核空间;
prerouting链首先会收到用户请求,判断目标ip是否为本机ip,确认无误,发往input链;
ipvs是工作在input链上的,当请求到达input是,ipvs会将用户请求和自己定义好的集群服务进行比对,如果用户的请求就是定义的集群服务,那么此时ipvs会修改数据包的ip地址及端口,并将新的数据包发往postrouting链;
postrouting链接收到数据包后,发现目标ip地址刚好是后端服务器,那么通过路由选路,将数据包发给后端的服务器。

工作模式

lvs有三种工作模式,分别是nat模式,dr模式以及tun隧道模式。
模式特性

nat模式特性:

RS(real server)应该使用私有地址,RS的网关必须指向DIP(目标ip);
DIP和RIP必须在一个网段内;
请求和响应报文必须都要经过DS(director server),高负载场景中,DS容易成为性能瓶颈;
支持端口映射;
RS可以使用任意操作系统;
缺点:请求响应都经过DS服务器,DS服务器压力大

dr模式特性:

RS可以使用私有地址,也可以使用公网ip;
RS和DS必须在同一个物理网络中;
所有的请求报文必须经过DS,响应报文不能经过DS;
不支持地址转换,不支持端口映射;
RS可以是大多数常见系统;
RS的网关决不允许指向DIP;
RS上的lo接口配置在vip(虚拟ip)的ip地址;
缺陷:RS和DS必须在一个机房中;

tun隧道模式特性:

RIP,VIP,DIP全是公网地址;
RS网关不会也不可能指向DIP;
所有的请求报文经由DS,但响应不能经过DS;
不支持端口映射;
RS的系统必须支持隧道。

三种模式中,nat模式在做ipvs对比数据包,修改的是数据包的源ip和目标ip,真实服务器在响应后,报文是经过DS服务器,响应客户前,DS修改源ip和目标ip,来达到隐藏后端服务信息。dr模式在ipvs对比数据包后,修改的是数据包的源mac地址和目标mac地址,真实服务器响应后,不用经过DS服务器,可通过lo网卡直接响应给客户端。tun模式在做ipvs比对时,会在原报文基础上再次封装一层ip首部,封装源ip为DIP,目标ip为RIP,转发给postrouting链,postrouting根据最新封装的报文,将数据包发给RS,RS接到报文,拆掉外层ip后,发现里面还有一层ip首部,目标ip为自己的lo接口vip,那么RS开始处理请求,请求完成后通过lo接口送给eth0网卡,最终到达客户端。
LVS的十种调度算法

静态调度

RR轮询
WRR轮询
DH 目标地址hash
SH 源地址hash

动态调度

LC 最少连接
WLC加权最少连接
SED 最少期望延迟
vnq 从不排队调度法
LBLC 基于本地最少连接
LBLCR 带复制的基于本地最少连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值