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. Javascript教程

    Javascript教程 laiqun@msn.cn Contents 1. javascript嵌入方式 2. javascript语法 3. 数据类型 4. javascript变量 5. 字符串 ...

  2. Linux查看CPU和内存使用情况 【转】

    Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 ...

  3. Android Studio 如何将包名按层级展示

    在project视图右上角有个“设置”的按钮,点开,然后将上图所圈部分去勾选就可以了.

  4. zookeeper集群实例

    zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务,它包含一个简单的原语集,应用于分布式应用的协作服务, ...

  5. iptables-1.4.19 移植到linux

    ------------------------------------------------------------------------------------------ https://g ...

  6. SVN-svn path not found: 404 Not Found

    报错信息是本地找不到文件 因为我直接移动了项目中的java文件到别的目录,在SVN看来相当于变相的删掉了一个目录的文件,在另外一个目录新增文件, 但是移动文件SVN是不会做删除记录到日志文件中的,所以 ...

  7. layer弹出层

    最近因为项目要求做了一个layer弹出层demo,先看效果图 好了,现在开始上代码 index.jsp <%@ page language="java" import=&qu ...

  8. 使用HttpUtils 上传视频文件

    private void shangchuan(){                 //文件的路径        //File file=new File(path);        File fi ...

  9. 函数FindFirstFile

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

  10. hdu_1007_Quoit Design(最近点对)

    题目连接:hdu_1007_Quoit Design 题意: 给你平面上的一些点,让你找出这些点的最近点对的距离 题解: 采用分治,达到O(nlognlogn)的时间复杂度就能艹过去了 #includ ...