2016-08-03 回答

三种机制的优点,及这些机制的四种配置方法和架构方式。

三种转发机制的优缺点

◆virtual server via nat

vs/nat 的优点是服务器可以运行任何支持tcp/ip的操作系统,它只需要一个ip地址配置在lvs主机上,服务器组可以用私有的ip地址。缺点是它的扩充能力有限,当服务器结点数目升到20时,lvs主机本身有可能成为系统的新瓶颈,因为在vs/nat中请求和响应封包都需要通过负载平衡lvs主机。在 pentium 166主机上测得重写封包的平均延时为60us,假设tcp封包的平均长度为536 bytes,则lvs主机的最大吞吐量为8.93 mbytes/s。再假设每台服务器的吞吐量为600kbytes/s,这样一个lvs主机可以带动16台服务器。

◆virtual server via ip tunneling

在vs/tun 的集群系统中,负载平衡lvs主机只将请求分配到不同的实际服务器,实际服务器将应答的资料直接返回给用户。这样,负载平衡lvs主机就可以处理巨量的请求,而不会成为系统的瓶颈。即使负载平衡lvs主机只有100mbps的全双工网卡,虚拟服务器的最大吞吐量可以达到几gbps。所以,vs/tun可以极大地增加负载平衡lvs主机分配的服务器数量,它可以用来构建高性能超级服务器。vs/tun技术对服务器的要求是所有的服务器必须支持"ip tunneling"或者"ip encapsulation"协议。目前,vs/tun 的后端服务器主要运行linux操作系统。因为"ip tunneling"正成为各个操作系统的标准协议,所以vs/tun也会适用运行其它操作系统的后端服务器。

◆virtual server via direct routing

同vs/tun 一样,vs/drlvs主机只处理客户到服务器端的连接,响应资料可以直接从独立的网络路由返回给客户。这可以极大地提高lvs集群系统的伸缩性。同 vs/tun相比,这种方法没有ip隧道的开销,但是要求负载平衡lvs主机与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备或者设备别名不作 arp 响应。

四种分配方法(load-balancing methods)

不同的分配方法建构lvs主机成四种不同的排程

负载平衡排程是以连接为单位的。在http协议(nowait)中,每个对象从web服务器上获取都需要建立一个tcp连接,同一用户的不同请求会被分配到不同的服务器上,所以这种连接的分配完全避免了用户连结的突发性引起的负载不平衡。目前有以下4种排程算法:

轮流排程 round-robin scheduling (rrs)

轮流排程算法是假设所有服务器处理性能均相同,依次将请求分配不同的服务器,算法简单,但不适用于服务器组中处理性能不一致的情况。

加权轮流排程 weighted round-robin scheduling (wrrs)

为此使用加权轮流排程算法,用相应的加权值表示服务器的处理性能,将请求数目按加权值的比例分配到各服务器。加权值高的服务器先收到连接,加权值高的服务器比加权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。

最小连结数排程 least-connection scheduling (lcs)

最小连结数排程是需要记录各个服务器已建立tcp连接的数目,把新的连接请求发送当前连接数最小的服务器。当各个服务器有相同的处理性能时,最小连结数排程能把负载变化大的请求平均分布到各个服务器上,所有处理时间比较长的请求不可能被发送到同一台服务器上。

加权最小连接数排程 weighted least-connection scheduling (wlcs)

但是,当各个服务器的处理能力不同时,该算法并不理想,因为tcp连接处理请求后会进入time_wait状态,tcp的time_wait 一般为2分钟,此时连接还占用服务器的资源,所以会出现这样情形,性能高的服务器已处理所收到的连接,连接处于time_wait状态,而性能低的服务器既要忙于处理所收到的连接,还要收到新的连接请求。加权最小连接分配是最小连接分配的超集,各个服务器用相应的权值表示其处理性能。假设每台服务器的权值为wi(i=1..n),tcp连接数目为 ti(i=1..n),依次选ti/wi为最小者的服务器为下一个分配到服务的服务器。

四种分配方法(load-balancing methods)

round robin (rrs)

将工作平均的分配到服务器 (用于实际服务主机性能一致)

least-connections (lcs)

向较少连接的服务器分配较多的工作(ipvs 表存储了所有的活动的连接。用于实际服务主机性能一致。)

weighted round robin (wrrs)

向较大容量的服务器分配较多的工作。可以根据负载信息动态的向上或向下调整。 (用于实际服务主机性能不一致时)

weighted least-connections (wlc)

考虑它们的容量向较少连接的服务器分配较多的工作。容量通过用户指定的砝码来说明,可以根据装载信息动态的向上或向下调整。(用于实际服务主机性能不一致时)

lvs工作在第几层_lvs负载均衡算法工作在哪一层相关推荐

  1. LVS三种模式的区别及负载均衡算法

    转载自  LVS三种模式的区别及负载均衡算法 LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统,由章文嵩博士在1998年5月成立,在li ...

  2. LVS的负载均衡算法

    目录 静态算法 动态算法 总结: 附1: 附2: 静态算法 静态:根据LVS本身自由的固定的算法分发用户请求. 轮询(Round Robin 简写'rr'):轮询算法假设所有的服务器处理请求的能力都一 ...

  3. 系统设计:负载均衡(负载均衡算法、转发实现、session)

    一.负载均衡 集群中的应用服务器(节点)通常被设计成无状态,这样的话用户可以请求任何一个节点. 负载均衡器会根据集群中每个节点的负载情况,将用户请求转发到合适的节点上. 负载均衡器可以用来实现高可用以 ...

  4. 四层LVS与七层Nginx负载均衡的区别

    一.四层负载均衡与七层负载均衡: (1)四层负载均衡: 四层负载均衡工作在 OSI 七层模型的第四层(传输层),指的是负载均衡设备通过报文中的目标IP地址.端口和负载均衡算法,选择到达的目标内部服务器 ...

  5. lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析

    目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障.那么他们为什么这么搭配,而又有什么 ...

  6. F5/LVS/Nginx/HAProxy硬软件级网络负载均衡介绍

    F5/LVS/Nginx/HAProxy硬软件级网络负载均衡介绍 1 硬件级的负载均衡 常见的商用硬件负载均衡器:NetScaler.F5.Radware.Array 优点: 1)专业团队维护,能够直 ...

  7. Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用

    目录 一.Keepalived和LVS简介 1. Keepalived简介 2. LVS简介 二.安装配置 1. 下载安装LVS 2. 下载安装Keepalived 3. Keepalived配置 5 ...

  8. LVS+Keepalived实现高可用的ip负载均衡

    LVS+Keepalived实现高可用的ip负载均衡 封装rhel7.6的母盘 LVS负载均衡技术 RS中服务机对外屏蔽vip的俩种设置方法 RS设置之使用arptables_jf软件详解 数据链路层 ...

  9. mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

    配置mysql+lvs+keeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 t ...

最新文章

  1. iPhone App开发导航条(Navigation Bar)素材PSD下载
  2. R语言glmnet交叉验证选择(alpha、lambda)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值、模型最优的lambda值,最终模型的拟合与评估
  3. MIT Molecular Biology 笔记5 转录机制
  4. VC++ 单文档和多文档应用程序
  5. java代码编译之后是如何运行的?不知道这些,面试官问你jvm问题,你只能懵圈
  6. 圆锥破碎机常见故障_圆锥破碎机飞车危害大! 7种原因早知道早预防
  7. SAP Spartacus 标准的 Effects 实现的注入原理
  8. python内置函数可以返回数值型序列中所有元素之和_Python内置函数________________用来返回数值型序列中所有元素之和。...
  9. 两节锂电池保护IC,芯片电路图如何设计
  10. natapp做一个内网穿透
  11. C语言——设置flag的优点
  12. 程序人生 | 文艺程序员使用代码发展诗歌
  13. 云端服务器(linux版)部署mysql
  14. Unity3d 动态字体
  15. C#毕设asp.net江山旅游网站管理系统(论文+源码)
  16. C语言的小tips~
  17. 几个比较好的Web前端开发框架
  18. 上位机plc编程入门_【新手入门】西门子PLC编程入门学习
  19. 基于SVPWM的两电平逆变器MATLAB仿真模型 仿真搭建的很有条理
  20. ElasticSearch教程与实战:从搭建服务到Spring Boot整合

热门文章

  1. Lambda表达式很鸡肋?它到底有何用呢?
  2. 这款 20 万开发者使用的开发插件到底经历了什么?
  3. flink启动命令参数_Flink调优之前,必须先看懂的TaskManager内存模型
  4. php用命令行脚本执行,使用PHP命令行执行PHP脚本的注意事项
  5. 自考总结-2019-4-14
  6. Python-OpenCV——亮度和对比度
  7. HRNet-Facial-Landmark-Detection 人脸关键点
  8. pytorch loss inf
  9. update_by_query timeout
  10. cannot be registered to your development team. Change your bundle identifier to a unique string to t