2022
我们一起努力

负载均衡原理,负载均衡原理是什么

目录:

  • 1、负载均衡工作原理
  • 2、F5负载均衡如何实现,这其中的原理又是什么?
  • 3、负载平衡的NAT负载均衡原理
  • 4、负载均衡原理内容是什么?
  • 5、nginx负载均衡原理
  • 6、负载均衡的几种常用方式

负载均衡工作原理

网络负载平衡使用两台或更多台一起工作的主机计算机组成的群集,为服务器提供了高可用性和高伸缩性。Internet 客户端使用一个 IP 地址或一组地址访问群集。客户端无法区别群集和单一服务器。服务器应用程序并不表明它们是在群集上运行的。但是,网络负载平衡群集与运行单个服务器应用程序的单个主机有很大的区别,因为即使在某个群集主机发生故障的情况下,它也可以提供不间断服务。群集对客户端请求的响应也比单个主机快。

如果某个主机发生故障或脱机,则网络负载平衡通过将传入的网络通信重定向到工作的群集主机,从而带来了高可用性。连到脱机主机的现有连接将丢失,但是 Internet 服务仍然是可用的。在多数情况下(例如,就 Web 服务器而言),客户端软件可以自动重试失败的连接,而且客户端在接收响应时,只有数秒钟的延迟。

网络负载平衡通过在分配给网络负载平衡群集的一个或多个虚拟 IP 地址(群集 IP 地址)间分配传入的网络通信,从而带来了可变化的性能。然后,群集中的主机同时对不同的客户端请求甚至来自同一客户端的多个请求做出响应。例如,Web 浏览器可以从网络负载平衡群集中的不同主机获得所有单张网页中的多幅图像。这就提高了处理速度,并缩短了对

F5负载均衡如何实现,这其中的原理又是什么?

F5实现负载均衡的原理一共分为四个步骤,第一个步骤,客户发出服务请求到VIP,第二个步骤,BIG-IP接收到请求,将数据包中目的IP地址改为选中的后台服务器IP地址,然后将数据包发出到后台选定的服务器,第三个步骤,则是在后台服务器收到后,将应答包按照其路由发回到BIG-IP,第四个步骤,BIG-IP会在收到应答包后将其中的源地址改回成VIP的地址,发回客户端,由此就完成了一个标准的服务器负载平衡的流程。这就是实现F5负载均衡器实现负载均衡的原理。

负载平衡的NAT负载均衡原理

负载均衡NAT(Network

Address

Translation网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet

IP地址间进行转换。适用于解决Internet

IP地址紧张、不想让网络外部知道内部网络结构等的场合下。

此种负载均衡是当前多WAN口路由器的带宽汇聚技术基础,以欣向路由器为例:

多WAN路由器实现的是业界先进的动态负载平衡机制,多WAN口动态负载平衡技术可以在使用多条线路的情况下动态分配内网的数据流量,动态的实现带宽汇聚的功能,采用特有的三种负载平衡机制:

a.Session:所有启用的WAN口,采用均分session的方式工作。

如第一个连接session通过WAN1口流出,则下一个session自动选择WAN2流出,第三个session选择WAN3口流出(假设所有WAN口都启用)

这种方式适用于多条相同带宽的线路捆绑时使用。

b.这种方式适用于多条不同带宽的线路能够更好的协同工作。例如:WAN1口接一条512K的ADSL,WAN2口接2M的光纤,这种情况下我们就可以把比例设为1:4,这样能够充分利用两条线路的带宽。

c.Traffic:按数据流量分配负载,系统自动选择流量最小的WAN口作为出口。

此种方式适用于线路不稳定时的多条线路混用的情况。在某一条线路暂时不通或者线路不稳定的情况下会把流量自动分配到另一条稳定的线路上。但在多条线路稳定的情况下不建议使用这种方式。

有了这三种负载平衡使得路由器可以灵活的应对多种线路混用的复杂情况,支持多种线路混接,支持多种协议,能够满足多种复杂应用。

负载均衡原理内容是什么?

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

主要应用

1、DNS负载均衡 最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。

2、代理服务器负载均衡 使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。

3、地址转换网关负载均衡 支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。

nginx负载均衡原理

        负载均衡(Load Balance),它在网络现有结构之上可以提供一种廉价、有效、透明的方法来扩展 网络设备 和 服务器的带宽 ,并可以在一定程度上 增加吞吐量 、 加强网络数据处理能力 、提高 网络的灵活性 和 可用性 等。用官网的话说,它充当着网络流中“交通指挥官”的角色,“站在”服务器前 处理所有服务器端和客户端之间的请求 ,从而最大程度地 提高响应速率和容量利用率 ,同时 确保任何服务器都没有超负荷工作 。如果单个服务器出现故障, 负载均衡的方法会将流量重定向到其余的集群服务器,以保证服务的稳定性 。当新的服务器添加到服务器组后,也可通过负载均衡的方法使其开始自动处理客户端发来的请求。

负载均衡涉及到以下的基础知识。

a. Round Robin: 对所有的backend轮训发送请求,算是最简单的方式了,也是默认的分配方式;

b. Least Connections(least_conn): 跟踪和backend当前的活跃连接数目,最少的连接数目说明这个backend负载最轻,将请求分配给他,这种方式会考虑到配置中给每个upstream分配的weight权重信息;

c. Least Time(least_time): 请求会分配给响应最快和活跃连接数最少的backend;

d. IP Hash(ip_hash): 对请求来源IP地址计算hash值,IPv4会考虑前3个octet,IPv6会考虑所有的地址位,然后根据得到的hash值通过某种映射分配到backend;

e. Generic Hash(hash): 以用户自定义资源(比如URL)的方式计算hash值完成分配,其可选consistent关键字支持一致性hash特性;

       用户(浏览器)在和服务端交互的时候,通常会在本地保存一些信息,而整个过程叫做一个会话(Session)并用唯一的Session ID进行标识。会话的概念不仅用于购物车这种常见情况,因为HTTP协议是无状态的,所以任何需要逻辑上下文的情形都必须使用会话机制,此外HTTP客户端也会额外缓存一些数据在本地,这样就可以减少请求提高性能了。如果负载均衡可能将这个会话的请求分配到不同的后台服务端上,这肯定是不合适的,必须通过多个backend共享这些数据,效率肯定会很低下,最简单的情况是保证会话一致性——相同的会话每次请求都会被分配到同一个backend上去。

        出问题的backend要能被及时探测并剔除出分配群,而当业务增长的时候可以灵活的添加backend数目。此外当前风靡的Elastic Compute云计算服务,服务商也应当根据当前负载自动添加和减少backend主机。

        通常现代的网络服务者一个域名会关连到多个主机,在进行DNS查询的时候,默认情况下DNS服务器会以round-robin形式以不同的顺序返回IP地址列表,因此天然将客户请求分配到不同的主机上去。不过这种方式含有固有的缺陷:DNS不会检查主机和IP地址的可访问性,所以分配给客户端的IP不确保是可用的(Google 404);DNS的解析结果会在客户端、多个中间DNS服务器不断的缓存,所以backend的分配不会那么的理想。

转自

负载均衡的几种常用方式

理解负载均衡,必须先搞清楚正向代理和反向代理。

注:

正向代理,代理的是用户。

反向代理,代理的是服务器

什么是负载均衡

当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

负载均衡是用反向代理的原理实现的。

1、轮询(默认)

每个请求 按时间顺序逐一分配 到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstreambackserver {server192.168.0.14;server192.168.0.15;}

2、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的

情况。

upstreambackserver {server192.168.0.14weight=3;server192.168.0.15weight=7;}

权重越高,在被访问的概率越大,如上例,分别是30%,70%。

3、上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。

我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstreambackserver{ip_hash;server192.168.0.14:88;server192.168.0.15:80;}

4、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstreambackserver {serverserver1;serverserver2;fair;}

5、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream backserver {    server squid1:3128;    server squid2:3128;    hash$request_uri;    hash_method crc32;}123456

每个设备的状态设置为:

down 表示单前的server暂时不参与负载

weight 默认为1.weight越大,负载的权重就越大。

max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回 proxy_next_upstream模块定义的错误

fail_timeout:max_fails次失败后,暂停的时间。

backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

配置实例:

#user  nobody;worker_processes4;events {# 最大并发数worker_connections1024;}http{# 待选服务器列表upstream myproject{# ip_hash指令,将同一用户引入同一服务器。ip_hash;        server125.219.42.4fail_timeout=60s;        server172.31.2.183;        }    server{# 监听端口listen80;# 根目录下location / {# 选择哪个服务器列表proxy_pass ;                }            }

摘自

赞(0)
文章名称:《负载均衡原理,负载均衡原理是什么》
文章链接:https://www.fzvps.com/178152.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!