一、概念:

  LVS( linux virtual server ) : Linux虚拟服务器

    lvs是一个负载均衡设备,它不提供任何服务,用户请求到这里的时候,它将客户需求转发至后端的realserver

    LVS在用户空间中的管理工具为:ipvsadm ,在内核空间中是IPVS 【注意:LVS和iptables是不能同时使用】

二、LVS类型:

  LB( Load Banlancing ):负载均衡集群

  HA( High Availability ):高可用集群

  HP( High Performance ):高性能集群

三、LVS实现负载均衡的方法:

NAT:地址转换(类似DNAT方式)

  1、realserver和director必须工作在同一网络中

  2、RIP通常是私有地址,仅用于各节点之间通信

  3、director位于CIP和VIP之间,负责处理进出的请求

  4、realserver必须将网关指向director的DIP

  5、realserver可以是任意操作系统

  6、director支持端口映射

  7、在高并发的场景下director可能会成为瓶颈

DR:直接路由

  1、各集群节点必须和director在同一物理网络中,director查找realserver是通过mac地址

  2、RIP可以是公网地址,便于管理和监控

  3、director仅处理请求报文,响应报文则有realserver直接响应给client

  4、realserver不能将网关指向director

  5、director不支持端口映射

  6、相对nat方式来说,DR能够支持更多的请求

TUN:隧道

  1、集群节点可以跨越internet

  2、RIP必须是公网地址

  3、director仅负责请求报文,响应报文则有realserver直接回送给client

  4、realserver网关不能指向director

  5、不支持端口映射

FULL-NAT:director通过同时修改请求报文和响应报文的目标地址和源地址进行转发

  1、VIP是公网地址,RIP和DIP是私网地址,二者无需在同一网络中

  2、RS接收的请求报文源地址为DIP,因此响应报文应该送达DIP

  3、请求报文和响应报文要经由director

  4、地址端口映射

  5、realserver可以是任意操作系统

四、LVS十种调度算法

  1、四种静态调度算法:仅根据算法本身进行调度(保持起点的公平)

    (1)rr (round robin):轮询调度,轮叫调度

      轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部realserver个数),然后再从新循环,算法的优点是简洁性,无需记录连接的状态,所以是一种无状态调度。

    (2)wrr (weight round robin):加权轮叫调度,以权重之间的比例实现各个主机之间进行调度

      由于每台服务器的配置,安装的业务应用不同,处理的能力也不同。所以可以根据服务器处理能力的不同,给每个不同的服务器分配不同的权值,使其能够接受响应权值的服务器请求。

    (3)sh (soucre hashing) 主要实现会话绑定,能够将此前建立的session信息保留

      根据请求的源地址IP,作为散列键(hash key)从静态分配的散列表找出对应的服务器,当客户端再次访问的时候,就直接指向包含对应(hash key)的服务器。

    (4)dh 目标地址散列:把同一个IP地址请求,发送到同一个server 因为LVS是工作在四层,无法对URL进行处理

  2、动态调度算法:根据算法及各RS的当前负载状态进行调度算法(保持结果公平)

    (1)lc (Least-Connection) 最少请求数服务器连接

      最少连接调度算法是把新的连接请求分配到当前连接数最小的服务器,它通过服务器当前所活跃的连接数来估计服务器的负载均衡。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数+1

    其连接中止或者超时,其连接数-1。当服务器权重为0时,表示该服务器不可用且不被调度

      简单算法:active*256+inactive(谁小就挑谁)

    (2) wlc ( Weighted least-Connection Scheduing ):加权最少连接。

      加权最小连接调度算法是最小连接调度算法,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态的设置服务器的权重。

      简单算法:(active*256+inactive)/weight【(活动的连接数+1)/除以权重】(谁的小,挑谁)

    (3) sed ( Shortest Expected Delay ):最短期望延迟
      简单算法:(active+1)*256/weight 【(活动的连接数+1)*256/除以权重】基于WLC算法。
    (4) nq ( never queue ):永不排队(改进的sed)
      无需队列,如果有台realserver的连接数为0 就直接分配过去,不需要在进行sed运算。
    (5) LBLC (Locality-Based Least Connection):
      基于局部性的最少连接调度算法根据请求的目标IP地址找出该目标IP地址最近使用的RealServer,若该RealServer 是可用的且没有超载,将请求发送到该服务器,若服务器不存在
    或者服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

    (6) LBLCR(Locality-Based Least Connections withReplication):带复制的基于局部性最少链接

      带复制的基于局部性最少链接调度算法也是针对目标IP地址的负载均衡,该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出
    一台服务器,若该服务器没有超载,将请求发送到该服务器,若该服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器

【 LVS 】类型及算法的更多相关文章

  1. java加密类型和算法名称

    项目里有各种加密方法,但从来没有仔细研究过.一般只是copy.这几天遇到一些问题,看了一下加密代码,觉得有些疑惑. 我们知道jdk已经为我们包装好了很多的算法.但究竟包装了哪些算法,怎么去掉这些算法我 ...

  2. 001.LVS简介及算法

    一 LVS简介 1.1 LVS介绍 LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能. 使用 ...

  3. lvs模式及算法

    一.三种模式 (一).Virtual Servervia Network Address Translation(VS/NAT) 通过网路地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将 ...

  4. lvs 最常用算法 + tcpdump vrrp 抓包

    1.SH: source hash, 源地址散列. 将请求的目标IP地址换成请求的源IP地址:实现session保持的机制:将来自于同一个IP的请求始终调度至同一RS: 源地址散列调度算法正好与目标地 ...

  5. LVS负载均衡模型及算法概述

    集群类型 LB: Load Balancing,负载均衡 HA:High Availability, 高可用 HP:High Performance, 高性能   负载均衡 负载均衡设备 Hardwa ...

  6. LVS工作原理及集群类型

    Cluster概念 Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统 Linux Cluster类型: LB:Load Balancing,负载均衡 HA:High ...

  7. LVS负载均衡的三种模式和八种算法总结

    三种LVS负载均衡模式 调度器的实现技术中,IP负载均衡技术是效率最高的,IP虚拟服务器软件(IPVS)是在linux内核中实现的。 LVS负载均衡模式---1.NAT模式 NAT用法本来是因为网络I ...

  8. 集群——LVS理论(转)

    原文:http://caduke.blog.51cto.com/3365689/1544229 当单个服务器性能 不能满足日益增多访问流量时,服务器的扩展策略: Scale Up :向上扩展,提升单个 ...

  9. LVS详解

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

随机推荐

  1. 配置cas可外网访问

    把应用程序tomcat下的conf下的context.xml里配置内容修改 如把: D:\apache-tomcat-APP\conf\context.xml <Resource name=&q ...

  2. Aspose.Pdf合并PDF文件

    使用Aspose.Pdf类库,有很多种方法可以合并PDF文件,这里简单介绍小生见到的几种: Doucment.Pages.Add PdfFileEditor.Append PdfFileEditor. ...

  3. delphi中写SQL语句中变量的注意事项

    1.procedure TForm1.btn1Click(Sender: TObject); var   s: String; begin   S := 'select * from TMarketI ...

  4. spring笔记(三)

    Spring 第二天: 1. 代理模式 2. Aop编程 3.Spring对Jdbc的支持 JdbcTemplate工具类 思考: 程序的“事务控制”, 可以用aop实现! 即只需要写一次,运行时候动 ...

  5. iBatis的基本使用

    项目结构: 依赖jar: 数据库依赖: CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, PRIMA ...

  6. 通过 servletContext设置点击次数 利用的是全局变量的特性

  7. BZOJ4347 POI2016Nim z utrudnieniem(博弈+动态规划)

    由nim游戏的结论,显然等价于去掉一些数使剩下的数异或和为0. 暴力的dp比较显然,设f[i][j][k]为前i堆移走j堆(模意义下)后异或和为k的方案数.注意到总石子数量不超过1e7,按ai从小到大 ...

  8. [学习笔记]对未来做出承诺的DP小结

    这是一种DP状态设计方法. 有些题,当你必须以一个顺序往后填的话,然而后面的填法会对之前产生影响,那么,不妨在之前就对未来怎么填做出承诺. 通俗的讲,就是对未来打一个表. 然后后面填的时候,直接查表转 ...

  9. Codeforces Round #524 (Div. 2) B. Margarite and the best present

    B. Margarite and the best present 题目链接:https://codeforces.com/contest/1080/problem/B 题意: 给出一个数列:an=( ...

  10. bzoj 4237 稻草人 CDQ

    稻草人 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 1433  Solved: 626[Submit][Status][Discuss] Descr ...