引言
- 本文介绍几种负载均衡架构及算法。
总体策略
- DNS负载均衡用于实现地理级别的负载均衡;
- 硬件负载均衡用于实现集群级别的负载均衡;
- 软件负载均衡用于实现机器级别的负载均衡;
硬件负载均衡
- 类似路由器、交换机;
- 优点:
- 支持各种负载均衡算法;
- 支持100万并发(一般软件负载均衡也就支持10万并发);
- 很多设备同时支持负载均衡、防火墙、防DDOS攻击功能;
- 缺点:
- 价格高昂;
软件负载均衡
- 优点:
- 便宜;
- 维护和部署简单(安装Ngnix软件即可);
- 缺点:
- 并发量远小于硬件负载均衡,Linux服务器上装一个Nginx大概能到5万每秒;
- 一般不具备防火墙、防DDOS攻击等功能;
DNS负载均衡
- 实现地理级别的负载均衡;
- DNS服务器将域名解析为最靠近用户的主机的IP地址,提升访问速度;
- 缺点:
- DNS缓存不能及时更新,有可能定位到一个已经移走的主机;
- 除了映射IP地址,没有提供其他的负载均衡算法和策略;
均衡算法
- 轮询:
- 负载均衡系统收到请求后,按照顺序轮流分配到服务器上;
- 算法简单,没有考虑机器的状态;
- 加权轮询:
- 分给32核机器的概率是分给16核机器的概率的两倍;
- 考虑了机器性能,但无法根据机器状态动态调整;
- 负载最低优先:
- 根据及其具体状态决定负载均衡策略;
- 考虑:机器连接数、机器的HTTP连接数、CPU占用率、IO占用率;
- 性能最佳优先:
- 根据及其具体状态决定负载均衡策略;
- 考虑:服务器响应时间;
- Hash:
- 对源IP地址hash决定任务分配到哪台服务器;
- 对session ID进行hash决定任务分配到哪台服务器,可以保证同一个会话的包都发送到同一台服务器处理;