Apache 和 MySQL 的 HAProxy 平衡算法

Apache 和 MySQL 的 HAProxy 平衡算法

最近我负责一个使用 Apache 网络服务器和 MySQL 数据库的现有项目。

Web 服务器位于 HAProxy 负载均衡器后面,应用程序通过另一个 HAProxy 连接到 MySQL 从属服务器。

10 个 Web 服务器中有 2 个是最近添加的,比旧服务器更强大。MySQL 从服务器也是如此:这 5 个从服务器中有 2 个拥有更多 RAM 和 CPU。

Apache 服务器的平衡算法是最小连接数对于奴隶来说来源至少我发现 MySQL 服务器的设置很奇怪,因为在最坏的情况下,“最佳” Apache(权重最大)总是会选择最差的 MySQL 服务器,如果我理解HAProxy 文档是的。我会选择循环赛调整权重后:

  • 10 为三个普通 MySQL 服务器
  • 20 为两个更强大的 MySQL 服务器

而且由于 Apache 位于 HAProxy 后面,超时时间为 20 秒,因此我宁愿应用循环赛, 也。

  • 10 为八个普通 Apache 服务器
  • 20 用于更强大的 Apache 服务器

(我会先使用 20。我会观察监控情况,然后再进行调整。)

因为服务器是共置的(例如:我没有 root 权限,更改请求需要一些时间),我只想对这个话题有第二个(或更多)意见:将两者的平衡算法更改为循环赛如果最近没有任何性能问题,我就不会考虑这一点,而这只是我发现值得调整的一个地方。

谢谢您的任何建议!

问候丹尼斯

答案1

source确实是一个奇怪的选择,除非您的应用服务器应该具有与 DB 从属服务器的会话持久性。不过,这需要您自己弄清楚。

leastconn如果每台服务器(应用服务器和数据库)的性能不是绝对稳定,这通常是一个非常好的选择。这取决于您的应用程序和平台的细节。(例如,基于 Java 的应用服务器可能会因垃圾收集而出现速度减慢的时期,在此期间减少其平衡负载是明智的。)

最后,是的,roundrobin您通常可以实现非常可预测和稳定的平衡,并严格遵守权重。

相关内容