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. MySQL事件【转载】

    在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQL语句.对于linux系统熟悉的人都知道linux的cron计划任务,能很方便地实现定期运行指定命令的功能.Mysql在5.1以后推出了 ...

  2. Linux下配置Nginx按天切割日志

    Nginx由于轻巧和高效的设计风格,去掉了一些额外的功能,所以它不像apache那样有自动切割日志. 建立一个脚本文件,并保证这个文件有可执行的权限:1.建立一个文件/root/log.nginx.s ...

  3. php 10.1总

    在做添加时写是否已经有该文件 $_sql1 = "SELECT * FROM tb_user where userName = {$_clean['userName']} "; $ ...

  4. 【转】ThinkPHP 页面跳转

    ThinkPHP 提供了success 与error 方法用于带提示信息的页面跳转,如添加数据后显示提示信息并跳转等.success 方法用于操作成功后的提示,error 用于操作失败后的提示,二者使 ...

  5. JAVA面向对象3---多态

    1. 多态:父类或者接口的引用  指向了子类对象. 多态的好处:提高了代码的扩展性 多态的弊端:父类不能调用子类的特有的内容. 多态的前提: 1.要有关系,继承或实现 2.要有覆盖(重写),因为父类不 ...

  6. mysql char varchar 区别

    数据库建表  字符串字段类型的选择 char与varchar的区别: char      长度固定,char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空 ...

  7. linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...

  8. 函数FindFirstFile

    文件查找 Struct Lnode{ Char table[256];         //保存文件夹名 Struct Lnode*next; } 加文件夹入链表 Lnode *newList; Vo ...

  9. POJ 3419 Difference Is Beautiful(RMQ+二分 或者 模拟)

    Difference Is Beautiful Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%lld & %l ...

  10. POJ 1236 Network of Schools(tarjan算法 + LCA)

    这个题目网上有很多答案,代码也很像,不排除我的.大家的思路应该都是taijan求出割边,然后找两个点的LCA(最近公共祖先),这两个点和LCA以及其他点构成了一个环,我们判断这个环上的割边有几条,我们 ...