什么是F5负载均衡器,看完你就明白怎么回事了

什么是F5负载均衡器,看完你就明白怎么回事了,第1张

一、前言

在互联网雄起的时代,随着各个网络请求量的不断增大,利用负载分化请求量,从而达到优化硬件负荷量的目的,一般负载分为软件负载和硬件负载,比如软件中使用nginx等工具实现负载均衡,而F5负载均衡器就是硬件网络性能优化设备。

二、何为负载均衡器

那么什么是F5负载均衡器呢,通俗的讲就是将客户端请求量通过F5负载到各个服务器,增加吞吐量,从而降低服务器的压力,他不同于交换机、路由器这些网络基础设备,而是建立在现有网络结构上用来增加网络带宽和吞吐量的的硬件设备

三、工作原理

1、客户发出服务请求到VIP

2、BIGIP接收到请求,将数据包中目的IP地址改为选中的后台服务器IP地址,然后将数据包发出到后台选定的服务器

3、后台服务器收到后,将应答包按照其路由发回到BIGIP

4、BIGIP收到应答包后将其中的源地址改回成VIP的地址,发回客户端,由此就完成了一个标准的服务器负载平衡的流程。

四、负载均衡涉及到算法

轮询算法:按照顺序将每个请求分发到每个服务器,相当于ngixn负载的轮训算法一个道理,当其中某个服务器发生第二到第7层的故障,BIGIP就把其从顺序循环队列中拿出,不参与下一次的轮训。

比率:指的是给每个服务器分配一个加权值,类似于权重,轮训会根据和这个权重去访问具体要到哪台服务器。

优先权:给所有服务器分组,BIGIP用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIGIP才将请求送给次优先级的服务器组。

最快模式:传递连接给那些响应最快的服务器。当发生异常故障时,BIGIP就会将其拿出来作为当前相应服务器,此时就不参与其他用户的请求轮训分配。

观察模式:以连接数和相应时间为准,当放生故障时BIGIP会将其拿出来作为请求的相应服务器,并且也不参与其他用户请求,直至恢复正常为止。

预测模式:BIGIP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。

动态性能分配:BIGIP收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。

动态服务器补充:当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。

服务质量:按不同的优先级对数据流进行分配。

服务类型:按不同的服务类型(在Type of Field中标识)对数据流进行分配。

规则模式:针对不同的数据流设置导向规则,用户可自行编辑流量分配规则,BIGIP利用这些规则对通过的数据流实施导向控制。

五。结尾

总之F5负载均衡器涉及到的原理内容多而杂,重点用户硬件负载方面,目前理解到此,还有很多不足之处希望一起发文讨论。

【负载均衡架构部分转自】 58沈剑 [架构师之路]( https://mp.weixin.qq.com/s

负载均衡: 是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】

常见的负载均衡方案:

【客户端层】到【反向代理层】的负载均衡,是通过“DNS轮询”实现的:DNS-server对于一个域名配置了多个解析ip,每次DNS解析请求来访问DNS-server,会轮询返回这些ip,保证每个ip的解析概率是相同的。这些ip就是nginx的外网ip,以做到每台nginx的请求分配也是均衡的。

【反向代理层】到【站点层】的负载均衡,是通过“nginx”实现的。通过修改nginx.conf,可以实现多种负载均衡策略:

【站点层】到【服务层】的负载均衡,是通过“服务连接池”实现的。

上游连接池会建立与下游服务多个连接,每次请求会“随机”选取连接来访问下游服务。(也即是rpc框架实现的)

在数据量很大的情况下,由于数据层(db,cache)涉及数据的水平切分,所以数据层的负载均衡更为复杂一些,它分为“数据的均衡”,与“请求的均衡”。

数据的均衡是指 :水平切分后的每个服务(db,cache),数据量是差不多的。

请求的均衡是指 :水平切分后的每个服务(db,cache),请求量是差不多的。

(1)按照range水平切分

(2)按照id哈希水平切分

[图片上传中...(-6b2508-1561902875888-0)]

常见的负载均衡系统包括 3 种:DNS 负载均衡、硬件负载均衡和软件负载均衡。

硬件负载均衡是通过单独的硬件设备来实现负载均衡功能,这类设备和路由器、交换机类似,可以理解为一个用于负载均衡的基础网络设备。比如业界非常出名的F5

缺点:

(1)价格实在非常昂贵

(2)扩展性不强

软件负载均衡通过负载均衡软件来实现负载均衡功能,常见的有 Nginx 和 LVS。

nginx和F5: https://blog.csdn.net/chabale/article/details/8956717

nginx和lvs比较: https://blog.51cto.com/hzcto/2086691

lvs: https://www.cnblogs.com/liwei0526vip/p/6370103.html

ELB: https://aws.amazon.com/cn/elasticloadbalancing/

SLB: https://help.aliyun.com/product/27537.html

题目:日活跃用户 1000 万的论坛的负载均衡集群,该如何设计呢?

(1)评估流量

1000万DAU,换算成秒级(一天12小时),平均约等于232。

考虑每个用户操作次数,假定10,换算成平均QPS=2320。

考虑峰值是均值倍数,假定5,换算成峰值QPS=11600。

考虑静态资源、图片资源、服务拆分等,流量放大效应,假定10,QPS 10=116000。

(2)容量规划

考虑高可用、异地多活,QPS 2=232000。

考虑未来半年增长,QPS*1.5=348000。

(3)方案设计

可以用三级导流:

第一级,DNS,确定机房,以目前量级,可以不考虑。

第二级,确定集群,扩展优先,则选Haproxy/LVS,稳定优先则选F5。

第三级,Nginx+KeepAlived,确定实例。

(4)架构图

接入层技术:

缺点:

优点:

缺点:

优点:

缺点:

缺点:

nginx毕竟是软件,性能比tomcat好,但总有个上限,超出了上限,还是扛不住。lvs就不一样了,它实施在操作系统层面;f5的性能又更好了,它实施在硬件层面;它们性能比nginx好很多,例如每秒可以抗10w,这样可以利用他们来扩容。

99.9999%的公司到这一步基本就能解决接入层高可用、扩展性、负载均衡的问题。 假设还扛不住的话,就要考虑使用硬件设备f5等。如果还是扛不住,那么只有DNS来扩容了。

水平扩展,才是解决性能问题的根本方案,能够通过加机器扩充性能的方案才具备最好的扩展性。 facebook,google,baidu的PV是不是超过80亿呢,它们的域名只对应一个ip么,终点又是起点,还是得通过DNS轮询来进行扩容:

比如购买了阿里云或者aws。那么基本会使用云厂商提供的负载均衡中间件,比如aws(elb)、阿里云(slb)。这个负载均衡软件可以认为是 lvs+keepalived的高可用负载均衡服务

后端的service有可能部署在硬件条件不同的服务器上:

1)如果对标最低配的服务器“均匀”分摊负载,高配的服务器的利用率不足;

2)如果对标最高配的服务器“均匀”分摊负载,低配的服务器可能会扛不住;

(1)通过“静态权重”标识service的处理能力

优点: 简单,能够快速的实现异构服务器的负载均衡。

缺点: 权重是固定的,无法自适应动态调整,而很多时候,服务器的处理能力是很难用一个固定的数值量化。

(2)通过“动态权重”标识service的处理能力

提问:通过什么来标识一个service的处理能力呢?

回答:其实一个service能不能处理得过来,能不能响应得过来,应该由调用方说了算。调用服务,快速处理了,处理能力跟得上;调用服务,处理超时了,处理能力很有可能跟不上了。

动态权重设计:

例如:

(1)设置一个阈值,超过阈值直接丢弃

(2)借助“动态权重”来实施过载保护

案例策略:

1)service的负载均衡、故障转移、超时处理通常是RPC-client连接池层面来实施的

2)异构服务器负载均衡,最简单的方式是静态权重法,缺点是无法自适应动态调整

3)动态权重法,可以动态的根据service的处理能力来分配负载,需要有连接池层面的微小改动

4)过载保护,是在负载过高时,service为了保护自己,保证一定处理能力的一种自救方法

5)动态权重法,还可以用做service的过载保护


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/506156.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-17
下一篇2023-06-17

发表评论

登录后才能评论

评论列表(0条)

    保存