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. 在代码生成工具Database2Sharp中增加Vue&Element 工作流页面的快速生成

    在我们基于框架开发系统的时候,往往对一些应用场景的页面对进行了归纳总结,因此对大多数情况下的页面呈现逻辑都做了清晰的分析,因此在我们基于框架的基础上,增量式开发业务功能的时候,能够事半功倍.代码生成工 ...

  2. [啃书] 第3篇 - 结构体及其操作/浮点数&圆周率/复杂度/测试

    啃书部分已单独做成Gitbook了,后续不再更新.详情访问个人网站ccoding.cn或ccbyte.github.io 前言 本篇总结自<算法笔记>2.8-2.10 正文 知识点1:结构 ...

  3. Python基础(迭代)

    # from collections import Iterable#collections模块的Iterable类型判断 # dict1 = {'a':111,'b':222,'c':333} # ...

  4. gorm框架表名自动加s问题

    查看日志会发现表名自动加了s 在model实现以下方法即可解决 type UsUser struct { ID int64 `gorm:"column:id" db:"c ...

  5. 菜鸡的Java笔记 国际化程序实现原理

    国际化程序实现原理 Lnternationalization        1. Locale 类的使用        2.国家化程序的实现,资源读取                所谓的国际化的程序 ...

  6. [gym102511K]Traffic Blights

    为了方便,对于集合$S$,称$k\equiv S(mod\ M)$当且仅当存在$x\in S$使得$k\equiv x(mod\ M)$ 枚举红绿灯,对每一个点即限制$k$对$g_{i}+r_{i}$ ...

  7. Spring Cloud Gateway限流实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. restTemplate的问题-feign的项目

    restTemplate的问题  1.场景描述 在使用feign的项目中,偶然的使用到了restTemplate 在普通方法调用是可以访问的,一旦使用了restTemplate,出现报错 比如: 百度 ...

  9. Redis线程模型的前世今生

    一.概述 众所周知,Redis是一个高性能的数据存储框架,在高并发的系统设计中,Redis也是一个比较关键的组件,是我们提升系统性能的一大利器.深入去理解Redis高性能的原理显得越发重要,当然Red ...

  10. SpringCloud微服务实战——搭建企业级开发框架(二十五):实现多租户多平台短信通知服务

    目前系统集成短信似乎是必不可少的部分,由于各种云平台都提供了不同的短信通道,这里我们增加多租户多通道的短信验证码,并增加配置项,使系统可以支持多家云平台提供的短信服务.这里以阿里云和腾讯云为例,集成短 ...