F5负载均衡算法及基本原理(Intro to Load Balancing)
作者:sealinger 发布时间:December 27, 2010 分类:混口饭吃
参考网上一些介绍,对这篇文章加个中文注释。
原文:Intro to Load Balancing for Developers – The Algorithms
posted on Tuesday, March 31, 2009 11:02 PM
Random: This load balancing method randomly distributes load across the servers available, picking one via random number generation and sending the current connection to it. While it is available on many load balancing products, its usefulness is questionable except where uptime is concerned – and then only if you detect down machines.
随机:此负载均衡算法在可用的服务器间随机分发请求,通过生成随机数随机挑选一台服务器,并将当前连接发给它。系统对需要进行负载均衡的服务器建立一个数组(array),使用随机数生成器来决定谁将获得下一个连接。
Plain Programmer Description: The system builds an array of Servers being load balanced, and uses the random number generator to determine who gets the next connection… Far from an elegant solution, and most often found in large software packages that have thrown load balancing in as a feature.
Round Robin: Round Robin passes each new connection request to the next server in line, eventually distributing connections evenly across the array of machines being load balanced. Round Robin works well in most configurations, but could be better if the equipment that you are load balancing is not roughly equal in processing speed, connection speed, and/or memory.
轮询:将请求依次顺序循环地分发给服务器,从1到N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
Plain Programmer Description: The system builds a standard circular queue and walks through it, sending one request to each machine before getting to the start of the queue and doing it again. While I’ve never seen the code (or actual load balancer code for any of these for that matter), we’ve all written this queue with the modulus function before. In school if nowhere else.
Weighted Round Robin (called Ratio on the BIG-IP): With this method, the number of connections that each machine receives over time is proportionate to a ratio weight you define for each machine. This is an improvement over Round Robin because you can say “Machine 3 can handle 2x the load of machines 1 and 2”, and the load balancer will send two requests to machine #3 for each request to the others.
权重:根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。
Plain Programmer Description: The simplest way to explain for this one is that the system makes multiple entries in the Round Robin circular queue for servers with larger ratios. So if you set ratios at 3:2:1:1 for your four servers, that’s what the queue would look like – 3 entries for the first server, two for the second, one each for the third and fourth. In this version, the weights are set when the load balancing is configured for your application and never change, so the system will just keep looping through that circular queue. Different vendors use different weighting systems – whole numbers, decimals that must total 1.0 (100%), etc. but this is an implementation detail, they all end up in a circular queue style layout with more entries for larger ratings.
Dynamic Round Robin (Called Dynamic Ratio on the BIG-IP): is similar to Weighted Round Robin, however, weights are based on continuous monitoring of the servers and are therefore continually changing. This is a dynamic load balancing method, distributing connections based on various aspects of real-time server performance analysis, such as the current number of connections per node or the fastest node response time. This Application Delivery Controller method is rarely available in a simple load balancer.
动态比率:类似于权重,不过权重值是随着对服务器持续的监控而变化的。这是一个动态的负载均衡算法,基于对服务器性能的实时分析,如连接数或响应时间。
Plain Programmer Description: If you think of Weighted Round Robin where the circular queue is rebuilt with new (dynamic) weights whenever it has been fully traversed, you’ll be dead-on.
Fastest: The Fastest method passes a new connection based on the fastest response time of all servers. This method may be particularly useful in environments where servers are distributed across different logical networks. On the BIG-IP, only servers that are active will be selected.
最快模式:传递连接给那些响应速度最快的服务器。这种算法可能对于服务器处于不同的逻辑网络中的情况特别有用。均衡器记录着每个服务器的响应时间并选择最快的那一个。这非常直接了当,但是可能会导致拥塞,因为当前的响应时间并不一定真的还是1s或是2s了。
解释一下:最快模式算法是基于未完成的七层请求数来计算的。请求被发送到一个成员时,LTM将为它递增一个计数器,当请求被响应后,再对计数器递减。当LTM收到一个连接请求后,有最少的未完成请求的成员将被选择。如果VS没有关联七层的Profile,LTM是不能追踪请求和回应的,负载均衡算法将“降级”为最小连接数模式。
Plain Programmer Description: The load balancer looks at the response time of each attached server and chooses the one with the best response time. This is pretty straight-forward, but can lead to congestion because response time right now won’t necessarily be response time in 1 second or two seconds. Since connections are generally going through the load balancer, this algorithm is a lot easier to implement than you might think, as long as the numbers are kept up to date whenever a response comes through.
These next three I use the BIG-IP name for. They are variants of a generalized algorithm sometimes called Long Term Resource Monitoring.
Least Connections: With this method, the system passes a new connection to the server that has the least number of current connections. Least Connections methods work best in environments where the servers or other equipment you are load balancing have similar capabilities. This is a dynamic load balancing method, distributing connections based on various aspects of real-time server performance analysis, such as the current number of connections per node or the fastest node response time. This Application Delivery Controller method is rarely available in a simple load balancer.
最小连接数:客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,并没有达到真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。
但是,像Fastest一样,当连接时间不同时也可能导致拥塞——比如一个服务器正在处理简单的HTML页面,而另一个正在运行处理一堆数据库查询的JSP脚本,连接数就不太适合这种情况了。
Plain Programmer Description: This algorithm just keeps track of the number of connections attached to each server, and selects the one with the smallest number to receive the connection. Like fastest, this can cause congestion when the connections are all of different durations – like if one is loading a plain HTML page and another is running a JSP with a ton of database lookups. Connection counting just doesn’t account for that scenario very well.
Observed: The Observed method uses a combination of the logic used in the Least Connections and Fastest algorithms to load balance connections to servers being load-balanced. With this method, servers are ranked based on a combination of the number of current connections and the response time. Servers that have a better balance of fewest connections and fastest response time receive a greater proportion of the connections. This Application Delivery Controller method is rarely available in a simple load balancer.
观察模式:以连接数和响应时间这两项的最佳平衡为依据来为新的请求选择服务器。
Plain Programmer Description: This algorithm tries to merge Fastest and Least Connections, which does make it more appealing than either one of the above than alone. In this case, an array is built with the information indicated (how weighting is done will vary, and I don’t know even for F5, let alone our competitors), and the element with the highest value is chosen to receive the connection. This somewhat counters the weaknesses of both of the original algorithms, but does not account for when a server is about to be overloaded – like when three requests to that query-heavy JSP have just been submitted, but not yet hit the heavy work.
Predictive: The Predictive method uses the ranking method used by the Observed method, however, with the Predictive method, the system analyzes the trend of the ranking over time, determining whether a servers performance is currently improving or declining. The servers in the specified pool with better performance rankings that are currently improving, rather than declining, receive a higher proportion of the connections. The Predictive methods work well in any environment. This Application Delivery Controller method is rarely available in a simple load balancer.
预测模式:预测模式使用和观察模式一样的评选方法,只不过BIGIP会利用收集到的服务器当前的性能指标(连接数和响应时间),进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器来响应用户的请求。预测模式试图修复在观察模式中的一个问题,如果服务器的响应时间已经开始下滑,那么它是不太可能接受下一个请求的。
Plain Programmer Description: This method attempts to fix the one problem with Observed by watching what is happening with the server. If its response time has started going down, it is less likely to receive the packet. Again, no idea what the weightings are, but an array is built and the most desirable is chosen.
You can see with some of these algorithms that persistent connections would cause problems. Like Round Robin, if the connections persist to a server for as long as the user session is working, some servers will build a backlog of persistent connections that slow their response time. The Long Term Resource Monitoring algorithms are the best choice if you have a significant number of persistent connections. Fastest works okay in this scenario also if you don’t have access to any of the dynamic solutions.
你可以看到,有些算法遇到长连接可能会导致问题。像是轮询,如果长连接保持用户会话那么久,当连接数积压到一定值时会导致服务器响应时间变慢。如果你有大量的长连接,LTRM( Long Term Resource Monitoring )算法是最好的选择。如果没有动态的解决方案,Fastest算法也比较适合这种场景。
That’s it for this week, next week we’ll start talking specifically about Application Delivery Controllers and what they offer – which is a whole lot – that can help your application in a variety of ways.
Until then!
Don.
转自:http://www.sealinger.com/archives/205
分享到:
相关推荐
全书包含超过260幅插图,以直观的方式解释算法的工作原理。此外,书中的内容旨在适用于本科和研究生的课程,强调了理论学习与实践应用的结合。由于书中内容的深度和广度,它成为了学习和研究计算机算法不可或缺的...
Intro to App Development with Swift EN.epub 去除 DRM
线性代数主要研究向量空间(也称线性空间)、线性映射以及这两个概念的基本性质。它包括了向量、线性方程组、矩阵、行列式、特征值和特征向量等概念。这些概念和工具不仅对于理解更高级的数学概念至关重要,而且也是...
**CMMI(Capability Maturity Model Integration)**是能力成熟度模型集成,它是一种用于评估组织在软件开发、系统工程、..."Intro to CMMI 讲稿"和相关英文笔记是深入理解和应用CMMI的关键资源,值得仔细研读和实践。
这三个领域紧密相连,共同探讨计算机的基本能力和限制。 #### 一、计算理论概览 计算理论关注的是如何通过算法在特定计算模型上解决实际问题。为了进行严谨的研究,计算机科学家通常会使用一种称为计算模型的数学...
- **队列管理子系统(Queue Manager Sub-System, QMSS)**:负责管理数据结构和队列,实现负载均衡和流量控制等功能。 - **包DMA (Packet DMA, PKTDMA)**:专门用于数据包传输的DMA控制器。值得注意的是,PKTDMA通常...
以下是从“Python初探”教程中提炼的关键知识点,旨在帮助初学者快速掌握Python的基本用途、特性以及应用场景。 #### Python适用场景 1. **脚本编写**:Python常用于替代shell、awk、sed等脚本语言,适用于自动化...
Bluetooth Low Energy (BLE) is an exciting new technology that was introduced in 2010. It targets applications in the Internet of Things (IoT) space. With the recent release of Bluetooth 5 in late 2016...
L4负载均衡器,可以动态更改分配以实现负载均衡。 当前的实现方式允许基于服务器指标(例如请求延迟或服务器负载)进行加权(这很容易更改)。 我将框架用于控制器和测试。 请参阅./twisted-intro.md ,以快速...
Intro.to.Reverse.Engineering.chm
本文档是一份关于D.J.Griffiths所著《Introduction to Quantum Mechanics》(简称QM)一书习题解答的整理。QM作为量子力学领域的入门教材,对初学者来说是一本深入浅出的好书。该书由Pearson Education, Inc.出版,...
David beazley 在pycon 上的presentation, David Beazley 在python领域具有全球号召力和影响力,他对concurrency asyncio 有深入理解和独到的看法,尽管这些看法与core developers 或者说Guido 有些不同。
《Intro To HTML.pdf》这份经典教学资料,为初学者提供了深入浅出的学习路径,助你在网页设计的世界里扬帆起航。 #### HTML基础知识概览 HTML是一种用于创建和呈现网页结构的标准标记语言。它通过一系列预定义的...
R入门 PDF格式 R入门 PDF格式 R入门 PDF格式 R入门 PDF格式 R入门 PDF格式 R入门 PDF格式
intro-to-tensorflow, 这是对tensorflow的介绍 TensorFlow简介在本教程中,需要清理数据集并准备使用机器学习库TensorFlow进行建模的步骤。 本教程使用来自的机器学习知识库( ) 中的数据集。先决条件本教程包括几种...
根据提供的文件信息,本文将对概率的基本概念进行详细介绍,并探讨其在机器人感知中的应用价值。以下是对文件中提及的关键知识点的深入分析。 ### 一、概率的定义 #### 定义与基本概念 - **实验**:考虑一个可能...
这款软件集成了高级编译器、优化的时序分析及仿真工具,以及先进的布局布线引擎等功能,旨在为用户提供一个高效的设计平台。 #### 二、Quartus II软件特点 1. **全面的设计支持**:Quartus II支持多种输入方式,...
【标题】"Intro to R" 是一个针对R语言的基础教程,旨在帮助初学者入门这个强大的统计计算和图形制作工具。R语言在信息技术和数据科学领域中广泛应用,特别是在数据分析、机器学习以及可视化方面。 【描述】...