单服务器无论如何优化,无论采用多好的硬件设备,总会有达到性能瓶颈期的时候,当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的性能。
高性能集群就是通过采用更多的服务器来提升系统整体的计算能力。高性能集群的复杂性主要体现在需要增加一个任务分配器,以及选择一个合适的任务分配算法。这个任务分配器就是“负载均衡器”。
常见的负载均衡系统包括三种:DNS负载均衡、硬件负载均衡和软件负载均衡。
一、DNS负载均衡
DNS负载均衡的本质是DNS解析同一个域名可以返回不同的IP地址。
DNS是最简单也是最常见的负载均衡方式,一般用来实现地理级别的均衡。例如北方的用户访问北方的机房, 南方的用户访问南方的机房。
优点:1、简单、成本低。无须开发和维护负载均衡器
2、就近访问,提高访问速度。
缺点:1、更新不及时:DNS缓存时间比较长,修改DNS配置后由于缓存的原因会导致用户继续访问修改之前的IP。
2、扩展性差:DNS负载均衡器的控制权在域名商那里,无法根据业务特点开发定制化的功能。
3、分配策略简单:DNS负载均衡支持的算法少,不能区分服务器的差异,无法感知服务器的状态。
二、硬件负载均衡
硬件负载均衡通过单独的硬件设备来实现负载均衡功能。
优点:1、功能强大,全面支持各层级的负载均衡和全面的负载均衡算法,支持全局负载均衡。
2、性能强悍:一般可以支持到上百万的并发。
3、稳定性高
4、支持安全防护:具备防火墙、防DDOS攻击等安全功能。
缺点:1、价格昂贵:一般只有土豪公司才会去用。
2、扩展能力差:硬件设备可以根据业务进行配置,但无法扩展和定制。
三、软件负载均衡
软件负载均衡通过软件来实现负载均衡功能,常见的有nginx和lvs;
nginx:nginx是软件的七层负载均衡,支持http和e-amil协议。
nginx的性能是万级的,大概能达到5万/秒。
lvs:lvs是linux内核的四层负载均衡,和协议无关,几乎可以支持所有应用;如:聊天、数据库等。
lvs的性能是十万级的,据说可达到80万/秒。
优点:1、简单:部署和维护都很简单
2、便宜:在服务器上安装软件即可
3、灵活:四层和七层协议可根据业务进行选择。也可以通过插件来实现业务的定制化功能
缺点:性能一般
四、负载均衡算法
1、轮询:按顺序轮流分配到服务器上。
2、加权轮询:根据分配的服务器权重进行任务分配,权重高的分配的多。
3、负责最低优先:将任务分配给当前负载最低的服务器。
4、性能最优类:需要收集和分析每个服务器每个任务的响应时间。
5、Hash:可根据任务中的某些信息进行Hash运算,将相同Hash值的请求 分配到同一台服务器上面;一般用源地址Hash和IP哈希两种方式。