一、 概念

lvs的术语:
Router:GWIP
vs:virtual server,director
rs:real server 
CIP:client IP
VIP:virtual server IP
DIP:ditecter IP(connect with rs)
RIP:real server IP
用户请求的IP一定是VIP,否则vs就失去了负载均衡的调度意义

LVS方式的cluster从结构上可分为两部分:前端的负载均衡器(称之为director)和后端的真实服务器(称之为real server)。cluster前端的director将来自外界的请求调度到cluster后端不同的real server去执行。real server负责真正的提供各种应用服务,比如:Web、FTP、Mail等服务。real server的数量可以根据实际需求进行增加、减少。

二、lvs的工作过程

三、lvs的类型

lvs有三种通用标准模型
(1)lvs-nat (网络地址映射)
(2)lvs-dr (直接路由)
(3)lvs-tun (IP隧道)

3.1、  LVS NAT的特性(实质是多目标的DNAT):

1、RS应该使用私有地址;
2、RS的网关的必须指向DIP;
3、RIP和DIP必须在同一网段内;
4、请求和响应的报文都得经过Director;在高负载场景中,Director很可能成为系统性能瓶颈;
5、支持端口映射;
6、RS可以使用任意支持集群服务的OS;

lvs-nat:工作流程如图:

3.2、  LVS DR类型的特性:
1、RS可以使用私有地址;但也可以使用公网地址,此时可以直接通过互联网连入RS以实现配置、监控等;
2、RS的网关一定不能指向DIP;
3、RS跟Dirctory要在同一物理网络内(不能由路由器分隔,因为VS通过封装MAC地址到RS);
4、请求报文经过Directory,但响应报文一定不经过Director
5、不支持端口映射;
6、RS可以使用大多数的操作系统;

由于DR类型中,VS、RS的VIP都是一样,如果在同一网段内会造成地址冲突,因此要解决地址冲突有一下三种方法:
禁止RS响应对VIP的ARP广播请求:
1、在前端路由上实现静态MAC地址VIP的绑定;
前提:得有路由器的配置权限;
缺点:Directory故障转时,无法更新此绑定;
2、arptables
前提:在各RS在安装arptables程序,并编写arptables规则
缺点:依赖于独特功能的应用程序
3、修改Linux内核参数
前提:RS必须是Linux;
缺点:适用性差;

两个参数:
arp_announce:定义通告模式
arp_ignore:定义收到arp请求的时响应模式
配置专用路由,以使得响应报文首先通过vip所配置的lo上的别名接口
lvs-dr:工作流程如图

3.2、  lvs-tun:IP隧道
1、RIP、DIP、VIP都得是公网地址;
2、RS的网关不会指向也不可能指向DIP;
3、请求报文经过Directory,但响应报文一定不经过Director;
4、不支持端口映射;
5、RS的OS必须得支持隧道功能;
lvs-tun:工作流程如图:也是基于lvs-dr的模型,只不过不同的是,rs和vs不必在同一个物理的网络(实现物理冗余),而是通过隧道技术进行vs和rs间的通信

四、 lvs 十个调度算法: rr、wrr、lc、wlc、lblc、lblcr、dh、sh、sed、 nq

1.轮叫调度(Round Robin)(简称rr)
2.加权轮叫(Weighted Round Robin)(简称wrr)
3.最少链接(Least Connections)(LC)
4.加权最少链接(Weighted Least Connections)(WLC)
5.基于局部性的最少链接(Locality-Based Least Connections)(LBLC)
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)(LBLCR)
7.目标地址散列(Destination Hashing)(DH)
8.源地址散列(Source Hashing)(SH)
9. 最短的期望的延迟(Shortest Expected Delay Scheduling SED)(SED)
10.最少队列调度(Never Queue Scheduling NQ)(NQ)

最常用的两个算法介绍:

2.加权轮叫(Weighted Round Robin)(简称wrr)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

4.加权最少链接(Weighted Least Connections)(WLC)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

说明: 部分参考 http://6638225.blog.51cto.com/6628225/1866241  感谢作者。

文章可以转载,必须以链接形式标明出处。
本文转自 张冲andy 博客园博客,原文链接:  http://www.cnblogs.com/andy6/p/7017155.html ,如需转载请自行联系原作者

lvs之 lvs原理架构介绍相关推荐

  1. K8s 原理架构介绍(一)

    一.Kubernetes 是什么 Kubernetes是当今最流行的开源容器管理平台,它就是大名鼎鼎的Google Borg的开源版本.Google在2014年推出了Kubernetes,本文发布时最 ...

  2. LVS负载均衡集群介绍(4种工作模式10种调度算法)

    文章目录 集群简介 集群的特点 集群的分类 负载均衡 负载均衡集群技术的实现 负载均衡分类 四层负载均衡(基于IP+端口的负载均衡) 七层的负载均衡(基于虚拟的URL或主机IP的负载均衡) 高可用性集 ...

  3. 图解LVS的工作原理

    LVS详解 LVS简介 LVS特点: LVS常见术语 LVS工作原理 NAT模式 DR模式 内核参数详解 arp_ignore arp_announce TUN工作模式 full-nat模式 LVS调 ...

  4. Nginx+Keepalived+LVS实现高可用架构

    1.简介 Nginx是一个多进程的高性能反向代理服务器 Nginx包含一个master进程,用于接收操作者的指令去管理worker进程,该进程不处理客户端请求 Nginx包含多个worker进程(默认 ...

  5. android cordova原理,cordova架构介绍

    1 cordova 基础介绍 1.1 cordova架构介绍 1.2 cordova环境搭建及通过cordova cli创建cordova app 1.2.1 npm环境搭建 1.2.2 生成hell ...

  6. grpc通信原理_容器原理架构详解(全)

    目录 1 容器原理架构 1.1 容器与虚拟化 1.2 容器应用架构 1.3 容器引擎架构 1.4 Namespace与Cgroups 1.5 容器镜像原理 2 K8S原理架构 2.1 K8S主要功能 ...

  7. 「万字干货」高并发系统分析与大型互联网架构介绍

    (篇幅较长,建议大家先收藏再看哦~) 在初步地学习并掌握了基础的编程之后,如何提高编程能力是每个开发者关心的问题.对于 Java 的学习者来说,高并发是每个开发者技术进阶的必经之路.但是高并发的技术要 ...

  8. 【转载】四种常见系统架构介绍

    转自于 四种常见系统架构介绍 - 宇大..大 - 博客园软件架构(software architecture)就是软件的基本结构. 合适的架构是软件成功的最重要因素之一.大型软件公司通常有专门的架构师 ...

  9. 12.1 LNMP架构介绍;12.2 MySQL安装;12.3-2.4 PHP安装(上下);12.5

    扩展: Nginx为什么比Apache Httpd高效:原理篇 http://www.toxingwang.com/linux-unix/linux-basic/1712.html apache和ng ...

最新文章

  1. 配电基础知识汇总,99%的人都收藏了!
  2. C语言循环队列的实现方法,C语言循环队列(数组实现)
  3. 《软件工程概论》第二章核心内容
  4. Stark 组件:快速开发神器 —— 模板设计
  5. 负载均衡和CDN技术
  6. 连接数据库的方法---ODBC
  7. 国家市场监管总局:互联网广告不得等倒计时结束才能关闭
  8. MVC和WebApi中设置Area中的页为首页
  9. 服务注册中心,Eureka与Zookeeper比较
  10. 夺命雷公狗---DEDECMS----23dedecms修改内容页面展示的信息
  11. hdu 1709 母函数变形
  12. 如何验证远程服务器上文件是否存在
  13. PHP ECSHOP中 诡异的问题:expects parameter 1 to be double
  14. 接口中定义的成员变量是( )。_C++:如何正确的定义一个接口类
  15. ajax、axios、fetch之间的详细区别以及优缺点
  16. 一纬度横直线等于多公里_【高中物理】必修一知识点总结
  17. MySQL sql语句总结
  18. 解决 Eclipse不支持tomcat9
  19. 服务器显示ipv4问题,IPv4会出现哪些问题
  20. 哇塞,原来自己写 Google Chrome 浏览器扩展(插件)这么容易!

热门文章

  1. boost::fusion::unfused_typed用法的测试程序
  2. boost::describe模块宏BOOST_DESCRIBE_PP_NAME的测试程序
  3. GDCM:gdcm::Global的测试程序
  4. Boost:bind绑定的==,!=,<,<=,>,> =运算符的测试程序
  5. DCMTK:测试dcmiod的代码序列宏实现
  6. DCMTK:Irradiation事件识别测试FG类
  7. DCMTK:数据字典测试程序
  8. OpenCV:使用git和cmake安装Tesserac
  9. OpenCV ChArUco角的检测
  10. Qt Creator使用Heob检测内存泄漏