gpt4 book ai didi

php - 负载平衡 PHP 的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-29 01:01:15 24 4
gpt4 key购买 nike

所以我正在使用 nginx 为我们的 Web 应用程序设置负载平衡配置。我很可能会使用粘性 session 来避免负载平衡设置中的 session 问题,或者甚至可能会使用数据库 session 处理程序。

但是我现在有两个问题:

1:从SVN(我们用beantalk)部署时,当然是部署到一台机器上,如何跨所有web服务器部署?

2:我正在使用 S3 来存储用户文件,但是我确实保留了一个本地副本以防 S3 出现故障(就像几天前那样),在所有 Web 服务器上同步这些用户文件的最佳方法是什么?

如有任何指点,我们将不胜感激。

最佳答案

SO i am in the process of setting up a load balanced configuration for our web application with nginx

好的

I would most probably go with sticky sessions to avoid session issues on the load balanced setup

所以您不考虑负载均衡,而是考虑负载分配?

不要。

如果做得好,负载平衡意味着您丢失服务的可能性会随着节点数量呈指数级减少。假设单个节点的概率是 0.05(即 95% 的正常运行时间),那么失去两个节点的概率是 0.05 x 0.05 = 0.0025(99.75% 的正常运行时间)。 OTOH 如果你按照你的建议拆分负载,那么每当一个节点发生故障时你就会失去 1/N 的可用性,并且失去一个节点的概率是 N*0.05,所以你只有 2 个节点获得 96.75% 的可用性。

关于跨节点部署,我以前的做法是: 1)取一个节点,称之为node1,下线 2) 将发布应用到 node1 3)验证部署是否成功 4) 使 node1 重新联机 5)让node2下线 6)从节点1到节点2的rsync 7) 再次运行 rsync 检查它是否已经完成 8) 使节点 2 重新联机 然后对每个额外的节点重复 5-8

what would be the best approach to sync these user files across all web server?

上述方法用于部署 - 对于用户提交的数据,您需要在提交时分发内容。我为此使用自定义脚本。如果更新发生时某个节点处于离线状态,则可以在使其再次可用之前重新同步(步骤 6+7)。

我使用的脚本向一个节点发送了一个请求,请求它从请求的发起者那里复制 - 这样它就可以在很短的时间内运行并保证源内容可用。

在实现负载平衡方面——虽然你可以花很多钱购买复杂的硬件,但由于很多原因,我还没有看到任何比循环法更好的东西——尤其是故障转移是透明地实现的客户。

HTH

C.

关于php - 负载平衡 PHP 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com