当前位置: 首页 > 科技观察

负载均衡(一)——负载均衡初探

时间:2023-03-19 20:05:14 科技观察

最近看的几本书里都提到了负载均衡技术,发现自己对这部分内容了解不多,所以补充一下这方面的知识。分享给你~!什么是负载均衡?在建站初期,我们一般采用单机向平台提供集中服务。但是,随着业务量的增加,性能和稳定性都面临着更大的挑战。这个时候,我们就会想到通过扩容来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。但是,我们的网站只提供一个访问入口,例如www.taobao.com。那么当用户在浏览器中输入www.taobao.com时,如何将用户的请求分发到集群中不同的机器上,这就是负载均衡在做的事情。负载均衡的分类现在我们知道,负载均衡是一种计算机网络技术,用于在多台计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源之间分配负载,以最大限度地利用资源。,最大化吞吐量,最小化响应时间,并避免过载。好吧,有很多方法可以实现这种计算机技术。大致可以分为以下几种,其中以四层和七层负载均衡最为常用:二层负载均衡负载均衡服务器对外仍然提供一个VIP(虚拟IP),并且集群中的不同机器使用相同的IP地址,但机器的MAC地址不同。负载均衡服务器收到请求后,通过重写报文的目标MAC地址,将请求转发给目标机器,实现负载均衡。第三层负载均衡类似于第二层负载均衡。负载均衡服务器仍然对外提供一个VIP(虚拟IP),只是集群中不同的机器使用不同的IP地址。当负载均衡服务器收到请求后,根据不同的负载均衡算法,将请求通过IP转发给不同的真实服务器。四层负载均衡四层负载均衡工作在OSI模型的传输层。由于传输层只有TCP/UDP协议,这两种协议除了源IP和目的IP外,还包括源端口号和目的端口号。.四层负载均衡服务器收到客户端的请求后,通过修改数据包的地址信息(IP+端口号)将流量转发给应用服务器。七层负载均衡七层负载均衡工作在OSI模型的应用层,应用层协议有很多,常用的有http、radius、dns。可以基于这些协议加载七层负载。这些应用层协议会包含很多有意义的内容。例如,在同一个Web服务器的负载均衡中,除了基于IP加端口的负载,还可以根据七层URL、浏览器类型、语言来决定是否进行负载均衡。如图所示,四层和七层的负载均衡,对于一般应用用Nginx已经足够了。Nginx可用于七层负载均衡。但对于一些大型网站,一般采用DNS+四层负载+七层负载的方式进行多级负载均衡。如图所示,阿里云SLB常用的负载均衡工具Nginx/LVS/HAProxy是目前应用最广泛的三种负载均衡软件。LVSLVS(LinuxVirtualServer),又称Linux虚拟服务器,是由张文松博士发起的一个自由软件项目。使用LVS技术的目标是通过LVS提供的负载均衡技术和Linux操作系统实现高性能、高可用的服务器集群,具有良好的可靠性、可扩展性和可操作性。结果是以低成本获得高服务性能。LVS主要用于四层负载均衡。NginxNginx(发音与enginex相同)是一个可以反向代理HTTP、HTTPS、SMTP、POP3、IMAP协议连接的Web服务器,同时也是一个负载均衡器和HTTP缓存。Nginx主要用于七层负载均衡。HAProxyHAProxy是一个用C语言编写的免费开源软件,可提供高可用性、负载均衡和基于TCP和HTTP的应用程序代理。Haproxy主要用于七层负载均衡。常见的负载均衡算法上面在介绍负载均衡技术时提到,负载均衡服务器在决定将请求转发到哪个真实服务器时,是通过负载均衡算法来实现的。负载均衡算法可以分为两大类:静态负载均衡算法和动态负载均衡算法。静态负载均衡算法包括:轮询、比率、优先级动态负载均衡算法包括:最少连接数、最快响应速度、观察方法、预测方法、动态性能分配、动态服务器补充、服务质量、服务类型、规则模式。循环法:顺序循环法将请求到每个服务器的顺序循环法连接。当其中一台服务器从第二层到第七层发生故障时,BIG-IP将其从顺序循环队列中取出,直到恢复正常后才参与下一轮轮询。ratio:给每台server分配一个权重值,将用户的请求按照这个ratio分配给每台server。当第2层到第7层服务器发生故障时,BIG-IP会将其从服务器队列中取出,直到恢复正常后才参与下一次用户请求的分配。优先级(Priority):对所有服务器进行分组,为每个组定义优先级,将BIG-IP用户的请求分配给优先级最高的服务器组(在同一组中,使用round-robin或ratio算法,分配用户的请求);当优先级最高的所有服务器都发生故障时,BIG-IP会将请求发送给优先级第二的服务器组。这种方式实际上为用户提供了一种热备份的方式。最少连接(LeastConnection):将新连接传递给那些执行最少连接处理的服务器。当第2层到第7层服务器发生故障时,BIG-IP会将其从服务器队列中取出,直到恢复正常后才参与下一次用户请求的分配。最快模式(Fastest):将连接传递给那些响应最快的服务器。当一个服务器从第二层到第七层发生故障时,BIG-IP会将其从服务器队列中取出,直到恢复正常后才参与下一个用户请求的分配。观察模式(Observed):连接数和响应时间是根据这两项的最佳平衡来为新的请求选择一个服务器。当第2层到第7层服务器发生故障时,BIG-IP会将其从服务器队列中取出,直到恢复正常后才参与下一次用户请求的分配。预测模式(Predictive):BIG-IP利用收集到的服务器当前性能指标进行预测分析,在下一个时间片选择一台服务器,其性能将达到用户请求对应的最佳服务器。(BIG-IP检测)DynamicRatio-APM:BIG-IP收集应用和应用服务器的各种性能参数,动态调整流量分配。动态服务器行为:当主服务器组因故障而减少时,动态添加备份服务器到主服务器组中。服务质量(QoS):根据不同的优先级分配数据流。TypeofService(ToS):负载均衡根据不同的服务类型(在TypeofField中标识)分配数据流。规则模式:针对不同的数据流设置引导规则,用户可自行制定。【本文为专栏作家霍利斯原创文章,作者微信公众号Hollis(ID:hollishuang)】点此阅读更多本作者好文