【面试虐菜】—— LVS负载均衡
Load Balancer(负载均衡器):
Load Balancer是整个集群系统的前端,负责把客户请求转发到Real Server上。Load Balancer通过Ldirectord监测各Real Server的健康状况。在Real Server不可用时把它从群中剔除,恢复时重新加入。
Backup是备份Load Balancer,当Load Balancer不可用时接替它,成为实际的Load Balancer。
Server Array(服务器群):
Server Array是一组运行实际应用服务的机器,比如WEB, Mail, FTP, DNS, Media等等。在实际应用中,Load Balancer和Backup也可以兼任Real Server的角色。以下的测试就是一台服务器既担任了LVSserver,同时也是realserver节点.
Shared Storage(共享存储):
Shared Storage为所有Real Server提供共享存储空间和一致的数据内容。
Director: 前端负载均衡器即运行LVS服务可以针对web、ftp、cache、mms甚至mysql等服务做load balances。
RealServer: 后端需要负载均衡的服务器,可以为各类系统,Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也可以作为 RealServer使用.
LVS( Linux Virtual Server),Linux下的负载均衡器,支持LVS-NAT、 LVS-DR、LVS-TUNL三种不同的方式
nat用的不是很多,主要用的是DR、TUNL方式。
DR方式适合所有的RealServer同一网段下,即接在同一个交换机上.
TUNL方式就对于RealServer的位置可以任意了,完全可以跨地域、空间,只要系统支持Tunnel就可以,方便以后扩充的话直接Tunl方式即可
基础知识介绍
1、LVS基础及介绍
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩(目前就职于阿里)博士成立,是中国国内最早出现的自由软件项目之一。
目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);
十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)
【参考资料:】
1)官方中文参考资料: http://www.linuxvirtualserver.org/zh/index.html
2)LinuxTone 相关LVS技术档汇总: http://bbs.linuxtone.org/thread-1191-1-1.html
2、 LVS 三种IP负载均衡技术对比
三种IP负载均衡技术的优缺点归纳在下表中:
| VS/NAT | VS/TUN | VS/DR | |
| Server | any | Tunneling | Non-arp device | 
| server network | private | LAN/WAN | LAN | 
| server number | low (10~20) | High (100) | High (100) | 
| server gateway | load balancer | own router | Own router | 
【注】 以上三种方法所能支持最大服务器数目的估计是假设调度器使用100M网卡,调度器的硬件配置与后端服务器的硬件配置相同,而且是对一般Web服务。使用更 高的硬件配置(如千兆网卡和更快的处理器)作为调度器,调度器所能调度的服务器数量会相应增加。当应用不同时,服务器的数目也会相应地改变。所以,以上数 据估计主要是为三种方法的伸缩性进行量化比较。
3、LVS目前实现的几种调度算法
IPVS在内核中的负载均衡调度是以连接为粒度的。在HTTP协议(非持久)中,每个对象从WEB服务器上获取都需要建立一个TCP连接,同一用户的不同请求会被调度到不同的服务器上,所以这种细粒度的调度在一定程度上可以避免单个用户访问的突发性引起服务器间的负载不平衡。
在内核中的连接调度算法上,IPVS已实现了以下十种调度算法:
* 轮叫调度(Round-Robin Scheduling)
* 加权轮叫调度(Weighted Round-Robin Scheduling)
* 最小连接调度(Least-Connection Scheduling)
* 加权最小连接调度(Weighted Least-Connection Scheduling)
* 基于局部性的最少链接(Locality-Based Least Connections Scheduling)
* 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
* 目标地址散列调度(Destination Hashing Scheduling)
* 源地址散列调度(Source Hashing Scheduling)
* 最短预期延时调度(Shortest Expected Delay Scheduling)
* 不排队调度(Never Queue Scheduling)
对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
Ldirecotrd配置选项及ipvsadm使用参数.
| 
 ldirectord配置选项  | 
 ipvsadm使用的参数  | 
 ipvsadm -L的输出  | 
 LVS转发方法  | 
| 
 gate  | 
 -g  | 
 Route  | 
 LVS-DR  | 
| 
 ipip  | 
 -i  | 
 Tunnel  | 
 LVS-TUN  | 
| 
 masq  | 
 -m  | 
 Masq  | 
 LVS-NAT  | 
4、集群架构时我们应该采用什么样的调度算法?
在一般的网络服务(如HTTP和Mail Service等)调度中,我会使用加权最小连接调度wlc或者加权轮叫调度wrr算法。
基于局部性的最少链接LBLC和带复制的基于局部性最少链接LBLCR主要适用于Web Cache集群。
目标地址散列调度和源地址散列调度是用静态映射方法,可能主要适合防火墙调度。
最短预期延时调度SED和不排队调度NQ主要是对处理时间相对比较长的网络服务。
其实,它们的适用范围不限于这些。我想最好参考内核中的连接调度算法的实现原理,看看那种调度方法适合你的应用。
5、LVS的ARP问题
2.4.x kernels:
Hidden Patch
arptable
iptables
2.6.x kernels: (关闭arp查询响应请求)
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
arping tools
二、基础知识及一些要点
1、InActConn并不代表错误连接,它是指不活跃连接(Inactive Connections),
我们将处于TCP ESTABLISH状态以外的连接都称为不活跃连接,例如处于SYN_RECV状态的连接,处于TIME_WAIT状态的连接等。
2、用四个参数来关闭arp查询响应请求:
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
3、ipvsadm -L -n --stats
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
连接数 输入包 输出包 输入流量 输出流量
4、注意事项:
1)在LVS方案中,虚拟ip地址与普通网络接口大大不同,这点需要特别注意。
虚拟ip地址的广播地址是它本身,子网掩码是255.255.255.255。 为什么要这样呢?因为有若干机器要使用同一个ip地址,
用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。
2)假如两台VS之间使用的互备关系,那么当一台VS接管LVS服务时,可能会网络不通,这时因为路由器的MAC缓存表里关于vip这个地址的MAC地 址还是被替换的VS的MAC,有两种解决方法,一种是修改新VS的MAC地址,另一种是使用send_arp 命令(piranha软件包里带的一个小工具) 格式如下:
send_arp:
send_arp [-i dev] src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr
这个命令不一定非要在VS上执行,只+要在同一VLAN即可。
/sbin/arping -f -q -c 5 -w 5 -I eth0 -s $WEB_VIP -U $GW
5.Virtual Server via Direct Routing(VS/DR)
VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。
6. LVS 经验:
1). LVS调度的最小单位是“连接”。
2). 当apache的KeepAlive被设置成Off时,“连接”才能被较均衡的调度。
3). 在不指定-p参数时,LVS才真正以“连接”为单位按“权值”调度流量。
4). 在指定了-p参数时,则一个client在一定时间内,将会被调度到同一台RS。
5). 可以通过”ipvsadm ?set tcp tcpfin udp”来调整TCP和UDP的超时,让连接淘汰得快一些。
6). 在NAT模式时,RS的PORT参数才有意义。
7). DR和TUN模式时,InActConn 是没有意义的(Thus the count in the InActConn column for LVS-DR, LVS-Tun is
inferred rather than real.)
/sbin/arping -f -q -c 5 -w 5 -I eth0 -s $WEB_VIP -U $GW
三、LVS 性能调优
Least services in System or Compile kernel.
Performace Tuning base LVS:
LVS self tuning( ipvsadm Timeout (tcp tcpfin udp)).
ipvsadm -Ln --timeout
Timeout (tcp tcpfin udp): 900 120 300
ipvsadm --set tcp tcpfin udp
Improving TCP/IP performance
net.ipv4.tcp_tw_recyle=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_keepalive_time=1800
net.ipv4.tcp_fin_timeout=30
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.core.netdev_max_backlog=3000
1 通过NAT实现虚拟服务器(VS/NAT)
2 通过IP隧道实现虚拟服务器(VS/TUN)
3 通过直接路由实现虚拟服务器(VS/DR)
| 
 | 
 VS/NAT 
 | 
 VS/TUN 
 | 
  VS/DR 
 | 
| 
 Server 
 | 
 any 
 | 
 Tuneling 
 | 
 Non-arp device 
 | 
| 
 server number 
 | 
 low10-20 
 | 
 high100 
 | 
 high100 
 | 
| 
 server gateway 
 | 
 loadbalancer 
 | 
 own router 
 | 
 own router 
 | 
| 
 server network 
 | 
 private  
 | 
 lan/wan 
 | 
 lan 
 | 
【面试虐菜】—— LVS负载均衡的更多相关文章
- 观nginx与lvs负载均衡的较量
		
在技术工作者中,常用到的就是lvs负载均衡和Nginx负载均衡了.这两者也是比较普及的.那么,根据不同的需求,两者存在着不同的优势.具体选择哪一个,还要看您的要求了.那么我们在此为大家分享一篇文章,对 ...
 - 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
		
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
 - lvs负载均衡的搭建
		
lvs负载均衡的搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在部署环境前,我们需要了解一下一些协议 一.什么是arp 地址解析协议,即ARP(Addr ...
 - nginx 反向代理 和lvs负载均衡
		
nginx反向代理:用户请求nginx代理服务器然后代理服务器将用户请求转为服务器再由nginx代理服务器将服务器的响应反应给用户. lvs负载均衡:用户请求nginx代理服务器然后代理服务器将用户请 ...
 - (转)详解LVS负载均衡之三种工作模型原理和10种调度算法
		
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LV ...
 - 三种LVS负载均衡技术的优缺点----负载均衡调度算法
		
三种LVS负载均衡技术的优缺点归纳以下表: VS/NATVS/TUNVS/DR 服务器操作系统任意支持隧道多数(支持Non-arp) 服务器网络私有网络局域网/广域网局域网 服务器数目(100M网络) ...
 - 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)
		
课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...
 - LVS负载均衡的三种模式和八种算法总结
		
三种LVS负载均衡模式 调度器的实现技术中,IP负载均衡技术是效率最高的,IP虚拟服务器软件(IPVS)是在linux内核中实现的。 LVS负载均衡模式---1.NAT模式 NAT用法本来是因为网络I ...
 - LVS负载均衡中arp_ignore和arp_annonuce参数配置的含义
		
先简单的介绍下关于LVS负载均衡 LVS(Linux Virtual Server)Linux服务器集群系统 针对高可伸缩,高可用服务的需求,给予IP层和内容请求分发的负载均衡调度解决方法,并在Li ...
 - LVS 负载均衡解决方案 (windows IIS)
		
LVS 负载均衡解决方案 因为我们的产品运行的主流平台是WINDOWS+IIS+SQLSERVER(2000以上版本),而LVS+KEEPALIVED是LINUX下的四层负载均衡软件.其有如下特点: ...
 
随机推荐
- 免费公测:RDS只读实例
			
免费公测:RDS只读实例  简要介绍 在对数据库有少量写请求,但有大量的读请求的应用场景下,单个实例可能无法抵抗读取压力, 甚至对主流程业务产生影响.为了实现读取能力的弹性扩展,分担数据库压力,阿里 ...
 - 【Linux/Ubuntu学习 14】Linux下查看文件和文件夹大小
			
当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. ...
 - iOS - UI - UIWebView
			
1.UIWebView UIWebView 是 苹果提供的用来展示网页的UI控件.它也是最占内存的控件. iOS8.0 webkit框架. WKWebView,相比UIWebView,节省了1/3~1 ...
 - Oracle 基础 游标
			
一:游标的基本原理 游标用来处理从数据库中检索的多行记录(使用SELECT语句).利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集. 为了处理SQL语句,Oracle将在内存中分配一个区域, ...
 - Linux下命令sort, uniq
			
标题:sort, uniq 一.sort命令的使用 1. 作用:sort命令顾名思意,其可以帮助我们进行排序,而且可以依据不同的数据类型来排序.例如数字和文字的排序就不一样,sort可以指 ...
 - [转]c# xml.Load() locking file on disk causing errors
			
本文转自:http://stackoverflow.com/questions/1812598/c-sharp-xml-load-locking-file-on-disk-causing-errors ...
 - zoj 3057 博弈
			
思路:对于TT来说,如果数量分别为a a b或 a b a,或 b a a的形式,那么TT必赢,因为TT可以使其成为 a a a的形式,那么不论DD 怎么拿,都是TT最后使其成为a a a 的形式,0 ...
 - 写入数据到Plist文件中时,第一次要创建一个空的数组,否则写入文件失败
			
#pragma mark - 保存数据到本地Plist文件中 - (void)saveValidateCountWithDate:(NSString *)date count:(NSString *) ...
 - poj动态规划列表
			
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
 - hive sql 语法详解
			
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...