Nginx负载均衡与F5负载均衡的区别

一、nginx负载均衡算法:

  1. round robin(默认)
    轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。
    适用于后台机器性能一致的情况。
    挂掉的机器可以自动从服务列表中剔除。

  2. weight
    根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

    upstream bakend {    
        server 192.168.1.28 weight=10;    
        server 192.168.1.29 weight=10;    
     }  
    
  3. IP_hash
    根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。

    upstream bakend {    
    	ip_hash;    
    	server 192.168.1.28:80;    
    	server 192.168.1.29:81;    
    }   
    
  4. url_hash(第三方)
    根据请求的url的hash值将请求分到不同的机器中,当后台服务器为缓存的时候效率高。

    在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法  
    
    upstream backend {    
    	server squid1:3128;    
    	server squid2:3128;    
    	hash $request_uri;    
    	hash_method crc32;    
    }  
    
  5. fair(第三方)
    根据后台响应时间来分发请求,响应时间短的分发的请求多。

    upstream backend {    
    	server server1;    
    	server server2;    
    	fair;    
    }  
    

二、F5负载均衡算法:

  1. 轮询(RoundRobin):
    顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG/IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。
  2. 最小的连接数(LeastConnection):
    传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7 层的故障,BIG/IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  3. 最快模式(Fastest):
    传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7层的故障,BIG/IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  4. 观察模式(Observed):
    连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7 层的故障,BIG/IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  5. 预测模式(Predictive):
    BIG/IP 利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。(被BIGIP 进行检测) 。
  6. 动态比率(Dynamic Ratio):
    BIGIP 通过 Agent 或者 SNMP 收集服务器的 CPU 占用率、内存占用率、磁盘占用率等系统关键参数,并按照比率来对这些参数进行计算,最终得出服务器的性能状况来进行流量分配。

三、二者比对

F5,硬件

优点:能够直接通过智能交换机实现,处理能力更强,而且与系统无关,负载性能强,更适用于一大堆设备、大访问量、简单应用。

缺点:成本高,除设备价格高昂,而且配置冗余,很难想象后面服务器做一个集群,但最关键的负载均衡设备却是单点配置,无法有效掌握服务器及应用状态。

硬件负载均衡,一般都不管实际系统与应用的状态,而只是从网络层来判断,所以有时候系统处理能力已经不行了,但网络可能还来得及反应(这种情况非常典型,比如应用服务器后面内存已经占用很多,但还没有彻底不行,如果网络传输量不大就未必在网络层能反映出来)

Nginx,软负载

优点:基于系统与应用的负载均衡,能够更好地根据系统与应用的状况来分配负载。这对于复杂应用是很重要的,性价比高,实际上如果几台服务器,用F5之类的硬件产品显得有些浪费,而用软件就要合算得多,因为服务器同时还可以跑应用、做集群等。

缺点:负载能力受服务器本身性能的影响,性能越好,负载能力越大。

你可能感兴趣的:(运维服务)