负载均衡 (Load Balancer) 概述
常见的负载均衡系统包括: DNS 负载均衡、硬件负载均衡 和 软件负载均衡
一、DNS 负载均衡
DNS负载均衡 一般用来实现地理级别的均衡
本质: DNS 解析同一个域名可以返回不同的 IP 地址
即, 同样访问 www.xxx.com
, 北方用户解析后获取的地址IP是 北京机房的IP, 南方用户解析后获取的IP地址是 深圳机房的IP
(1) 优点
- 简单、成本低
负载均衡工作交给 DNS 服务器处理, 无须自己开发或维护负载均衡设备
- 就近访问, 提升访问速度
DNS 解析时可以根据请求来源IP, 解析成距离用户最近的服务器地址, 可以加快访问速度, 改善性能
(2) 缺点
- 更新不及时
DNS 缓存的时间比较长, 修改 DNS 配置后, 由于缓存的原因, 还是有很多用户会继续访问修改前的IP
- 扩展性差:
DNS 负载均衡的控制权在域名商那里, 无法根据业务特点针对其做更多的定制化功能和扩展特性
- 分配策略比较简单
DNS 负载均衡支持的算法少, 不能区分服务器的差异, 无法感知后端服务器的状态
针对 DNS 负载均衡的缺点, 对于时延和故障敏感额业务, 有一些公司自己实现了 HTTP-DNS
的功能, 即使用 HTTP
协议实现一个私有的 DNS
系统
二、硬件负载均衡
硬件负载均衡是通过单独的硬件设备来实现负载均衡功能
与路由器交换机类似, 类似一个用于负载均衡的基础网络设备
(1) 优点
- 功能强大
全面支持各层级的负载均衡, 支持全面的负载均衡算法, 支持全局负载均衡
- 性能强大
硬件负载均衡可以支持 100万以上的并发
- 稳定性高
经过严格的测试
- 支持安全防护
还具备防火墙、防 DDOS 攻击等安全功能
(2) 缺点
-
价格昂贵
-
扩展性差
可以根据业务进行配置, 但无法进行扩展和定制
三、软件负载均衡
通过负载均衡软件来实现负载均衡功能, 常见的有 Nginx
和 LVS
Nginx
是软件的 7层负载均衡, 一般的 Linux 服务器上装一个Nginx
大概可以承载 5万/每秒LVS
是 Linux内核的 4层负载均衡,LVS
的性能是十万级, 据说可以达到 80万/每秒
区别在于: 协议和灵活性
Nginx
支持 HTTP、E-mail协议LVS
和协议无关, 几乎所有应用都可以做, 例如, 聊天、数据库等
Nginx
负载均衡架构示意图:
(1) 优点
- 简单
部署、维护相对比较简单
- 便宜
只要买个 Linux 服务器, 装上软件即可
- 灵活
4层 和 7层负载均衡可以根据业务进行选择;也可以根据业务进行比较方便扩展
(2) 缺点
与硬件负载均衡相比:
- 性能一般
- 功能没有硬件负载均衡那么强大
- 一般不具备防火墙和防DDOS攻击等安全功能
四、参考资料
- << 从零开始学架构 >>