LVS调度方法

lvs scheduler:

    根据其调度时是否考虑后端主机的当前负载,可分为静态方法和动态方法

    静态方法:仅根据算法本身进行调度:

        RR:Round Ronin 轮询

        WRR:Weighted Round Ronin 加权轮询

        SH:Source Hash 将客户端的源IP和调度后的RS转换为hash值(key/value),保存在Director的会话表中,下一次连接时直接查找会话表进行转发,而不需要重新调度

           在用户使用NAT上网时,因一内网中不同用户使用的源IP都是NAT后的某个IP,SH的调度方式很粗糙(LVS无法基于COOKIE做负载均衡)

        DH:Destination Hash 将客户端请求的目标地址和调度后的RS转换为hash至,保存在Director的会话表中,下一次连接时直接查找会话表进行转发,而不需要重新调度

           通常用在正向web代理(缓存),负载均衡内网用户对外部服务器的请求

           哈希的是目标地址

     动态方法:根据算法及各RS当前的负载状态进行调度

         Overhead:RS当前的负载值

         Overhead相同的情况下,按可用RS列表进行轮询

         LC:least connections,最少连接

           Overhead=Active*256+Inactive   (活动连接*256+非活动连接)  非活动连接即服务器等待客户端发送请求,而客户端并不发送

           根据各RS的Overhead选择负载最小的服务器

         WLC:Weighted LC 加权最小连接     

           Overhead=(Active*256+Inactive)/weight

         SED:Shortest Expections Delay    主要用于解决在空闲状态下,连接能够被分配至权重最大的服务器

           Overhead=(Active+1)*256/weight

         NQ:Nerver Queue    优先保证每台服务器上均分配到连接,之后根据Overhead值进行分配

         LBLC:Locallity-Based LC  基于本地的最少连接

            动态DH算法:对同一个目前请求进行动态的负载均衡,损失命中率而提高了均衡性

         LBLCR:LBLC算法的改进,如在各web缓存RS服务器上可以相互同步缓存数据

            带复制功能的LBLC

         WLC动态算法是最为通常,而且是默认的动态算法

 负载均衡集群中保持会话一致的方式:

     (1)源地址哈希;

     (2)会话集群:适用于小规模RS集群场景,将多台RS组件一个Seesion cluster,保证每台服务器上的会话内容都一致

     (3)会话服务器:创建一个共享存储用于保持会话数据(需要支持KV类型的数据库,如redis、hbase等)

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/66284

(0)
oranixoranix
上一篇 2017-01-10
下一篇 2017-01-10

相关推荐

  • 一起学DNS系列(十四)DNS查询工具之DIG的使用(1)

      这几节主要讲2个常用的DNS的命令行诊断工具,分别是linux下的DIG和windows下的NSLOOKUP,我们首先来说DIG工具。 DIG,全称Domain Information Groper。原本是Linux平台上BIND服务器诊断的工具(已上传至附件),现在已经有了windows的版本,这节就是利用此工具在windows环境下来做一些…

    2015-03-17
  • ls的常用用法

    第一个命令

    2018-03-26
  • 关于磁盘管理的例子

    今天来说一个关于磁盘管理的例子,通过这个例子也顺便了解一下此例子涉及到的一些相关命令、文件。 练习:创建一个2G的文件系统,块大小为2048byte, 预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项 思路:1.在/etc/fstab中定义开机自动挂载信息    &nbs…

    Linux干货 2017-08-19
  • Shell脚本编程入门

    什么是Shell      操作系统最外层的程序,shell通过提示符让用户输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来,管理用户与操作系统之间的交互。      Shell是一个用户跟操作系统之间的一个命令解释器。Shell是用户与Linux操作系统之间沟通…

    Linux干货 2016-08-15
  • python练习实例

    #依次输出五位数的每一位(由低位到高位)i=12345for a in range(5):j=i%10i=i//10print(j) #依次输出五位数的每一位(由高位到低位)i=12345for a in range(5,0,-1):j=i//10**(a-1)i=i%10**(a-1)print(j) #打印菱形for i in range(-3,4):j…

    Linux干货 2018-03-25
  • shell脚本总结

    shell脚本简要总结 脚本调试 bash -n /path/to/some_script检测脚本中的语法错误 bash -x /path/to/some_script调试执行 变量 环境变量 变量声明、赋值:export name=VALUEdeclare -x name=VALUE 变量引用:$name, ${name} 显示所有环境变量: export…

    Linux干货 2016-08-21