高性能负载均衡:分类及架构
极客时间:《从 0 开始学架构》:高性能负载均衡:分类及架构
1、引言
高性能集群的i本质就是通过增加更多的服务器来提升系统整体的计算能力。i高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的任务分配算法。对于任务分配器,现在更流行的通用叫法是“负载均衡器”。任务分配并不是只考虑计算单元的负载均衡,不同的任务分配算法目标不一样,有会基于负载考虑、性能(吞吐量、响应时间)考虑等,即负载均衡不只是为了计算单元的负载达到均衡状态。
2、负载均衡分类
常见的负载均衡系统包括 3 种:DNS 负载均衡、硬件负载均衡和软件负载均衡。
2.1、DNS 负载均衡
DNS 是最简单也是最常见的负载均衡方式,一般用来实现地理级别的均衡。DNS 负载均衡的本质是 DNS 解析同一个域名可以返回不同的 IP 地址。
优点:
简单、成本低:负载均衡工作交给 DNS 服务器处理,无须自己开发或者维护负载均衡设备。
就近访问,提升访问速度:DNS 解析时可以根据请求来源 IP,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能。
缺点:
更新不及时
扩展性差
分配策略比较简单
2.2、硬件负载均衡
硬件负载均衡是通过单独的硬件设备来实现负载均衡功能,这类设备和路由器、交换机类似,可以理解为一个用于负载均衡的基础网络设备。业界典型的硬件负载均衡设备有两款:F5和A10,功能强大、性能强劲,但价格不便宜。
优点:
功能强大:全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。
性能强大
稳定性高
支持安全防护:硬件均衡设备除具备负载均衡功能外,还具备防火墙、防 DDoS 攻击等安全功能。
缺点:
价格昂贵
扩展能力差
2.3、软件负载均衡
软件负载均衡通过负载均衡软件来实现负载均衡功能,常见的有 Nginx 和 LVS,其中 Nginx 是软件的 7 层负载均衡,LVS 是 Linux 内核的 4 层负载均衡。4 层和 7 层的区别就在于协议和灵活性,Nginx 支持 HTTP、E-mail 协议;而 LVS 是 4 层负载均衡,和协议无关,几乎所有应用都可以做,例如,聊天、数据库等。
软件和硬件的最主要区别就在于性能,硬件负载均衡性能远远高于软件负载均衡性能。
软件负载均衡的最大优势是便宜
下面是 Nginx 的负载均衡架构示意图:
优点:
简单:无论是部署还是维护都比较简单。
便宜:只要买个 Linux 服务器,装上软件即可。
灵活:4 层和 7 层负载均衡可以根据业务进行选择;也可以根据业务进行比较方便的扩展,例如,可以通过 Nginx 的插件来实现业务的定制化功能。
缺点:
性能一般:一个 Nginx 大约能支撑 5 万并发。
功能没有硬件负载均衡那么强大。
一般不具备防火墙和防 DDoS 攻击等安全功能。
在实际应用中,基于它们的优缺点进行组合使用。组合的基本原则为:DNS 负载均衡用于实现地理级别的负载均衡;硬件负载均衡用于实现集群级别的负载均衡;软件负载均衡用于实现机器级别的负载均衡。