LVS-->Linux Virtual Server

实现算法-->静态/动态,共10种

静态算法:
    rr(round robin):
        解析:轮叫算法,即0-9循环选用Real Server
    wrr(weight round robin):
        解析:带有权重的轮叫,轮叫一遍后,根据记录信息+随后信息,选出资源空闲的进行选择
    sh(source hash):
        解析:以原地址为基准的hash,用于持久链接,以Client为基准,同一个Client发往上次的RealServer(内置一个hash表,key/value)
    dh(destination hash):
        解析:以目的地址为基准的hash,缓存命中高,以目的Real Server为基准,发往同一个Real Server,都走上次的路线
动态算法:
    lc(最少连接least connect):
        解析:不计算权重,仅依照连接数来判定,算法是active*256+inactive=N(N越小,越优先).
        问题:当active相同,反而会造成inactive很大的服务器,算法得出的结果越大,故不合理
    wlc(加权最少连接weight least connect):
        解析:在lc的基础上,添加weight,算法是[active*256+inactive]/weight=N(N越小,越优先)
        问题:初始第一次计算,active和inactive都是0,故此时依照算法,不管权重大小,结果都是0,所以总是默认选择第一个Real Server,如果第一个Real Server性能确实是最好的,那没有问题,但是如果第一个Real Server性能是最差的,则不合理
    sed:
        解析:在wlc的基础上,不计算inactive,即算法是(active+1)*256/weight=N(N越小,越优先)
        问题:因为刚开始active为0,故算法的结果就是weight越小,越不会被选择,故而其他服务器的active总是>=0,因此会造成weight最小的Real Server一直不被选中
    nq:
        解析:在sed的基础上,忽略初始的第一次计算
    lblc:动态dh算法,即dh+lc
    lblcr:lblc的加强版
工作模式-->
    类似于DNAT,不过LVS实现的是单C-->多S
模型类型-->DNAT;DR;tunnel
    DNAT
  • Real Server  使用私有地址
  • Real Server  网关指向DIP
  • 进出报文都经过Director,故Director成为瓶颈
  • 支持端口映射
  • Real Server 可以是任意OS
  • IN: PREROUTING-->INPUT-->POSTROUTING
  • OUT: PREROUTING-->FORWARD-->POSTROUTING
    DR:Director Routin(关键点在Director修改目标MAC,整个过程IP不修改从外在看,只有CIP和VIP两个公有)
  • Real Server 可以使用私有地址,也可以使用公网地址,使用公有的时候方便远程管理
  • Real Server 网关一定不能指向DIP,因为Real Server响应数据包的SIP是VIP,DIP是CIP,而Director也有VIP,直接IP冲突了,所以不能按原路径返回(linux的IP是在主机上,而不是在网卡上)
  • Real Server和Director要在同一物理网络内,否则ARP将从新进行MAC解析;DIP和RIP在同一网段内,否则Director不能得知Real Server的MAC地址
  • 入站报文经过Director,出站由Real Server直接响应Client
  • 不能做端口映射
  • Real Server可以为大多数常见OS
  • 禁止RS上的VIP直接跟前端路由通信的三种方案:

1、修改路由,使用静态ARP;
2、在RS上使用arptables,禁止响应对VIP的ARP广播请求;
3、在RS上修改其内核参数,并向VIP配置在与RIP不同的接口的别名上;

    Tun:Tunneling
  • RIP、DIP不能是私有地址;
  • RealServer的网关不能指向DIP;
  • 入站报文经过Directory,出站则由RealServer直接响应Client;
  • 不支持端口映射;
  • 支持IP tunneling的OS才能用于RealServer;

最新文章

  1. linux tar命令的使用
  2. 【dom4j】解析xml为map
  3. Android GradientDrawable类的详解,设置activity的背景颜色渐变效果
  4. struts1 logic:iterate bean:write标签使用
  5. action属性注入为null
  6. Jquery_基础(二) 包装集
  7. [Swift]LeetCode741. 摘樱桃 | Cherry Pickup
  8. linux安装sz && rz功能
  9. 安装系统后IP配置问题
  10. go os/exec执行外部程序
  11. cmd 导入数据库文件
  12. GCD(莫比乌斯+去重)
  13. 内存管理与正则(re)模块
  14. 20155213 《网络攻防》 Exp1 PC平台逆向破解
  15. Jquery解析Json格式数据
  16. HDUOJ-----4506小明系列故事——师兄帮帮忙
  17. JavaScript 学习笔记之最终篇
  18. HDU3555 Bomb 数位DP第一题
  19. 1006 Sign In and Sign Out (25)(25 分)思路:普通的时间比较题。。。
  20. 【C#】is 和 as

热门文章

  1. 字典:当索引不好用时2 - 零基础入门学习Python026
  2. tableView点击后取消选中效果
  3. mysql 5.7 内存使用监控
  4. [bzoj1002][FJOI2007 轮状病毒] (生成树计数+递推+高精度)
  5. 给div中动态添加节点并设置样式
  6. nginx网站架构优化思路(原)
  7. 关于导入oracle10g的数据到sqlserver2005里的方案总结
  8. heritrix 3.2.0 下载
  9. PS抠图神器: KnockOut 2.0安装汉化和使用教程
  10. JAX-WS 可运行项目