ASP站长网首先告诉大家一件事,在十一国庆期间,引擎的机器又又。。。又扛不住了流量。
经过监控分析,发现某个服务的一个实例所在的虚拟机扛不住了,所以采取临时措施流量控制之后,问题解决了,但还是造成了不小的损失。
经过此次故障,以及分析故障的过程中对负载均衡又有了新的更加深入的认识,所以将这部分写出来,算是做个故障总结吧图片。
1.写在前面
写本文的目的:
对负载均衡的理解零零散散,不成体系。
阅读这篇文章需要的条件:
对OSI模型有些许了解
有耐心。本文涉及大量的知识点,且只能用文字才能讲清楚,所以文字比较多。
收获:
读完此篇文章,从宏观的角度理解了负载均衡的原理以及实现机制。加深对分布式架构的了解
主要内容:
本文首先从概念开始,讲解什么是负载均衡,以及负载均衡在分布式系统中所承担的角色以及提供的功能。
讲解负载均衡的分类。分别从 软硬件角度、地域范围角度 以及 OSI模型角度 进行分类讲解负载均衡的实现方案。
从负载均衡的策略角度来分析目前业界的负载均衡算法以及其优缺点
好了,准备好了么,让我们开始这次愉快之旅。
2.引言
首先 撇开对线上的影响,如果线上突发来了流量,后端服务扛不住,我们会怎么做呢?无非两种方式:
提升机器配置(CPU、内存、硬盘、带宽等)
加机器
上面两种方式,我们称之为纵向扩展和横向扩展。
纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。
横向扩展,通过添加机器来满足大型网站服务的处理能力。比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。
3.概念
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务或者网络请求)进行平衡,分摊到多个操作单元(服务器或者组件)上进行运行。目的是尽量将网络流量 平均 发送到多个服务器上,以保证整个业务系统的高可用。
负载均衡
在互联网的早期,网络还不是很发达,流量相对较小,业务也比较简单,单台服务器或者实例就有可能满足访问需要。但如今在互联网发达的今天,流量请求动辄百亿、甚至上千亿,单台服务器或者实例已完全不能满足需求,这就有了集群。不论是为了实现高可用还是高性能,都需要用到多台机器来扩展服务能力,用户的请求不管连接到哪台服务器,都能得到相同的相应处理。
另一方面,如何构建和调度服务集群这事情,又必须对用户一侧保持足够的透明,即使请求背后是由一千台、一万台机器来共同响应的,也绝非用户所关心的事情,用户需记住的只有一个域名地址而已。调度后方的多台机器,以统一的接口对外提供服务,承担此职责的技术组件被称为 负载均衡。
负载均衡主要有以下作用:
高并发。通过采取一定的算法策略,将流量尽可能的均匀发送给后端的实例,以此提高集群的并发处理能力。
伸缩性。根据网络流量的大小,增加或者减少后端服务器实例,由负载均衡设备进行控制,这样使得集群具有伸缩性。
高可用。负载均衡器通过算法或者其他性能数据来监控候选实例,当实例负载过高或者异常时,减少其流量请求或者直接跳过该实例,将请求发送个其他可用实例,这使得集群具有高可用的特性。
安全防护。有些负载均衡器提供了安全防护功能。如:黑白名单处理、防火墙等。
4.分类
根据载体类型分类
从支持负载均衡的载体来看,可以将负载均衡分为两类:
硬件负载均衡
软件负载均衡
硬件负载均衡
硬件负载平衡器是一种硬件设备,具有专门的操作系统。硬件负载平衡器位于传入流量和内部服务器之间,本质上充当“流量警察”。当用户访问网站或者使用app某个功能时,它们首先被发送到负载均衡器,然后负载均衡器根据一定的策略,将流量转发到后端不同的服务器。为确保最佳性能,硬件负载均衡器根据自定义规则分配流量,以免后端实例不堪重负。
传统上,硬件负载平衡器和应用服务器部署在本地数据中心,负载平衡器的数量取决于预期的峰值流量。负载均衡器通常成对部署,以防其中一个失败。
目前业界领先的两款硬件负载均衡器:F5和A10
硬件负载均衡
优点:
功能强大:支持全局负载均衡并提供较全面的、复杂的负载均衡算法。
性能强悍:硬件负载均衡由于是在专用处理器上运行,因此吞吐量大,可支持单机百万以上的并发。
安全性高:往往具备防火墙,防 DDos 攻击等安全功能。
缺点
成本昂贵:购买和维护硬件负载均衡的成本都很高(:F5价格在15w~55w不等,A10价格在55w-100w不等)。
扩展性差:当访问量突增时,超过限度不能动态扩容。
软件负载均衡
软件负载均衡指的是在服务器的操作系统上安装负载均衡软件,从此服务器发出的请求经软件负载均衡算法路由到后端集群的某一台机器上。
常见负载均衡软件有:LVS、Nginx、Haproxy。