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;

【Services】【Web】【LVS】lvs基础概念的更多相关文章

  1. (数据科学学习手札102)Python+Dash快速web应用开发——基础概念篇

    本文示例代码与数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的新系列教程Python+Dash快 ...

  2. LVS的基础使用

    LVS的基础使用 LVS的介绍 A:什么是LVS B:cluster(集群的概念) C:LVS的介绍 LVS的使用 A:ipvsadm命令的使用 ♣一:LVS的介绍 A:什么是lvs LVS的英文全称 ...

  3. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  4. 【UML】NO.70.EBook.9.UML.4.001-【PowerDesigner 16 从入门到精通】- 基础概念

    1.0.0 Summary Tittle:[UML]NO.70.EBook.9.UML.4.001-[PowerDesigner 16 从入门到精通]-  基础概念 Style:DesignPatte ...

  5. WCF分布式开发步步为赢(1):WCF分布式框架基础概念

    众所周知,系统间的低耦合一直是大型企业应用系统集成追寻的目标,SOA面向服务架构的出现为我们的如何利用现有企业系统资源进行企业ERP系统设计和实现提供了重要的参考原则.SOA如此炙手可热,各大厂商都推 ...

  6. .net基础概念

    .net基础概念 1.       .NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件..NET Framework 具有两 ...

  7. web加密的基本概念

    1.需求 了解web加密的一些基础概念. 2.基本概念 a.对称加密方式 对称加密方式 加密和解密用同一个密钥 不足之处是,交易双方都使用同样钥匙,安全性得不到保证.此外,每对用户每次使用对称加密算法 ...

  8. JavaBean 基础概念、使用实例及代码分析

    JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...

  9. 什么是JavaScript闭包终极全解之一——基础概念

    本文转自:http://www.cnblogs.com/richaaaard/p/4755021.html 什么是JavaScript闭包终极全解之一——基础概念 “闭包是JavaScript的一大谜 ...

随机推荐

  1. MySQL高级篇 | 分析sql性能

    在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越 ...

  2. kafka删除topic中的数据,适用于比较高的版本

    server.properties中增加选项 delete.topic.enable=true 修改之后重启kafka 进入kafka目录,输入命令 bin/kafka-topics.sh --zoo ...

  3. 痞子衡嵌入式:实测i.MXRT1010上的普通GPIO与高速GPIO极限翻转频率

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1010上的普通GPIO与高速GPIO极限翻转频率. 上一篇文章 <聊聊i.MXRT1xxx上的普通GPIO与高速GP ...

  4. React-Router学习(基础路由与嵌套路由)

    示例:基本路由 在这个例子中,我们有3个'Page'组件处理<Router>. 注意:而不是<a href="/">我们使用<Link to=&quo ...

  5. 导出 doc

    ... /** * 导出word * @return * @throws Exception */ @JCall public String word() throws Exception{ Stri ...

  6. [luogu5180]支配树

    对于有向图$G$和起点$s$,有以下定义和性质-- 为了方便,不妨假设$s$能到达$G$中所有点,并任意建立一棵以$s$为根的dfs树,以下节点比较默认均按照两点在这棵dfs树上的dfs序 支配点:$ ...

  7. [luogu7740]机器人游戏

    考虑容斥,令$f(S)$为要求$\forall p\in S,p$可以作为起点的方案数,答案即$\sum_{S\subseteq[0,n)}(-1)^{|S|}f(S)$ 关于计算$f(S)$,对于第 ...

  8. 手动实现一个vue cli

    目录 手动实现一个vue cli 1. 思考准备 2. 我们组织源码将会放在名为src的目录,webpack 打包需要一个入口文件,我们取作 main.js 3. 先预想以下会用到哪些基本依赖,第一个 ...

  9. 七、Hadoop3.3.1 HA 高可用集群QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

    目录 前文 Hadoop3.3.1 HA 高可用集群的搭建 QJM 的 NameNode HA Hadoop HA模式搭建(高可用) 1.集群规划 2.Zookeeper集群搭建: 3.修改Hadoo ...

  10. 常见HTTP请求错误码

    一些常见的状态码为: 200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务不可用详细分解: 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 代码  说明100 ...