`

负载均衡

阅读更多

nginx的upstream目前支持4种方式的分配:

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

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

例如:

    upstream tomcats {
         server 10.1.1.107:88 weight=10;
         server 10.1.1.132:80 weight=10;
    }
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

例如:

    upstream tomcats {
         ip_hash;
         server 10.1.1.107:88;
         server 10.1.1.132:80;
    }


4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

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

nginx的upstream目前支持4种方式的分配:

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

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

例如:

    upstream tomcats {
         server 10.1.1.107:88 weight=10;
         server 10.1.1.132:80 weight=10;
    }
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

例如:

    upstream tomcats {
         ip_hash;
         server 10.1.1.107:88;
         server 10.1.1.132:80;
    }


4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

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

 

轮询调度

轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

在系统实现时,我们引入了一个额外条件,当服务器的权值为零时,表示该服务器不可用而不被调度。这样做的目的是将服务器切出服务(如屏蔽服务器故障和系统维护),同时与其他加权算法保持一致。所以,算法要作相应的改动,它的算法流程如下:

轮叫调度算法流程


假设有一组服务器S = {S0, S1, …, Sn-1},一个指示变量i表示上一次选择的
服务器,W(Si)表示服务器Si的权值。变量i被初始化为n-1,其中n > 0。

j = i;
do {
	j = (j + 1) mod n;
	if (W(Sj) > 0) {
		i = j;
		return Si;
	}
} while (j != i);
return NULL;

 

轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,轮叫调度算法容易导致服务器间的负载不平衡。

虽然Round-Robin DNS方法也是以轮叫调度的方式将一个域名解析到多个IP地址,但轮叫DNS方法的调度粒度是基于每个域名服务器的,域名服务器对域名解析的缓存会妨碍轮叫解析域名生效,这会导致服务器间负载的严重不平衡。这里,IPVS轮叫调度算法的粒度是基于每个连接的,同一用户的不同连接都会被调度到不同的服务器上,所以这种细粒度的轮叫调度要比DNS的轮叫调度优越很多。

 

加权轮询调度

轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

在系统实现时,我们引入了一个额外条件,当服务器的权值为零时,表示该服务器不可用而不被调度。这样做的目的是将服务器切出服务(如屏蔽服务器故障和系统维护),同时与其他加权算法保持一致。所以,算法要作相应的改动,它的算法流程如下:

加权轮叫调度算法流程


假设有一组服务器S = {S0, S1, …, Sn-1},W(Si)表示服务器Si的权值,一个
指示变量i表示上一次选择的服务器,指示变量cw表示当前调度的权值,max(S)
表示集合S中所有服务器的最大权值,gcd(S)表示集合S中所有服务器权值的最大
公约数。变量i初始化为-1,cw初始化为零。

while (true) {
  i = (i + 1) mod n;
  if (i == 0) {
     cw = cw - gcd(S); 
     if (cw <= 0) {
       cw = max(S);
       if (cw == 0)
         return NULL;
     }
  } 
  if (W(Si) >= cw) 
    return Si;
}

轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,轮叫调度算法容易导致服务器间的负载不平衡。

虽然Round-Robin DNS方法也是以轮叫调度的方式将一个域名解析到多个IP地址,但轮叫DNS方法的调度粒度是基于每个域名服务器的,域名服务器对域名解析的缓存会妨碍轮叫解析域名生效,这会导致服务器间负载的严重不平衡。这里,IPVS轮叫调度算法的粒度是基于每个连接的,同一用户的不同连接都会被调度到不同的服务器上,所以这种细粒度的轮叫调度要比DNS的轮叫调度优越很多。

分享到:
评论

相关推荐

    天融信负载均衡配置手册

    天融信负载均衡配置手册 一、负载均衡的概念 在讨论天融信负载均衡系统之前,我们需要了解什么是负载均衡。负载均衡是指将incoming网络流量分布到多个服务器上,以提高服务器的可用性、可靠性和灵活性。负载均衡...

    深信服负载均衡AD5.3用户手册

    ### 深信服负载均衡AD5.3用户手册知识点概览 #### 一、负载均衡基础概念 **1.1 负载均衡简介** 负载均衡(Load Balancing, LB)是一种网络技术,用于在多台服务器之间分配流量,以优化资源利用、最大化吞吐量、...

    Nginx实现负载均衡 web均衡负载 webservice负载均衡 Nginx实现负载均衡配制全说明

    Nginx实现负载均衡 web均衡负载 webservice负载均衡 Nginx实现负载均衡配制全说明 为了多台后台的web、webservice服务能均衡负载,可以使用nginx进行处理 1)配置文件全配制ok 2)有两个完整的web服务做例子,可以...

    c#源码 Socket 负载均衡 实例

    在IT行业中,Socket编程是网络通信的基础,而负载均衡则是优化系统性能、提高服务可用性的重要技术。本实例聚焦于C#语言中的Socket编程与负载均衡的结合,为开发者提供了一个实用的参考模板。 首先,我们需要理解...

    H3C 负载均衡设备典型配置案例集手册.pdf

    为了帮助网络规划人员、现场技术支持与维护人员、网络管理员等更好地理解和应用H3C负载均衡产品,H3C公司编写了《H3C 负载均衡设备典型配置案例集手册》。该手册不仅提供了丰富的配置案例,还详细说明了配置思路和...

    负载均衡器技术Nginx和F5的优缺点对比

     目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高网络层负载均衡,以及链路聚合技术。  我们使用的是软负载均衡器Nginx,而农行用的是F5硬负载均衡器,这里...

    导致内部负载均衡器间歇性丢包或负载不均衡的常见因素-Bing1

    在IT领域,尤其是在云服务和网络架构中,负载均衡器是一个关键组件,它负责分散流入的网络流量到多个后端服务器,以确保高可用性和性能。然而,有时可能会遇到内部负载均衡器出现间歇性丢包或负载不均衡的问题。以下...

    a10负载均衡器简明运维操作手册.doc

    A10 负载均衡器运维操作手册 A10 负载均衡器是一种高性能的服务器负载均衡器,旨在提供高可用性和高性能的网络服务。为了确保 A10 负载均衡器的顺利运营,需要了解其基本硬件信息、登录方式、系统配置和维护等方面...

    win7 双网络负载均衡

    在Windows 7操作系统中,实现双网络负载均衡是一项高级网络配置技术,旨在提高网络连接的稳定性和效率。负载均衡可以通过将网络流量分散到多个网络接口上来优化带宽使用,提高系统的可用性,防止单个网络接口过载,...

    opensips与两台freeswitch负载均衡

    在构建大型VoIP系统时,负载均衡是至关重要的,它能确保服务的高可用性和可扩展性。"opensips与两台freeswitch负载均衡"的主题聚焦于如何使用OpenSIPS作为负载均衡器来管理两台Freeswitch服务器,以实现Freeswitch的...

    A10负载均衡模拟器 SoftAX 学习A10必备

    【A10负载均衡模拟器 SoftAX 学习A10必备】 在IT行业中,负载均衡是一项关键的技术,用于优化网络资源的分配,确保服务的高可用性和性能。A10 Networks是全球知名的负载均衡解决方案提供商,其产品线包括硬件设备和...

    IIS负载均衡扩展插件ARR(Application Request Router)

    **IIS负载均衡扩展插件ARR(Application Request Router)** IIS(Internet Information Services)是微软提供的一个用于构建和管理Web应用程序的服务器平台。在大型网站或企业应用中,单一服务器可能无法满足高并发...

    弘积负载均衡简易运维手册

    弘积负载均衡是一款高效能的负载均衡解决方案,其功能与F5类似,旨在优化网络流量分配,确保服务的高可用性和性能。以下是手册中涉及的关键知识点的详细解释: 1. **配置节点(类似F5 poolmembers)**:这是将后端...

    1. Camstar负载均衡配置.docx

    在IT行业中,负载均衡是一种关键的技术,用于优化资源利用、提高服务可用性和响应时间,同时也能增强系统的容错能力。本文件"1. Camstar负载均衡配置.docx"显然是关于如何在Camstar系统中实现多服务器与同数据库的...

Global site tag (gtag.js) - Google Analytics