zoukankan      html  css  js  c++  java
  • 【Services】【Web】【LVS】lvs基础概念

    1.简介

    1.1. 作者:张文嵩,就职于阿里

    1.2. LVS是基础四层路由、四层交换的软件,他根据请求报文的目标IP和目标PORT将其调度转发至后端的某主机;

    1.3. IPTABLES的请求转发路线:iptables(用户空间工具)/netfilter(内核空间组件)

    PREROUTING ==> INPUT

    PREROUTING ==> FORWARD ==> POSTROUTING

    OUTPUT ==> POSTROUTING

    1.4. LVS的组成:ipvsadm(用户空间工具)/ipvs(内核空间组件)

    ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS;

    ipvs:工作于内核上的netfilter的INPUT钩子之上的程序,可根据用户定义的集群实现请求转发;

    1.5. LVS支持的协议:TCP、UDP、SCTP、AH、EST、AH_EST等协议进行调度;

    2. 名词解释

    vs Virtual Server, Director, Dispatcher, Balancer
    rs Real Server
    CIP Client IP
    VIP Virtual Server IP
    DIP Director IP
    RIP Real Server IP

    3. lvs集群的类型

    3.1. lvs-nat:多目标的DNAT,通过将报文中的目标地址和目标端口修改为挑选出的某RS的RIP和PORT实现转发;

    3.1.1. 特性:

    (1)RIP和DIP必须在同一IP网络,且使用私有地址;RS的网络要指向DIP(保证相应报文必须经由VS);

    (2)请求报文和相应报文都经由Director转发,较高负载下,Director易于成为系统性能瓶颈;

    (3)支持端口映射

    (4)VS必须是Linux,RS可以是任意OS

    3.2. lvs-dr:Direct Routing,通过为请求报文的重新封装一个MAC首部进行转发,源mac是DIP所在接口的mac,目标mac是挑选出某RS的RIP所在接口的MAC地址;IP首部不会发生变化(CIP《==》VIP)

    3.2.1. 特性:

    (1)确保前端路由器将目标IP为VIP的请求报文发往Director

    解决方案:

      在路由器上静态绑定VIP和Director的MAC地址;

      禁止RS响应VIP的ARP请求,禁止RS的VIP进行通告

        (a)arptables

        (b)修改RS的内核参数,并把VIP绑定在lo的别名上;

          arp_Ignore, apr_announce

    (2)RS的RIP可以使用私有地址,也可以使用公网地址

    (3)RS跟Director必须在同一物理网络

    (4)请求报文必须由Directory调度,但响应报文必须不能经由Director;

    (5)不支持端口映射

    (6)RS可以使用大多的OS

    3.3. lvs-tun:tunnel,不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是原IP首部之外再封装一个IP首部(源IP为DIP,目标IP为挑选出的RS的RIP);

    3.3.1. 特性

    (1)RIP、DIP、VIP全得是公网地址;

    (2)RS网关不能指向也可能指向DIP

    (3)请求报文经由Director转发,但响应报文将直接发往CIP;

    (4)不支持端口映射

    (5)RS的OS必须支持隧道功能;

    3.4. lvs-fullnat:通过同时修改请求报文的源IP地址(CIP==》DIP)和目标IP地址(VIP==》RIP)进行转发;

    3.4.1. 特性

    (1)VIP是公网地址,RIP和DIP是私网地址,且通常不在同一网络中,但需要经由路由器互通;

    (2)RS收到的请求报文源IP为DIP,因此响应报文将直接响应给DIP;

    (3)请求和响应报文都经由Director

    (4)支持端口映射

    4. lvs集群的调度算法(scheduler):根据其调度时是否考虑后端主机的当前负载,可分为静态方法和动态方法两类;

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

    RR:Round Robin,轮询/论调/轮叫;

    WRR:Weighted RR,加权轮询;

    SH:Source Hashing,源地址哈希;

    DH:Destination Hashing,目标地址哈希;正向web代理(缓存),负载均衡内网用户对外部服务器的请求;哈希的是目标地址

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

    LC:least connections,最少连接;

      Overhead=Active*256+Inactive

    WCL:Weighted LC,加权最少连接;

      Overhead=(Active*256+Inactive)/weight

    SED:Shorted Expections Delay

      Overhead=(Active+1)*256/weight

    NQ:Never Queue

    LBLC:Locality-Based LC,动态的DH算法

    LBLCR:LBLC with Replication,带复制功能的LBLC;

  • 相关阅读:
    js伪数组转数组
    前端解决跨域几种方式
    mac 下node,yarn安装及版本切换
    如何给一个数组对象去重
    cookie、session、sessionStorage 、localStorage 区别
    moment.js 时间戳转换
    tp框架,addAll方法报错,返回false
    js获得 json对象的个数(长度)
    php 魔术方法和魔术常量
    js 对象的创建方式和对象的区别
  • 原文地址:https://www.cnblogs.com/demonzk/p/8109846.html
Copyright © 2011-2022 走看看