LVS详解
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详解的更多相关文章
- 项目实战:负载均衡集群企业级应用实战—LVS详解
目录 一.负载均衡集群介绍 二.lvs 的介绍 三.LVS负载均衡四种工作模式 1.NAT工作模式 2.DR工作模式 3.TUN工作模式 4.full-nat 工作模式 5.四者的区别 四.LVS i ...
- LVS 详解
http://zh.linuxvirtualserver.org/node/25 http://chrinux.blog.51cto.com/6466723/1198748 http://www.cn ...
- (转)详解LVS负载均衡之三种工作模型原理和10种调度算法
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LV ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- 使用LVS实现负载均衡原理及安装配置详解
负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学 ...
- Nginx/LVS/HAProxy 负载均衡软件的优缺点详解
Nginx/LVS/HAProxy 负载均衡软件的优缺点详解 Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- 3、lvs调度方法详解
3.lvs类型和调度方法详解 http://www.178linux.com/13570 集群:将多台主机组织起来满足某一特定需求: 集群类型: LB:Load Balancing, 负载均衡集 ...
- LVS原理详解(3种工作模式及8种调度算法)
2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong 发布日期: ...
随机推荐
- Javascript教程
Javascript教程 laiqun@msn.cn Contents 1. javascript嵌入方式 2. javascript语法 3. 数据类型 4. javascript变量 5. 字符串 ...
- Linux查看CPU和内存使用情况 【转】
Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 ...
- Android Studio 如何将包名按层级展示
在project视图右上角有个“设置”的按钮,点开,然后将上图所圈部分去勾选就可以了.
- zookeeper集群实例
zookeeper是什么 Zookeeper,一种分布式应用的协作服务,是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务,它包含一个简单的原语集,应用于分布式应用的协作服务, ...
- iptables-1.4.19 移植到linux
------------------------------------------------------------------------------------------ https://g ...
- SVN-svn path not found: 404 Not Found
报错信息是本地找不到文件 因为我直接移动了项目中的java文件到别的目录,在SVN看来相当于变相的删掉了一个目录的文件,在另外一个目录新增文件, 但是移动文件SVN是不会做删除记录到日志文件中的,所以 ...
- layer弹出层
最近因为项目要求做了一个layer弹出层demo,先看效果图 好了,现在开始上代码 index.jsp <%@ page language="java" import=&qu ...
- 使用HttpUtils 上传视频文件
private void shangchuan(){ //文件的路径 //File file=new File(path); File fi ...
- 函数FindFirstFile
文件查找 Struct Lnode{ Char table[256]; //保存文件夹名 Struct Lnode*next; } 加文件夹入链表 Lnode *newList; Vo ...
- hdu_1007_Quoit Design(最近点对)
题目连接:hdu_1007_Quoit Design 题意: 给你平面上的一些点,让你找出这些点的最近点对的距离 题解: 采用分治,达到O(nlognlogn)的时间复杂度就能艹过去了 #includ ...