高性能集群本质:增加服务器提升系统计算能力。同样输入和逻辑,服务器相同输出。复杂度是分配策略(为任务选择合适算法)
负载均衡器:有的基于负载考虑,有的基于性能(吞吐量、响应时间),有基于业务。
3 种:DNS 负载均衡、硬件、软件负载均衡。
一、DNS 负载均衡
地理级别。例如,北方访问北京机房,南方访问深圳。本质是 DNS 解析同域名返回不同 IP 地址。www.baidu.com,北方用户获取地址61.135.165.224(北京机房IP),南方14.215.177.38(深圳机房IP)
优点
简单、成本低:负载均衡交给 DNS 服务器处理,无须自己开发或者维护负载均衡设备。
就近访问,提升访问速度:加快访问速度,改善性能。
缺点:
更新不及时:DNS 缓存时间长,修改 DNS 配置后,很多用户会继续访问修改前的 IP,访问会失败,不能正常使用,达不到负载均衡
扩展性差:控制权在域名商,无法定制、扩展
分配策略比较简单:算法少;不区分服务器差异,无法感知服务器状态。
对于时延和故障敏感,实现了 HTTP-DNS 功能, HTTP 协议实现私有DNS 系统,和通用的 DNS 优缺点正好相反。
二、硬件负载均衡
和路由器、交换机类似,用于负载均衡基础网络设备。典型:F5 和 A10。强劲、功能强大,价格都不便宜,“土豪”公司才用
优点
功能强大:全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。
性能强大:对比一下,软件负载均衡支持到 10 万级并发已经很厉害了,硬件负载均衡可以支持 100 万以上的并发。
稳定性高:商用硬件负载均衡,经过了良好的严格测试,经过大规模使用,稳定性高。
支持安全防护:硬件均衡设备除具备负载均衡功能外,还具备防火墙、防 DDoS 攻击等安全功能。
缺点
贵:最普通的一台 F5 就是一台“马 6”,好一点的就是“Q7”了。
扩展能力差:硬件设备,可根据业务配置,无法进行扩展和定制。
三、软件负载均衡
Nginx 和 LVS,Nginx 7 层负载均衡,LVS Linux 内核4 层负载均衡。区别就在于协议和灵活性,Nginx 支持 HTTP、E-mail 协议;几乎所有应用都可以做,例如,聊天、数据库等。
软硬件区别在性能,Ngxin 性能万级,Linux 装 Nginx 5 万 / 秒;LVS 十万级,80 万 / 秒;F5 百万级,200 到 800 万 / 秒都有。当然,优势便宜,普通Linux 1 万元左右
优点:
简单:部署、维护简单。
便宜:买个 Linux 服务器,装上软件
灵活:4 层和 7 层负载均衡可以根据业务进行选择;也可以根据业务进行比较方便的扩展,例如,可以通过 Nginx 的插件来实现业务的定制化功能。
缺点(和硬件相比)
性能一般:不具备防火墙和防 DDoS 攻击等安全功能。
四、负载均衡典型架构
硬件负载实现集群;软件负载均衡用于实现机器负载均衡。
三层。
地理:部署北京、广州、上海三个机房
集群:广州机房用F5 设备,到用户请求后,进行集群级别负载均衡,假设 F5 将用户请求发给了“广州集群 2”。
机器:广州集群 2 的负载均衡用的是 Nginx,Nginx 收到用户请求后,将用户请求发送给集群里面的某台服务器,服务器处理用户的业务请求并返回业务响应。
Nginx 简单足够用
小结
设计日活跃1000 万论坛的负载均衡集群,方案是什么?理由?
评论1
日活千万的论坛,这个流量不低了。
1、首先,流量评估。
1000万DAU,换算成秒级,平均约等于116。
考虑每个用户操作次数,假定10,换算成平均QPS=1160。 峰值QPS=11600(按10倍算)
考虑静态资源、图片资源、服务拆分等,流量放大效应,假定10,QPS*10=116000。
2、容量规划。
高可用、异地多活,QPS*2=232000。
半年增长,QPS*1.5=348000。
3、最后方案
三级导流。
第一级,DNS,确定机房,目前量级,可不考虑。
第二级,确定集群,扩展优先,则选Haproxy/LVS,稳定优先则选F5。
第三级,Nginx+KeepAlived,确定实例。
同样1000万日活用户,不同业务特点的QPS差异很大,例如抖音的访问量会明显高于支付业务,论坛业务明显高于工具类业务