lvs工作方式和调度算法
LVS工作原理可以简单理解为:
Lvs工作在内核空间,本身工作在input链上,与iptable不能同时用。
LVS: ipvsadm :管理集群服务的工具,用来写规则
Ipvs 工作在内核。
工作原理:
1)当用户向负载均衡器发出请求时,调度器将请求发往内核空间
2)PREROUTING链会首先接收用户的请求判断目标IP确定时本机IP,将数据包发往INPUT链
3)IPVS是工作在INUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己定义好的集群服务进行对比,如果用户请求的技术定义好的集群服务,那么此时IPVS会强行修改数据包的目标IP地址及端口,并将新的数据包发往POSTROTING链
4)POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路将数据包最终发送给后端的服务器。
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地址作为散列键,从静态分配的散列表中找出对应的服务器,若该服务器是可用的且没有超载,就将请求发送到该服务器,否则返回空
分享:
lvs工作方式和调度算法的更多相关文章
- LVS工作模式与调度算法
LVS三种工作模式.十种调度算法介绍 工作模式介绍: 1.Virtual server via NAT(VS-NAT) 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配 ...
- LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- LVS三种工作方式八种算法
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- LVS负载均衡工作模式和调度算法
原文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639 一.LVS简介 LVS(Linux Virtual Server ...
- LVS 负载均衡 三种工作模式 十种调度算法
原文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639 一.LVS简介 LVS(Linux Virtual Server ...
- LVS集群之工作原理和调度算法(2)
LVS的工作机制 LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默 ...
- LVS工作原理及集群类型
Cluster概念 Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统 Linux Cluster类型: LB:Load Balancing,负载均衡 HA:High ...
- dicom通讯的工作方式及dicom标准简介
本文主要讲述dicom标准及dicom通讯的工作方式.dicom全称医学数字图像与通讯 其实嘛就两个方面 那就是“存储”跟“通讯”. 文件数据组织方式 网络数据组织方式.文件数据组织方式就是解析静态 ...
随机推荐
- [C#菜鸟]C# Hook (三) Windows常用消息大全
表A-1 Windows消息分布 消息范围 说 明 0 - WM_USER – 1 系统消息 WM_USER - 0x7FFF 自定义窗口类整数消息 WM_APP - 0xBFFF 应用程序自定义消 ...
- Fiddlercore拦截并修改HTTPS链接的网页,实现JS注入
原始出处:https://www.cnblogs.com/Charltsing/p/FiddlerCoreHTTPS.html Fiddlercore可以拦截和修改http的网页内容,代码在百度很多. ...
- OpenStack 虚拟机冷/热迁移的实现原理与代码分析
目录 文章目录 目录 前文列表 冷迁移代码分析(基于 Newton) Nova 冷迁移实现原理 热迁移代码分析 Nova 热迁移实现原理 向 libvirtd 发出 Live Migration 指令 ...
- MySQL orzdba、dodba、top、iostat、vmstat、perf等
1 mysq自带的mysqladmin命令 mysqladmin -usystem -p*** -h127.0.0.1 -P3306 -r -i 1 extended-status \ |grep & ...
- freebsd 隐藏ssh版本号
方案一: vi /etc/ssh/sshd_config VersionAddendum 为空或者no或者别的信息 /etc/rc.d/sshd restart 方案二: https://kram.n ...
- 线性模型-线性回归、Logistic分类
线性模型是机器学习中最简单的,最基础的模型结果,常常被应用于分类.回归等学习任务中. 回归和分类区别: 回归:预测值是一个连续的实数: 分类:预测值是离散的类别数据. 1. 线性模型做回归任务 ...
- angular - ngFor, trackby
ngFor ngForOf指令通常使用缩写形式*ngFor为集合中的每个项呈现模板的结构指令.该指令放置在元素上,该元素将成为克隆模板的父级. <li *ngFor="let item ...
- C语言I博客作业12
一.我学到的内容 二.我的收获 作业链接 收获 博客第一次作业:https://www.cnblogs.com/gm12/p/11584148.html 第一次作业收获:第一次作业是我初步接触C语言的 ...
- javaScript中==和===对数组、对象的判断是它们是否同一个实例对象
问题描述 在实现业务时,大量用到了 if(a === b)这样的判断,但有一个类似判断一直进不去这个if条件, a === b 返回的一直是false,但是其他几个类似判断,都正常触发条件. 原因 ...
- Spring Cloud 使用Feign调用服务传递Header中的参数
1.使用Feign 调用其他微服务,尤其是在多级调用的同时,需要将一些共同的参数传递至下一个服务,如:token.比较方便的做法是放在请求头中,在Feign调用的同时自动将参数放到restTempla ...