lvs工作模式和调度算法

LVS工作原理可以简单理解为:
Lvs工作在内核空间,本身工作在input链上,与iptable不能同时用。

LVS: ipvsadm :管理集群服务的工具,用来写规则
Ipvs 工作在内核。
工作过程:
请求的数据包文到达input链,发现是集群服务(input上设有规则),就把报文转发送出去,
进一步了解当调度端接受法向真实的服务器的数据包发生了什么
通过内核的数据包,内核将它接受到的每个数据包放置到称为套接字缓冲的内存结构中。
入站LVS数据包只命中5个Netfilter挂钩中的3个:PRE_ROUTING,LOCAL_IN,POST_ROUTIING.
数据包从PRE——ROUTNG挂钩传递到内核中的LOCAL_IN.调度端接受到的每个数据包(不管是那种LVS转发方法,其目的地都是集群服务)必须从PRE_ROUTING挂钩传递到调度端的内核中的LOCAL_IN挂钩。VIP是由调度端拥有的本地IP地址,所以调度端上的内核中的路由表将始终以本地方式传递数据包。因此,调度端接受的,使用的VIP作为目的地地址的数据包将始终命中LOCAL_IN挂钩。
当数据包命中LOCAL_IN挂钩,运行在内核中的LVS软件知道数据包是一个集群服务的请求,因为数据包发送到一个VIP地址。当构建集群时,使用Ipsadm工具来添加虚拟服务VIP地址到内核,以便LVS可以识别发送到LOCAL_IN挂钩中的VIP地址的数据包。如果VIP还没有添加到LVS虚拟服务表中,那么发送到VIP地址的化数据包会以本地的方式传送到director上运行的守护程序。但因为LVS知道VIP地址,所以当它命中LOCAL_IN挂钩时可以检查每个数据包,以确定数据包是否是一个集群服务的请求。然后在数据包到达调度器上本地运行的守护程序前可以修改数据包的命运(LVS告诉内核它不应该在本地传递发送到VIP地址的数据包,而应该发送数据包到节点,这就导致数据包发送到POST_ROUTING挂钩)第二个箭头所示,数据包被送出了连接到D/IP网络的NIC。
【NAT模式】
原理:把客户端发来的IP包的IP头目的地址在DR上的其中一台real server的IP地址,并发至此real server,而real server在处理完以后把数据经过DR主机发回客户端,DR在这时再把数据包的原IP地址改为DR接口上的IP地址即可,期间,无论是进来的流量还是出去的流量都要经过DR。
特点:
1)集群点跟directory必须工作在同一个Ip的网络中
2)RLP通常是私地址。仅用于各集群节点间的通信
3)Directory位于client和real server之间,并负责处理进出的所有通道。
4)Real server必须将网关执行DIP
5)Directory支持端口映射
6)Real server可以使用任何类型的操作系统
当集群中的节点数量增加到一定程度时,Director将变成网络通信的一个瓶颈,因为来自集群节点的所有的回复数据包必须通过Director。

【IP隧道】
类似于VPN的方式,使用网络分层的原理,从客户端发来的数据包的基础上,封装一个新的IP头做标记(不完整的IP头,只有目的IP部)发给real server,real server收到后,先把DR发过来的数据包的头给解开,还原起数据包的原样,处理后直接返回客户端,不需要经过DR.
需要注意的是:由于real server需要对DR发过来的数据包进行还原,也就是必须支持IPTUNNEL协议,所以在real server的内核中,必须编译支持IPTUNNEL这个选项。
1)集群节点可以跨越INTERNET
2)RIP必须是公网地址
3)Directory仅负责处理入站请求,行影报文则有real server直接发往客户端
4)real server网关不能指向directory
5)只有支持的隧道功能的OS才能用于real server。
6)不支持端口映射
【DR直接路由模式】
前两种都是工作在网络层(三层),而直接路由模式的应该工作在数据链路层。原理为DR和real server都使用同一个IP对外服务,但只有DR对ARP请求进行响应,所有real server对本身的这个IP的ARP请求保持静默,也就是说网关会对这个服务IP请求全部定向到DR,而DR收到数据包后会根据算法,找出对应的real server,把目的MAC地址改为real server地址并发给这台real server。这时real server收到这个数据报,则等于直接从客户端收到这个数据包无疑,处理后直接返回客户端。
由于dr要对二层包头进行改换,所以DR和real server之间必须在一个广播域,也可以理解为在一台交换机上。
特点:
1)各集群节点跟directoy必须在同一个物理网络中
2)RLP可以使用公网地址,实现远程监控管理。
3)Directory仅负责处理入站请求,响应报文则有real server直接发往客户端
4)Real server 网关不能 指向DIP,而是直接指向前端网关;
5)Directory不支持端口映射
6)Direcotry能够处理更多的real server.


【调度算法】
1)轮询调度:
轮流分配到集群中的真实服务器上
2)加权轮训调度
根据服务器的不同处理能力来调度访问请求,处理能力强的服务器处理更多的访问流量
3)最小连接调度
把请求调度到已建立连接数最小的服务器上
4)加权最小连接调度
具有较高权值的服务器将承受较大比例的活动连接负载,调度器可以自动询问真实服务器的负载情况,并动态调整其权值。
5)基于局部性的最小连接
目前主要用于cache集群系统,该算法根据请求的目标IP地址找出该目标的IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送至该服务器,若服务器不存在或该服务器超载,则用最小连接的原则选出一个可用的服务器,将请求发送到该服务器。
6)带复制的基于局部性的最小连接
目前用于cache集群系统,它与LBLC算法不同之处在于他要维护一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射,该算法根据请求的IP地址找到该目标IP地址对应的服务器组,按“最小链接”原则从这个服务器组中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器,若该服务器超载,按“最小链接原则”原则从这个集群中选出一台服务器,将服务器加入到服务器组中,将请求发送到该服务器,同时,当该服务器组中有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制程度。
7)目标地址散列
根据请求的目标IP地址,作为散列键从静态分配的散列表中找出对应的服务器,若该服务器可用无超载,将请求发给该服务器,否则返回为空。
8)源地址散列调度
将请求的源IP地址作为散列键,从静态分配的散列表中找出对应的服务器,若该服务器是可用的且没有超载,就将请求发送到该服务器,否则返回空
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值