v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

LVS详解

负载均衡技术

1、为什么要使用负载均衡技术?

假如我们有一个咨询类的网站,之允许100个用户同时在线访问,网站上线初期,由于知名度比较小,通常只有几个用户经常上线,后期知名度提高了,百度和谷歌又收录了我们的网站,于是同时在线的用户量直线上升,很快达到了上千人,于是,网站负荷加重了,经常会“反应迟钝”,这时用户开始抱怨,为了不影响用户对我们的信心,就一定要想办法解决这个一个问题,

那么我们想想,如果有几台或者几十台相同配置的机器,前端放一个转发器,

轮流转发客户对网站的请求,每台机器将用户数控制在100以内,那么网站的反应速度就会大大提高,即使其中的某台服务器因为硬件故障了导致宕机了,也不会影响用户的访问,那么其中,这个神奇的转发器就是负载均衡(Director)

那么什么是负载均衡呢?负载均衡建立在现有的网络结构之上,它提供了一种廉价、有效、透明的方法来扩大网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,以及提高网络的灵活性和可用性,通过负载均衡器,我们可以实现N台廉价的Linux服务器并行处理,从而达到小型机或者大型机计算能力,这也是为何负载均衡如此流行的原因。

向上扩展(Scale ON):所谓的向上扩展。就是把当前的服务器进行硬件升级。。硬件升级带来的效果不是线性的。如果架构设计不好。那么性能不但不能提升。而且还会下降。

向外扩展(Scale OUT):所谓的向外扩展。那么我们可以做Load Balancing:LB (负载均衡技术)

Ø  系统高可用性

Ø  系统可扩展性

Ø  负载均衡能力

LVS+keepalived能很好的实现以上的要求,LVS提 供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后 很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的 配置文件,并能实现无缝配置变更!

2、Lvs介绍模式介绍

(1)、LVS

LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负 载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)

NAT负载模式

NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(原地址NAT)。

如果把NAT的过程稍微变化,就可以 成为负载均衡的一种方式。原理其实就是把从客户端发来的IP包的IP头目的地址在DR上换成其中一台REALSERVER的IP地址并发至此 REALSERVER,而REALSERVER则在处理完成后把数据经过DR主机发回给客户端,DR在这个时候再把数据包的原IP地址改为DR接口上的 IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经DR,DR压力比较大。

NAT模式特点:

  集群节点跟Direcator 必须在同一个IP网络中。
  RIP通常是私有地址,仅仅用于个集群之间通信。
  director位于Client和real server之间,并负责处理进出的所有通信。
  realservet必须将网关指向DIP。同时也支持端口影射
  Realserver可以使用任意OS
  在较大应用规模当中,单个Director会出现瓶颈
  大概可以带10个左右的SERVER就会出现瓶颈。

LVS负载均衡模式
直接路由模式(DR

直接路由模式比较特别,很难说和什么方面相似,前NAT和TUN种模式基本上都是工作在网络层上(三层),而直接路由模式则应该是工作在数据链路层上(二层)。其原理 为,DR和REALSERVER都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有REALSERVER对本身这个IP的ARP请求保持静
默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的REALSERVER,把目的MAC地址改为 REALSERVER的MAC并发给这台REALSERVER。这时REALSERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和REALSERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。

 DR模式特点:
     每个集群节点跟dr必须在同一个物理网络(局域网)当中(dr和web不能隔了有路由器)
     VIP可以使用公网地址,实现远程管理和监控
     director只负责处理进站请求,响应的请求封装后直接由Relserver发给客户端。
     Realserver不能将Direc当中网关。只能选择前当网关。
     Direc不能支持端口映射。VIP的端口必须和WEB服务端口一致
     大多数的操作系统都可以应用在relserver上。
     Direc性能必NAT要好很多。处理速度提高N倍

TUN负载模式
IP
隧道模式

隧道模式则类似于VPN的方式,使用网络分层的原理,在从客户端发来的数据包的基础上,封装一个新的IP头标记(不完整的IP头,只有目的IP部)发给 REALSERVER,REALSERVER收到后,先把DR发过来的数据包的头给解开,还原其数据包原样,处理后,直接返回给客户端,而不需要再经过 DR。需要注意的是,由于REALSERVER需要对DR发过来的数据包进行还原,也就是说必须支持IPTUNNEL协议。所以,在REALSERVER 的内核中,必须编译支持IPTUNNEL这个选项。IPTUNNEL也在Net working options里面。

  TUN模式特点:

     集群节点可以跨越互联网。
       Relserver的RIP必须是公网地址(真实环境中)
       Director紧处理进站请求
       由Relserver直接响应客户端
       OS必须支持隧道协议,不支持端口映射.

LVS负载均衡的八种调度算法

  RR算法:LVS负载均衡算法1.轮叫调度(Round-RobinScheduling)

  WRR算法:LVS负载均衡算法2.加权轮叫调度(WeightedRound-RobinScheduling)

  LC算法:LVS负载均衡算法3.最小连接调度(Least-ConnectionScheduling)

  WLC算法:LVS负载均衡算法4.加权最小连接调度(WeightedLeast-ConnectionScheduling)

   LBLC算法:LVS负载均衡算法5.基于局部性的最少链接(Locality-BasedLeastConnectionsScheduling)

   LBLCR算法:LVS负载均衡算法6.带复制的基于局部性最少链接(Locality-BasedLeastConnectionswithReplicationScheduling)

   DH算法:LVS负载均衡算法7.目标地址散列调度(DestinationHashingScheduling)

SH算法:LVS负载均衡算法8.源地址散列调度(SourceHashingScheduling)

(2)、keepalived

Keepalived 是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败
切换,提高系统的可用性

3、lvs+keepalived架构图

4、lvs持久性连接

对于电子商务网站来说,用户在挑选商品的时候使用的是80端口来浏览的,当付款的时候则是通过443的ssl加密的方式,当然当用户挑选完商品付款的时 候,我们当然不希望https的443跳转到另外一台REAL SERVER上,很显然应该是同一REAL
SERVER才对,这时候就要用到基于防火墙标记的持久连接,通过定义端口的姻亲关系来实现。在生产环境中用的最多的也是PNMP即基于防火墙标记的持久 连接。好了引子就说到这下面我们就来详细说说LVS的持久连接……

1.PPC(Persistent Port Connections):将来自于同一个客户端对同一个集群服务的请求,始终定向至此前选定的RS;(持久端口连接)
例如:client---->LVS(80)---->RS1 或 client---->LVS(23)---->RS2
缺陷:期望访问不同的端口到同一台RS上,无法实现。
配置:
ipvsadm -A -t 172.16.100.1:80 -s rr -p 3600
ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.10 -g -w 2
ipvsadm -a -t 172.16.100.1:80 -r 172.16.100.11 -g -w 2

2.PCC(Persistent Client Connections):将来自于同一个客户端对所有端口的请求,始终定向至此前选定的RS;(持久客户端连接)
  说明:PCC是一个虚拟服务没有端口号(或者端口号为0),以"-p" 来标识服务。
  缺陷:定向所有服务,期望访问不同的Real Server无法实现。
配置:
ipvsadm -A -t 172.16.100.1:0 -s rr -p 3600
ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.10 -g -w 2
ipvsadm -a -t 172.16.100.1:0 -r 172.16.100.11 -g -w 2

3.PNMPP(Persistent Netfilter Marked Packet
Persistence):持久防火墙标记连接,根据iptables 的规则,将对于某类服务几个不同端口的访问定义为一类;

  先对某一特定类型的数据包打上标记,然后再将基于某一类标记的服务送到后台的
Real Server上去,后台的Real Server 并不识别这些标记。将持久和防火墙标记结合起来就能够实现端口姻亲功能,只要是来自某一客户端的对某一特定服务(需要不同的端口)的访问都定义到同一台 Real Server上去。

  案例:一个用户在访问购物网站时同时使用HTTP(80)和HTTPS(443)两种协议,我们需要将其定义到同一台Real Server上,而其他的服务不受限制。
配置:

iptables -t mangle -A PREROUTING
-d 172.16.100.1 -i eth0 -p tcp --dport 80 -j MARK --set-mark 8

iptables -t mangle -A PREROUTING
-d 172.16.100.1 -i eth0 -p tcp --dport 443 -j MARK --set-mark 8

ipvsadm -A -f 8 -s rr -p 600

ipvsadm -a -f 8 -r 172.16.100.10
-g -w 2

ipvsadm -a -f 8 -r 172.16.100.11
-g -w 1

四、持久连接命令

1.ipvsadm -A|E … -p timeout

2.选项

3.-p timeout 指定持久连接时长,默认为360秒,单位是秒,即6分钟

http://www.it165.net/admin/html/201307/1565.html

LVS详解的更多相关文章

  1. 项目实战:负载均衡集群企业级应用实战—LVS详解

    目录 一.负载均衡集群介绍 二.lvs 的介绍 三.LVS负载均衡四种工作模式 1.NAT工作模式 2.DR工作模式 3.TUN工作模式 4.full-nat 工作模式 5.四者的区别 四.LVS i ...

  2. LVS 详解

    http://zh.linuxvirtualserver.org/node/25 http://chrinux.blog.51cto.com/6466723/1198748 http://www.cn ...

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

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

  4. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  5. 使用LVS实现负载均衡原理及安装配置详解

    负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学 ...

  6. Nginx/LVS/HAProxy 负载均衡软件的优缺点详解

    Nginx/LVS/HAProxy 负载均衡软件的优缺点详解   Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...

  7. LVS原理详解(3种工作方式8种调度算法)--老男孩

    一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...

  8. 3、lvs调度方法详解

    3.lvs类型和调度方法详解    http://www.178linux.com/13570 集群:将多台主机组织起来满足某一特定需求: 集群类型: LB:Load Balancing, 负载均衡集 ...

  9. LVS原理详解(3种工作模式及8种调度算法)

    2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法)   LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong  发布日期: ...

随机推荐

  1. Eclipse下配置和使用Hibernate Tools

    本文转自:http://radiumwong.iteye.com/blog/358585 Hibernate Tools可以通过访问已经建立好的数据库以反向工程方式生成POJO文件. 今天就来说一下如 ...

  2. Inno Setup入门(二)——修改安装过程中的图片

    修改安装过程中的图片 一般编译之后,安装过程中出现在左边图片是是下图这个样子的: 其实也可以修改它,只需要在setup段中作一点稍微的修改,加一行代码即可: [setup] AppName=Test ...

  3. Asp:Cookies应用指南

    实际上,在web开发中,cookie仅仅是一个文本文件,当用户访问站点时,它就被存储在用户使用的计算机上,其中,保存了 一些信息,当用户日后再次访问这个站点时,web可以将这些信息提取出来.    尽 ...

  4. OpenGL编程指南第版本学习笔记 --- OpenGL程序实现过程(win32 + OpenGL)

    1. 先上代码 头文件glCommon.h #include <GL/glew.h> #include <GL/GL.h> #include <GL/GLU.h> ...

  5. dfs手写栈模板

    在竞赛中如果系统栈很小的话,过深的递归会让栈溢出,这个时候我们就要自己手写栈,将递归转化成手工栈. 方法其实也很简单. 基本思路上,我们就是用栈不断的pop,push.但是何时push,何时pop呢? ...

  6. 在iOS中获取UIView的所有层级结构 相关

    在iOS中获取UIView的所有层级结构 应用场景 在实际 iOS 开发中,很多时候都需要知道某个 UI 控件中包含哪些子控件,并且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便 ...

  7. (一)Python之猜数游戏

    猜数游戏由简如深的编码学习过程: 3次机会: print('------------------我爱鱼C工作室------------------')count=0while count < 3 ...

  8. Android中Edittext的属性

    //此为转载别人的,挺不错的 1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true"  ...

  9. 常见的http状态码

    [200]请求已成功,请求所希望的响应头或数据体将随此响应返回. [301]被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有连结编辑功能 ...

  10. Django - 模型表单(创建、更新、删除)

    urls.py # /music/alubm/add/ url(r'^album/add/$', views.AlbumCreate.as_view(), name="album-add&q ...