一、 概念

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

lvs之 lvs原理架构介绍的更多相关文章

  1. (转)OpenStack —— 原理架构介绍(一、二)

    原文:http://blog.51cto.com/wzlinux/1961337 http://blog.51cto.com/wzlinux/category18.html-------------O ...

  2. Kubernetes 原理架构介绍(一)

    目录 一.Kubernetes 是什么 二.Kubernetes 设计架构 三.Kubernetes的核心技术概念和API对象 Cluster Master Node Pod Controller D ...

  3. LVS负载均衡原理

    一.LVS基本原理概述 LB集群的实现,LB即负载均衡集群 硬件:F5 BIG-IP,Citrix NetScaler,A10,Array,Redware 软件:Lvs,nginx,haproxy,a ...

  4. LVS 负载均衡原理详解

    LVS简介 LVS是一个开源软件,由章文嵩博士于1998年5月创立,可以实现Linux平台下的简单负载均衡.LVS是Linux Virtual Server的简写,是一个虚拟的服务器集群系统. LVS ...

  5. LVS+Nginx(LVS + Keepalived + Nginx安装及配置)

    (也可以每个nginx都挂在上所有的应用服务器)  nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单.配置简单.相关材料也特别多. lvs是国内的章文嵩博士的大作,比nginx被广 ...

  6. 大型网站技术架构介绍--squid

    一.大型网站技术架构介绍 1.pv高  ip高 并发量 2.大型网站架构重点    1. 高性能:响应时间,TPS,系统性能计数器.缓存,消息队列等.     高可用性High Availabilit ...

  7. 安装LVS安装LVS和配置LVS的工作比较繁杂

    安装LVS安装LVS和配置LVS的工作比较繁杂,读者在配置的过程中需要非常细心和耐心.在本节我们将对其进行详细地介绍.主要包括如下几个核心步骤:1.获取支持LVS的内核源代码如果读者需要使用LVS,需 ...

  8. python网络编程之C/S架构介绍

    标签(空格分隔): c/s架构介绍 什么是C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),后续我们可以试着写个c/s软件实现服务器软件与客户端软件基于网络通信: 计 ...

  9. Unity3d 发动机原理详细介绍

    Unity3d 发动机原理详细介绍 www.MyException.Cn   发布于:2013-10-08 16:32:36   浏览:46次 0     Unity3d 引擎原理详细介绍 体系结构 ...

随机推荐

  1. 一条sql语句引发mysql不停创建临时表的问题解决..coping to tmp table on desk

    (不懂临时表的先看 MySQL临时表 ) 首先,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间.因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表.     ...

  2. hdu2389二分图之Hopcroft Karp算法

    You're giving a party in the garden of your villa by the sea. The party is a huge success, and every ...

  3. javascript 六种数据类型(一)

    js的数据类型和常见隐式转化逻辑. 一.六种数据类型 原始类型(基本类型):按值访问,可以操作保存在变量中实际的值.原始类型汇总中null和undefined比较特殊. 引用类型:引用类型的值是保存在 ...

  4. Layout基本属性总结

    在Android中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),GridLayout(网格布局),RelativeLayout(相对布局),T ...

  5. 关于Yii框架的基础知识

    第一次写博文,也不知道怎么写,不太熟悉,带小伙伴学习一样我日常使用的Yii框架. PHP中的开发框架有很多,比如:ThinkPHP.Yii.CI.Laravel.Phalcon等.现在流行度最高的是L ...

  6. php框架之我见:php开发到底需不要用框架?

    本来就很好,结果无论软件CMS还是各种框架,都自己制造一套自己的规则! 关键还不通用! 我学PHP语法 语义累了半年好不容易熟悉,结果学个框架又学半年,然后框架升级或者去学其他框架,之前学的又等于没用 ...

  7. SVN提交后自动推送消息到钉钉群

    钉钉设置机器人配置 1.进入配置机器人入口 2.添加机器人 3.测试WebHook请求 本人使用Postman进行测试 4.配置SVN 4.1 配置 Pre-commit hook 设置提交内容必须包 ...

  8. 用户交互式命令:read

    read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开. 语法 read [option]... [name . ...

  9. Linux下链接数据库图形化工具

    (一).Linux环境下mysql的安装.SQL操作 Linux下安装MySQL (rmp --help) 基本步骤:上传软件->检查当前Linux环境是否已经安装,如发现系统自带的,先卸载-& ...

  10. python selenium 元素定位(三)

    上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到 ...