LVS是Linux VirtualServer的缩写,意思是Linux虚拟服务器,早在2.4内核就已经合并入linux标准内核,并被全球各大互联网公司广泛使用;据我所知,国内百度/新浪/阿里/腾讯等都在使用LVS;下图是LVS在常用互联网应用架构中的位置:LVS处于最前端,用于将用户请求转发到后端的多台webserver上。
LVS引入Virtual Server的概念,用户的请求由Virtual Server按一定负载均衡策略(如,round-robin)转发到多台后端webserver上,后端webserver被称为RealServer。
注:当前,无论是LVS还是商业LB均采用了VirtualServer的概念。
对于用户来说,其一直和Virtual Server通讯,不用关心后端有哪些RealServer;对于服务网站来说,其可以根据请求规模扩大/缩减RealServer数量,而不需要通知用户。
介绍到这,可能有人会问,在LVS出现以前,还有哪些LB技术?LVS比这些技术好在哪里?why LVS?
在这之前,普遍使用DNS技术来实现LoadBalance,例如,www这个域名在DNS中配置对应5个ip地址(5台apache server);DNS服务器一般会采用round-robin的策略返回ip地址给用户,从而实现流量在5台apache server间的负载均衡。
注1:DNS技术介绍参见:http://en.wikipedia.org/wiki/Domain_Name_System;
注2:常用的DNS开源软件是BIND,参见:https://www.isc.org/software/bind;
和LVS相比,DNS有如下不足:
1.一台apache server down后,DNS中删除相应ip,删除生效时间不可控;(Local DNS不一定严格遵守约定的TTL);
2.负载均衡策略单一,只支持WRR(weight-Round-Robin)策略;
3.Apache Server间流量不均衡,因为每个Local DNS后端的用户数量是不同的,TTL也不同;