什么是负载均衡
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
看到这一连串的专业名词不是很好理解,举个例子大家就懂了。
这次依然用外卖APP的案例,向大家介绍什么是负载均衡。
我们假设一台云服务器ECS可以承载100人的同时进行访问,然而现在是中午,有一万个人同时对外卖APP提起访问请求。
但我们现在只有一台服务器,如果想让这一万人全部完成访问,第一种方法就是排队,但就算一个人进入APP到完成点餐退出只需要花两分钟,轮到最后一个人进来也要到三个小时以后。
所以我们用第二种方法,添加服务器,因为我们用的是云服务器,所以很容易添加,无需自己准备场地、安装、调试、测试。添加了99台服务器后,一万个用户就能够同时访问APP了。
但又出现了一个问题,这一百个服务器怎么分?如果用户都进一个服务器里,那么添加再多服务器也没用。
这个时候就轮到负载均衡登场了。
负载均衡,是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。
通俗讲,就是指上级领导下发一个任务,但工作量大到交给一个人无法完成,于是主管又叫了几个人过来一起处理,由他亲自把大任务分解成多个小任务分配给不同的人,完成分配任务的就叫负载均衡。
负载均衡的算法
负载均衡的算法有多种分类,这里介绍为大家介绍三种常见的,分别是轮询、加权轮询、最小连接。
轮询:
指从第一个服务器开始分配用户,每个服务器都能分到一位用户,等到全部服务器都有被分到用户后,就开始第二轮分配,在服务器又都分到一次用户后开始第三轮,以此类推。
轮询均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
加权轮询:
指给服务器设置权重并遵循轮询的模式,假设给服务器A、B、C分别设置2、1、1的权重,当有100位用户分配给这三个服务器时,分配顺序A-A-B-C-A-A-B-C……最后服务器A、B、C分别会分配到50、25、25位用户。
加权轮询算法根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。
最小连接:
指每次有用户访问时,看当前哪个服务器的连接数最少就分配给哪个服务器。最小连接法是动态负载均衡算法,适用于各个服务器处理的性能相似的时候。
负载均衡技术
常见的软件负载均衡技术有以下几种:
基于DNS的负载均衡由于在DNS服务器中,可以为多个不同的地址配置相同的名字,最终查询这个名字的客户机将在解析这个名字时得到其中一个地址,所以这种代理方式是通过DNS服务中的随机名字解析域名和IP来实现负载均衡。
DNS域名解析负载均衡的优点是将负载均衡工作交给DNS,省略掉了网络管理的麻烦,缺点就是DNS可能缓存A记录,不受网站控制。事实上,大型网站总是部分使用DNS域名解析,作为第一级负载均衡手段,然后再在内部做第二级负载均衡。
反向代理负载均衡传统代理服务器位于浏览器一端,代理浏览器将HTTP请求发送到互联网上。而反向代理服务器则位于网站机房一侧,代理网站web服务器接收http请求。
反向代理的作用是保护网站安全,所有互联网的请求都必须经过代理服务器,相当于在web服务器和可能的网络攻击之间建立了一个屏障。
除此之外,代理服务器也可以配置缓存加速web请求。当用户第一次访问静态内容的时候,静态内存就被缓存在反向代理服务器上,这样当其他用户访问该静态内容时,就可以直接从反向代理服务器返回,加速web请求响应速度,减轻web服务器负载压力。
另外,反向代理服务器也可以实现负载均衡的功能。
由于反向代理服务器转发请求在HTTP协议层面,因此也叫应用层负载均衡。优点是部署简单,缺点是可能成为系统的瓶颈。
数据链路层负载均衡(LVS)数据链路层负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡。
这种数据传输方式又称作三角传输模式,负载均衡数据分发过程中不修改IP地址,只修改目的的mac地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP地址一样,从而达到负载均衡,这种负载均衡方式又称为直接路由方式(DR)。
在上图中,用户请求到达负载均衡服务器后,负载均衡服务器将请求数据的目的mac地址修改为真是WEB服务器的mac地址,并不修改数据包目标IP地址,因此数据可以正常到达目标WEB服务器,该服务器在处理完数据后可以经过网管服务器而不是负载均衡服务器直接到达用户浏览器。
使用三角传输模式的链路层负载均衡是目前大型网站所使用的最广的一种负载均衡手段。在linux平台上最好的链路层负载均衡开源产品是LVS(linux virtual server)。
相关标签: