AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 457506
Accepted
Ryan
Ryan
Asked: 2012-12-13 08:59:20 +0800 CST2012-12-13 08:59:20 +0800 CST 2012-12-13 08:59:20 +0800 CST

HA 代理 - roundrobin 与 leastconn

  • 772

roundrobin关于什么时候应该使用什么时候使用有什么建议leastconn吗?

我roundrobin目前正在使用并观察到我的后端服务器的负载分布不均匀。当然可能还有其他问题,但我们想leastconn试一试,但由于它是关键任务服务器,我想在进行更改之前参考其他经验。

有什么想法可以分享吗?

load-balancing
  • 2 2 个回答
  • 28657 Views

2 个回答

  • Voted
  1. Best Answer
    Kyle Brandt
    2012-12-13T10:03:18+08:002012-12-13T10:03:18+08:00

    我没有尝试过 leastconn,但我的理解是,leastconn 的典型用例是当您对可能具有长期连接的东西进行负载平衡时。这样做的原因是 leastconn 专注于确保平衡的并发性,因为 road robin 将提供更平衡的到达率。如果这种区别不清楚,请参阅我对差异的回答。

    当您说负载分布不均时,可能有助于更好地定义“负载”。如果您指的是服务器资源,那么我建议您确定究竟是什么导致了负载增加(即某些类型的连接)并从那里向后工作。

    • 16
  2. user5994461
    2018-08-16T04:35:46+08:002018-08-16T04:35:46+08:00

    这取决于要平衡的协议和用例。对于连接数量与负载/使用情况相关的任何情况,最好使用leastconn. 由于网络和应用程序的工作方式,它几乎总是正确的,你最好leastconn默认使用。

    RDP / X11 远程桌面 / 跳转主机

    例如,一家公司有一个员工连接到的远程桌面池。您希望员工在桌面之间稍微均匀地分布。

    该用例中的活动连接数大致是“现在有多少员工正在使用该桌面”。连接最少的主机使用它的员工最少,而且它可能负载最少。在这些情况下使用“leastconn”,它会根据用户数量平均分配负载。

    理想的负载均衡器应该知道远程桌面负载。有多少用户?有多少申请?消耗了多少内存和CPU?有专用于远程桌面的商业解决方案(Microsoft/Citrix/等...),它们通常测量这些指标以很好地传播使用。HAProxy 是一个简单的网络负载均衡器,它不能比使用leastconn.

    HTTP / HTTPS

    对于 HTTP,活动连接意味着服务器正忙于处理请求。连接数与负载成正比。您希望选择活动连接数最少的服务器(正在进行的请求)。用于leastconnHTTP(S) 流量。

    想象一个有两台 HTTP 服务器的场景,其中一台服务器处理请求的速度较慢(可能它超载了,也可能它的硬件较旧)。

    roundrobin将在两个服务器之间分配一半的请求。这是非常低效的,更快的服务器应该占用更多。更糟糕的是,较慢的服务器可能会过载,随着更多请求的进入,它会变得更慢,并且可能随时开始丢弃请求。你不想要那个。

    leastconn会检测到服务器不均匀。较慢的服务器保持连接的时间更长,它的连接数更高。leastconn考虑到这一点并更喜欢另一台服务器。

    根据我的经验,包括我专门为中型到大型网站进行性能测试的角色。leastconn可以比roundrobinHTTP(S) 高效 300%。roundrobin不公平地分配连接,它会导致高负载不稳定。

    DNS请求

    (让我们忽略 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]
    

    在现实世界中,short connections不是一个东西。

    应用程序建立在 TCP 之上。消息通常按顺序传送和处理。当服务器速度慢或过载时,“短”连接会变长。如果有(更多)连接,则可能有一些(更多)工作正在完成。连接计数和连接持续时间各不相同且有意义。

    想想一个基本的 HTTP 服务器。一些资产需要几毫秒,一些 API 调用需要几秒钟,一个页面可能需要任何时间来加载其中的任何数量的请求,等等。请求不是短暂的,它们的生命周期取决于在哪个服务器上处理什么。leastconn了解正在进行的活动并调整分配,这正是您想要从负载均衡器获得的。

    • 8

相关问题

  • 网络负载平衡服务器无法相互通信

  • 用于网络监控的路由/代理 SNMP 陷阱(或 Netflow、通用 UDP 等)的解决方案?

  • 防止拒绝服务攻击的最佳技术是什么?

  • 添加备份互联网连接需要哪些硬件?

  • 什么是最有效的 Windows 负载平衡解决方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve