http://blog.csdn.net/zwz1984/article/details/45194377

http://blog.csdn.net/zwz1984/article/details/45194447

http://www.178linux.com/58381?utm_source=tuicool&utm_medium=referral

http://sofar.blog.51cto.com/353572/1579894/

http://hot66hot.iteye.com/blog/2050676

lvs的三种工作模式  以及8种调度算法

1.VS/NAT模式 (network address transtion)

2.VS/TUN模式(tunneling)

3. DR 模式(Direct routing)

1.NAT 模式-网络地址转换

Virtualserver via Network address translation (vs/NAT)

通过网络地址转换的方式实现调度,首先调度器LB接收到客户的请求数据包时(请求的目的IP为vip),

根据调度算法决定将请求发送给哪个后端真实服务器(RS).然后调度就把客户端发送的请求数据包的目标IP

地址及端口改成后端真实服务器的IP地址(RIP)这样真实服务器(RS)就能够接收到客户的请求包数据了

真实服务器响应请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器)

把响应后的数据包发送给LB,LB 再接收到响应包后,把包的源地址改成虚拟地址(vip)然后发送回给客户端

调度详细过程

原理图简述:

1)客户端请求数据,目标IP为VIP

2)请求数据到达LB服务器,LB根据调度算法将目的地址修改为RIP地址及对应端口(此RIP地址是根据调度算法得出的。)并在连接HASH表中记录下这个连接。

3)数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver的网关必须是LB,然后将数据返回给LB服务器。

4)收到RS的返回后的数据,根据连接HASH表修改源地址VIP&目标地址CIP,及对应端口80.然后数据就从LB出发到达客户端。

5)客户端收到的就只能看到VIP\DIP信息。

NAT模式的优缺点

1.NAT技术将请求的报文和响应的报文都需要通过LB 进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器

有比较大的瓶颈,一般要求最多只能10-20台节点

2.只需要在LB上配置一个公网IP就可以了

3.每台内部节点服务器的网关地址必须是调度器的LB 的内网地址

4.NAT 模式支持对IP 地址和端口的转换.即用户请求的端口和真实服务器的端口可以不一致

2.TUN模式

vittual sever via ip tunneling 模式:采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,

当客户请求越来越多时,调度器处理的处理能力也会成为瓶颈

为了解决这个问题,调度器把请求的报文通过IP 隧道转发到真实的服务器.真实的服务器将响应处理后的数据直接返回给客户端

这样调度器就只能处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的吞吐量可以提高10倍

VS/TUN的工作流程图如下所示,它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址,而是把客户端请求包装在一个ip  tunnel里面

,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理.并且直接把包通过自己的外网地址发送给客户不用经过LB服务器

Tunnel原理流程图:

原理图过程简述:

1)客户请求数据包,目标地址VIP发送到LB上。

2)LB接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后发送出去。

3)RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。

4)响应处理完毕之后,RS服务器使用自己的出公网的线路,将这个响应数据包发送给客户端。源IP地址还是VIP地址。(RS节点服务器需要在本地回环接口配置VIP,后续会讲)

3.DR 模式(直接路由模式)

Virtual server via direct routing(vs/dr)

DR 模式是通过改写请求报文的目标MAC地址,将请求发给真是服务器的,而真实服务器响应后的处理结果直接返回给客户端用户.同TUN

模式一样,DR 模式可以极大的提高集群系统的伸缩性.而DR模式没有IP隧道的开销,对集群中的真实服务器也没必要必须支持IP隧道协议的要求

但是要求调度器LB 与真实服务器RS 都有一块网卡连接到同一个物理网段上,必须在同一个局域网环境

DR 模式是互联网使用比较多的一种模式

DR模式原理图:

VS/DR模式的工作流程图如上图所示,它的连接调度和管理与NAT和TUN中的一样,它的报文转发方法和前两种不同。DR模式将报文直接路由给目标真实服务器。在DR模式中,调度器根据各个真实服务器的负载情况,连接数多少等,动态地选择一台服务器,不修改目标IP地址和目标端口,也不封装IP报文,而是将请求报文的数据帧的目标MAC地址改为真实服务器的MAC地址。然后再将修改的数据帧在服务器组的局域网上发送。因为数据帧的MAC地址是真实服务器的MAC地址,并且又在同一个局域网。那么根据局域网的通讯原理,真实复位是一定能够收到由LB发出的数据包。真实服务器接收到请求数据包的时候,解开IP包头查看到的目标IP是VIP。(此时只有自己的IP符合目标IP才会接收进来,所以我们需要在本地的回环借口上面配置VIP。另:由于网络接口都会进行ARP广播响应,但集群的其他机器都有这个VIP的lo接口,都响应就会冲突。所以我们需要把真实服务器的lo接口的ARP响应关闭掉。)然后真实服务器做成请求响应,之后根据自己的路由信息将这个响应数据包发送回给客户,并且源IP地址还是VIP

工作模式

VS/NAT

VS/TUN

VS/DR

Real server

(节点服务器)

Config dr gw

Tunneling

Non-arp device/tie vip

Server Network

Private

LAN/WAN

LAN

Server number

(节点数量)

Low 10-20

High 100

High 100

Real server gateway

Load balance

Own router

Own router

优点

地址和端口转换

Wan环境加密数据

性能最高

缺点

效率低

需要隧道支持

不能跨域LAN

lvs 调度算法

lvs调度算法决定了如何在集群节点之间分布工作负荷.当directory调度器收到来自客户端访问VIP 上的集群服务的入站请求时,directory 调度器

必须决定哪个节点应该处理请求.directory 调度器用的调度方法基本分为两类

固定调度算法: rr,wrr,dh,sh

动态调度算法:wcl,lc,lblc,lblcr

rr: 轮循算法,它将请求依次分给不同的rs节点,也就是RS 节点中均摊分配.这种算法简单,但只适合于RS节点处理性能差不多的情况

wrr:加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。

Wlc:加权最小连接数调度,假设各台RS的全职依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS

Dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得需要的RS

SH:源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS

Lc:最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS.

Lblc:基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

LVS调度算法的生产环境选型:

1、一般的网络服务,如http,mail,mysql等常用的LVS调度算法为:

a.基本轮询调度rr

b.加权最小连接调度wlc

c.加权轮询调度wrr

2、基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于web cache和DB cache

3、源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一

lvs负载均衡连接的更多相关文章

  1. LVS负载均衡下session共享的实现方式-持久化连接

    之前简单介绍LVS负载均衡的高可用方案实施,下面详细说明LVS的session解决方案: LVS算法中,SH算法可以实现将同一客户端的请求总是发送给第一次指定的RS,除非该RS出现故障不能再提供服务. ...

  2. LVS负载均衡之持久性连接介绍(session篇)

    在实际生产环境中,往往需要根据业务应用场景来设置lvs的会话超时时间以及防session连接丢失的问题提,如在业务支付环节,如若session丢失会导致重复扣款问题,严重影响到安全性,本小节解将会讲到 ...

  3. 【转】LVS负载均衡之session解决方案 持久连接

    原文地址:http://minux.blog.51cto.com/8994862/1744761 1. 持久连接是什么? 1.1 在LVS中,持久连接是为了用来保证当来自同一个用户的请求时能够定位到同 ...

  4. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  5. lvs负载均衡的搭建

       lvs负载均衡的搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.         在部署环境前,我们需要了解一下一些协议 一.什么是arp 地址解析协议,即ARP(Addr ...

  6. (转)详解LVS负载均衡之三种工作模型原理和10种调度算法

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LV ...

  7. 三种LVS负载均衡技术的优缺点----负载均衡调度算法

    三种LVS负载均衡技术的优缺点归纳以下表: VS/NATVS/TUNVS/DR 服务器操作系统任意支持隧道多数(支持Non-arp) 服务器网络私有网络局域网/广域网局域网 服务器数目(100M网络) ...

  8. 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

    课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...

  9. LVS负载均衡的三种模式和八种算法总结

    三种LVS负载均衡模式 调度器的实现技术中,IP负载均衡技术是效率最高的,IP虚拟服务器软件(IPVS)是在linux内核中实现的。 LVS负载均衡模式---1.NAT模式 NAT用法本来是因为网络I ...

随机推荐

  1. Spring 学习笔记 IoC 基础

    Spring IoC Ioc 是什么 IoC -- Inversion of Control(控制反转)什么是控制?什么是反转? 控制反转了什么? 在很早之前写项目不用 Spring 的时候,都是在 ...

  2. Django框架(十三)—— Djang与Ajax

    目录 Djang与Ajax 一.什么是Ajax 二.Ajax的特点 1.异步 2.局部刷新 三.Ajax优点 四. 基于jquery的Ajax使用 1.基本语法 2.完整使用语法 3.利用ajax提交 ...

  3. 常用内置模块(四)——subprocess、re

    常用模块(四) 一.subprocess模块 1.subprocess为子流程模块,用于执行系统命令,该模块在Python全栈开发中不常用 2.常用方法 run 返回一个表示执行结果的对象 call ...

  4. 绝对 "牛X" 的代码注释,喜欢就拿去用!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:Blankj https://github.com/Blankj/awesome-comment 写在前面的话:一时兴 ...

  5. 高级UI晋升之常用View(三)下篇

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从WebView来介绍常用View: 一.WebView介绍 Andro ...

  6. 大道浮屠诀---NBU7.7.3_oracle11G单机-单机(异机恢复WINDOWS2008平台)

    现有环境说明: 一台WINDOWS2008R2:安装有NBU7.7.3,作为服务端 一台WINDOWS2008R2:安装有oracle11.2.0.3,作为数据库服务器 现假设数据库意外崩溃,需要进行 ...

  7. linux每日命令(3):which命令

    这个命令我也神佑体会它的用处,在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which     查看可执行文件的位置. whereis 查看文件的位置. locate ...

  8. 字节流read方法返回值为什么是int不是byte

    01001000 01001000 01001000 11111111 01001000 -1的原码: 10000001 -1的反码: 11111110 -1的补码: 11111111 所以如果返回值 ...

  9. Eureka备忘

    一. 二. 2.2. eureka集群同步集群相关重要的类com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl: 为了保证集群里所有Eur ...

  10. loop find column

    declare l_sql varchar2(500); -- variable that contains a query l_c sys_refcursor; -- cursor variable ...