早期的负载均衡方案是通过DNS服务器解决的,比如将www.baidu.com映射为ip:14.215.177.38,14.215.177.39,14.215.177.40等等,这样请求就分流到了多个服务器上进行处理了。
但DNS实现负载均衡的缺点也很明显:
1、不能按照Web服务器的处理能力分配负载,DNS负载均衡采用的是简单的轮值负载算法,不能区分服务器之间的差异,只是将请求平均分配到后台的Web服务器上,因此最慢的Web服务器将成为系统的瓶颈。
2、不支持高可靠性,没有考虑容错,DNS服务器会将http请求分配到故障机上,导致不能相应客户端。
3、可能会造成额外的网络问题,比如多台DNS服务器之间交互等。
因此,负载均衡的改进方案至少要满足以下功能:
1、转发请求 2、故障服务器移除 3、服务器恢复正常自动添加
实现以上功能又可通过硬件和软件两方面的改进进行解决:
可以通过使用硬件负载均衡器解决,也可以通过使用软件如LVS,Nginx,apache JK等基于Linux且开源的负载均衡策略。
下面主要记录一些主流负载均衡软件的使用:
①apache JK:是apache提供的一款为解决大量请求而分流处理的开源软件(使用的比较少)
②Nginx:是轻量级的Web服务器/反向代理服务器
优点:
1,可运行于Linux,并且有windows移植版
2,占内存及资源少,并且处理相应请求很快
3,具有很高的可靠性
4,安装简单,配置文件简洁
③LVS(直接就有备机方案),是一个虚拟的服务器集群系统,此项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
优点:
1,抗负载能力强,工作在网络第四层传输层,仅作请求分发之用,没有流量,所以在效率上基本不需太过考虑
2,配置性低,没有太多可配置的选项,所以除了增减服务器,不需要经常空配置文件,大大减小了人为出错的几率
3,工作稳定,稳定性高,并且各种LVS都有双机热备方案,所以不用担心均衡器本身出问题,系统整体非常稳定
4,基本上支持所有应用,因为LVS工作在网络第四层传输层,所以可以对几乎所有应用做负载均衡,包括http,数据库,聊天室等。
ps:LVS已成为2.6版本以上的linux内核的一部分,所以不需要再安装,只需要安装keepalived就可以了,命令:yum -y install keepalived