负载均衡,英文名称为loadbalance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如web服务器、ftp服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。需要说明的是:负载均衡设备不是基础网络设备,而是一种性能优化设备。对于网络应用而言,并不是一开始就需要负载均衡,当网络应用的访问量不断增长,单个处理单元无法满足负载需求时,网络应用流量将要出现瓶颈时,负载均衡才会起到作用。负载均衡有两方面的含义:首先,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高,这就是我们常说的集群(clustering)技术。
常见的有lvs、nginx和haproxy,者者介绍分别如下: lvs:使用集群技术和linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(scalability)、可靠性(reliability)和可管理性(manageability),感谢章文嵩博士为我们提供如此强大实用的开源软件。 lvs的特点是:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
3、工作稳定,自身有完整的双机热备方案;
4、无流量,保证了均衡器io的性能不会收到大流量的影响;
5、应用范围比较广,可以对所有应用做负载均衡;
6、软件本身不支持正则处理,不能做动静分离。 nginx的特点是: 1、工作在网络的7层之上,可以针对http应用做一些分流的策略; 2、nginx对网络的依赖非常小; 3、nginx安装和配置比较简单,测试起来比较方便; 4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量; 5、nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等; 6、nginx仅能支持http和email; haproxy的特点是: 1、haproxy是支持虚拟主机的; 2、能够补充nginx的一些缺点比如session的保持,cookie的引导等工作; 3、支持url检测后端的服务器出问题的检测会有很好的帮助; 4、它跟lvs一样,本身仅仅就只是一款负载均衡软件; 5、haproxy可以对mysql读进行负载均衡,对后端的mysql节点进行检测和负载均衡,不过在后端的mysqlslaves数量超过10台时性能不如lvs; 6、haproxy的算法多;