Rya*_*yan 16 load-balancing haproxy high-load
有什么关于什么时候应该使用roundrobin
和什么时候使用的建议leastconn
吗?
我roundrobin
目前正在使用并观察到我的后端服务器的负载分布不均匀。当然可能还有其他问题,但我们想leastconn
尝试一下,但由于它是一个关键任务服务器,我想在进行更改之前咨询其他经验。
有什么想法可以分享吗?
Kyl*_*ndt 15
我还没有尝试过 leastconn,但我的理解是,leastconn 的典型用例是当您对可以具有长期连接的东西进行负载平衡时。这样做的原因是,leastconn 专注于确保平衡的并发性,而 Road robin 将提供更平衡的到达率。如果这种区别不清楚,请参阅我对差异的回答。
当您说负载分布不均时,更好地定义“负载”可能会有所帮助。如果您的意思是服务器资源,那么我建议确定导致负载增加的确切原因(即某些类型的连接)并从那里向后工作。
这取决于要平衡的协议和用例。对于连接数量与负载/使用相关的任何内容,最好使用leastconn
. 由于网络和应用程序的工作方式,它几乎总是正确的,leastconn
默认情况下最好使用。
例如,一家公司有一个员工连接到的远程桌面池。您希望员工在桌面上的分布有些均匀。
该用例中的活动连接数大致是“目前有多少员工在使用该桌面”。连接最少的主机使用它的员工最少,而且可能是负载最少的。在这些情况下使用“leastconn”,它会根据用户数量平均分配负载。
理想的负载平衡器应该了解远程桌面负载。有多少用户?有多少应用程序?消耗了多少内存和CPU?有专门用于远程桌面(Microsoft/Citrix/etc...)的商业解决方案,它们通常会衡量这些指标以很好地传播使用情况。HAProxy 是一个简单的网络负载均衡器,它没有比使用leastconn
.
对于 HTTP,活动连接意味着服务器正忙于处理请求。连接与负载成正比。您希望选择活动连接(正在进行的请求)数量最少的服务器。使用leastconn
的HTTP(S)流量。
想象一下有两个 HTTP 服务器的场景,其中一个服务器处理请求的速度较慢(可能它过载了,可能它的硬件较旧)。
roundrobin
将在两台服务器之间分配一半的请求。这是非常低效的,更快的服务器应该需要更多。更糟糕的是,较慢的服务器可能会过载,随着更多请求的进入,它会变得更慢,并且可能随时开始丢弃请求。你不想那样。
leastconn
会检测到服务器不均匀。较慢的服务器保持连接的时间越长,它的连接数就越高。leastconn
考虑到这一点并更喜欢另一台服务器。
根据我的经验,包括我专门为大中型网站进行性能测试的角色。leastconn
可以像roundrobin
HTTP(S)那样高效 300% 。roundrobin
不公平地分配连接,在高负载时会导致不稳定。
(让我们忽略 HAProxy 不支持 UDP 并且 UDP 连接较少)。
最后一个例子。DNS 是一个简单的协议。客户端发送单个 UDP 消息来请求域,DNS 服务器在单个消息中回复。
在这种情况下,没有真正的联系。即使有,它也会立即关闭(理论上)。
在这些情况下计算连接数是没有意义的,这对于leastconn
. 一个简单的roundrobin
可以分发消息。
人们有时认为他们不应该leastconn
用于短期连接(类似于最后一个例子)。甚至 HAProxy 文档对此也有误导性。
leastconn
Use of this algorithm is recommended where very long sessions are
expected, such as LDAP, SQL, TSE, etc... but is not very well
suited for protocols using short sessions such as HTTP.
[misleading advice, should ignore it]
Run Code Online (Sandbox Code Playgroud)
在现实世界中,short connections
不是一回事。
应用程序建立在 TCP 之上。消息是按顺序传递和处理的。当服务器速度缓慢或过载时,“短”连接会变长。如果有(更多)连接,则可能有一些(更多)工作正在完成。连接计数和连接持续时间各不相同且具有意义。
考虑一个基本的 HTTP 服务器。一些资产需要几毫秒,一些 API 调用需要几秒钟,一个页面可能需要任何时间来加载其中的任意数量的请求,等等。请求不是短暂的,它们的生命周期取决于在哪个服务器上处理的内容。leastconn
了解正在进行的活动并调整分布,这正是您想要从负载均衡器中获得的。
归档时间: |
|
查看次数: |
23474 次 |
最近记录: |