由于硬件负载均衡器价格昂贵,作为一个替代方案,软件负载均衡器应运而生。根据其工作原理,软件负载均衡器可分为L4负载均衡器与L7负载均衡器。顾名思义,L4负载均衡器工作在ISO/OSI的第四层(传输层),因此它可以对IP/TCP/UDP/ICMP等网络层或传输层协议进行负载均衡;L7负载均衡器工作在ISO/OSI的第七层(应用层),因此它可以对HTTP/HTTPS等应用层协议进行负载均衡。
1.Linux虚拟服务器
Linux虚拟服务器(Linux Virtual Server,LVS)是由中国工程师章文嵩博士提出的运行于Linux内核模式的软件负载均衡解决方案。LVS从Linux内核2.6.32开始被加入内核代码中。LVS的负载均衡是基于IP地址和TCP/UDP端口的,所以是L4负载均衡。关于LVS的详情,可以参考章文嵩博士的论文“Linux Virtual Server forScalable Network Services”。另外值得一提的是,LVS经常与另一款开源的软件Keepalived联用。Keepalived解决的是各个服务器的健康监控问题,如果某个服务器宕机了,可以将它从LVS的服务器池中移除。
2.HAProxy
与LVS不同,HAProxy(High Availability Proxy)是L7负载均衡,因此它能够根据HTTP请求来进行负载均衡。如图3-4所示,可以利用HAProxy将访问http://myserver1与http://myserver1/blog的请求分配给不同的Web服务器。
3.Nginx
从概念上讲,负载均衡本质上是一种特殊的反向代理。因此,作为一种通用的反向代理解决方案,Nginx当然也可以用作负载均衡。
4.Apache Mod_proxy
模块使用Apache的mod_proxy模块,可以将一台Apache服务器配置成负载均衡器,它根据一定的策略将请求转发给其他Apache服务器处理。这个负载均衡器和其他Apache服务器一起组成一个虚拟服务器,其工作方式类似于硬件负载均衡器。
摘自《分布式系统设计实践》