负载均衡种类及优缺点
负载均衡也不是什么新鲜词儿了,相信大家都有所了解,甚至有的人有过深入的学习和实操,那么本文就来把常见的负载均衡相关东东总结一下。
负载均衡种类
DNS,硬件,软件
DNS负载均衡
DNS是最简单也是最常见的负载均衡方式,一般用来实现“地理级别”的负载均衡,比如说:北方人访问北京的机房,南方人访问广州的机房,西方人访问成都的机房。DNS负载均衡的本质是DNS解析同一个域名可以返回不同的IP地址。比如说:https://www.sina.com.cn/ 在北方的用户使用时会解析成10.210.1.12(北京机房)返回,南方的用户使用时会解析成14.213.164.27返回(广州机房)。
DNS简单示意图

优点
简单、成本低:负载均衡工作交给DNS服务处理,无须自己开发或维护负载均衡设备。
就近访问,提升访问速度:DNS解析时可以根据请求来源IP,解析成距离用户最近的服务器地址,可以加快访问速度,从而到达改善性能。
缺点
更新不及时:DNS缓存的时间比较长,修改DNS陪之后,由于缓存的原因,会导致部分用户还会继续访问修改之前的地址,毫无疑问这样的访问会失败的,不仅达不到负载均衡的效果,更严重的是用户不能正常使用。
扩展性差:DNS负载均衡的控制权限不是使用者的,而是域名商那里,无法根据业务特点针对性做一些定制化功能,更别提扩展性了。
分配策略比较简单:DNS负载均衡支持的算法不多,不能区分服务器的差异,也无法感知后端服务的状态。
针对以上DNS的优缺点,也有部分公司自己实现了HTTP-DNS,即使使用HTTP协议实现一个私有的DNS系统,但是其实和上面的DNS优缺点刚刚相反。
硬件负载均衡
硬件负载均衡是通过单独的设备来实现负载均衡的功能,这类设备和路由器交换机有那么一些类似,更或者可以理解为一个用于负载均衡的基础网络设备。目前业界主要有两款硬件负载均衡:F5和A10。这类设备性能好,功能强大,但是价格可以用昂贵来形容,一般只有银行,国企等大型有钱的企业开会考虑使用此类设备,本人也只是在银行里见识过F5。至于A10没接触过就不撤了。
优点
功能强大:全面支持各层级的负载均衡,支持各种负载均衡算法,支持全局负载均衡。
性能好:一般软件负载均衡能支撑10w+并发已经很不错了,但是硬件的负载均衡却可以支持100w+以上的并发。
高稳定性:因为是商业品,所以经过了良好严格的测试,经过大规模的使用,所以稳定非常高。
安全性高:硬件负载均衡设备除了能处理负载均衡以外,还具有防火墙、防DDOS攻击等效果。
缺点
价格昂贵:我记得之前银行购买F5花了上百万,据说还有更贵的,所以价格可想而知。
扩展性不好:硬件设备可以根据业务进行配置,但无法进行扩展和定制化。
软件负载均衡
软件负载均衡是通过负载均衡软件来实现负载均衡功能的。常见的负载均衡软件有LVS和Nginx。其中LVS是Linux内核的四层负载均衡,四层和七层的区别在于他们协议和灵活性的不同。Nginx是7层负载均衡,支持HTTP,E-mail协议,而LVS是四层负载均衡,所以和协议无关,基本上所有应用都可以做到,比如说:聊天、数据库等。
以下是Nginx的负载均衡简单示意图:

优点
便宜:只要每个Linux服务器,然后装上Nginx或者其他负载均衡软件
灵活:7层和4层负载均衡可以根据业务进行选择,也可以根据业务进行比较方便的扩展,比如:由于业务特殊性需要做一些定制化的功能。
缺点
性能一般:比如说一个Nginx大约能支撑5w并发
功能没有硬件负载均衡强大(这个有点牵强,毕竟价格差距在那里)
安全性远不如硬件负载均衡。