一,负载均衡是什么
一个软件开发的发展最初阶段,采用的是单体架构,使用单台机器提供一体化功能和服务,但随着用户量的越来越大,无论是性能上还是稳定性都面临着很大挑战,为了解决这个问题,单体的架构模式就分布式的模式进行了转变,通过增加机器扩容的方式分摊压力提供更高性能的服务,那么使用分布式就又面临了一个问题,如何在集群中将用户请求进行合理分配,使高负荷的机器少分摊请求,低负荷的机器多分摊请求,这个时候就产生了负载均衡的概念
负载均衡:在集群或系统中,使任务量或请求数合理的进行分配
设:现在有一个网站它的后端采用了分布式提供服务,访问域名入口是wql.luoqin.ltd,当在浏览器上输入域名访问时,集群对请求的合理分发,就涉及到负载均衡
二,负载均衡的分类
负载均衡本质上是一种计算机网络技术,通过负载均衡实现对集群的网络连接,CPU,磁盘驱动或其他资源的合理分配,以达到最佳的资源使用,最大的吞吐率,最小的响应时间
负载均衡的实现方式有多种,大致分为四种:
1,二层负载均衡
负载均衡服务器对外提供一个VIP(虚拟IP),集群中不同的机器采用相同的IP地址,但机器的MAC地址不一样,当负载均衡服务器接收到请求之后,根据不同的负载均衡算法,通过MAC地址将请求转发至不同的真实服务器
2,三层负载均衡
它和二层负载均衡类似,负载均衡服务器对外依然提供一个虚拟IP,但是集群中不同的机器采用不同的IP地址,当负载均衡服务器接收到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器
3,四层负载均衡
四层负载均衡工作在传输层使用TCP/UDP协议,在源虚拟IP的基础上加上了源端口号和目标端口号,负载均衡服务器在接收客户端请求后,通过修改数据包信息或者连接地址信息(IP+端口号)将流量转发到真实服务器
4,七层负载均衡
七层负载均衡工作在应用层上,基于应用层协议(比如HTTP,DNS,RADIUS,FTP等协议)来做负载,这些应用层协议包含很多内容,它除了根据IP+端口号来做负载外,还可以根据URL,浏览器类别,Session,语言来进行负载
其中二层,三层,四层负载均衡可以称为硬负载均衡(对操作系统进行负载),七层负载均衡可以称为软负载均衡(在软件开发中对应用层的请求或者服务进行负载)
负载均衡器
负载均衡器其实一个负载交换机,它主要分为两类:
1,四层交换机(L4 Switch):主要工作在OSI传输层工作,主要通过TCP/UDP协议实现负载均衡
2,七层交换机(L7 switch):工作在OSI的最高层应用层,支持应用层的多种协议
注:七层交换机除了支持四层负载均衡,但不能反之
三,负载均衡算法
负载均衡算法可以分为两大类:
静态负载均衡算法:基于服务器的容量,就是高配置的服务器比低配置的服务器分配更多的请求
动态负载均衡算法:根据服务器的状况,比如通过监控可以得到平均响应时间,或者CPU占用率,内存占用率按照某种方式进行计算,作为权重值
一,静态负载均衡算法
随机(Random): 利用随机数生成算法选取一个服务器,然后把连接发送给他。虽然许多负载产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。
轮询(Round Robin) : 按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有服务器。轮询算法在大多数情况下都工作不错,但是如果负载均衡的设备在处理速度、连接速度和内存等方面不是完全均等,那么效果会打折扣
加权轮询(Weighted Round Robin): 在该算法中每台服务器的连接数量是按权重比例分配的。它是对普通轮询算法的改进
优先权(Priority): 给所有的服务器分组,每组都定义优先权,把请求优先分配给优先级最高的服务器组(同一组内,采用轮询或加权轮询来分配请求);当最高优先级组中的所有服务器都出现故障时,才把请求发送给次优先级的服务器组。
一致性哈希(Consistent Hash): 通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。采用源地址哈希法进行负载均衡,相同的IP客户端,如果服务器列表不变,将映射到同一个后台服务器进行访问
二,动态负载均衡算法
动态轮询(Dynamic Round Robin): 类似于加权轮询,但是权重值是基于各个拂去其的持续监控,并且不断更新的。根据服务器的实时性能分析来分配请求。
最少的连接(Least Connection): 系统把新的请求分配给当前连接数目最少的服务器。该算法在各个服务器运算能力基本类似的环境中非常有效。
最快算法(Fastest): 最快算法基于所有服务器中响应时间最快的给分配连接。该算法在服务器跨不同网络的环境中特别有用。
观察算法(Observed): 该算法同时利用最小连接算法和最快连接算法来实施负载均衡。服务器根据当前的连接数和相应时间得到一个分数,分数越高代表性能越好,分配的连接也就越多。
预判算法(Predictive): 该算法使用观察算法来计算分数,但是它会分析分数的变化趋势来判断某台服务器的性能,是正在改善还是降低,具有改善趋势的服务器会得到更多的连接。该算法适用于大多数环境。
四,常用的负载均衡工具
Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡工具
LVS(Linux Virtual Server):对Linux虚拟服务器做负载, 通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
Nginx(发音同engine x):是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。
HAProxy:是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
注:其中LVS是做四层负载均衡,Nginx和HAProxy做七层负载均衡
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109