【问题标题】:Load Balancing - How to set it up correctly?负载平衡 - 如何正确设置?
【发布时间】:2012-11-28 22:12:27
【问题描述】:

这里有点复杂。我在过去几个月完成了一个更大的基于 Web 的项目,因为我试图保持低预算(并自己学习一些东西),所以我没有触及我以前从未接触过的问题:使用 NGINX 进行负载平衡,以及面向未来的可扩展性。

设置如下: 1 台网络服务器 1 台数据库服务器 1 个文件服务器(也用于存储备份)

使用 PHP 5.4

现在,所有这些服务器都应该是“可扩展的”——从某种意义上说,如果可用磁盘空间越来越低,我可以添加一个新的文件服务器,或者如果我需要处理比预期更多的请求,我可以添加一个新的 Web 服务器。

另一件事是:我想在一个域上做所有事情,这样前端就不会真正注意到对不同后端服务器的访问(一些后端服务器基本上是通过子域调用的 - 例如:文件服务器,通过'http ://file.myserver.com/...' 仅在文件服务器之间发生负载平衡)

  1. 我是否需要额外的独立服务器来实现负载平衡?或者我可以只使用其中一个 Web 服务器吗?如是:
    • 这样的负载平衡服务器需要多少功率(CPU / RAM)?它是否必须与网络服务器相同,或者拥有一个“更轻”的服务器就足够了?
    • “负载平衡”服务器是否也必须具有可扩展性?如果请求太多,我需要多个吗?
  2. 整个负载平衡究竟是如何工作的?我的意思是:
    • 我看到很多条目指出,负载平衡系统上存在会话处理/同步等问题。我可以找到 2 个可能适合我需求的解决方案:要么始终将用户定向到同一台机器,要么将数据存储在数据库中。但是对于第二个,我基本上必须重建 PHP 已经拥有的 $_SESSION 功能的一部分,对吗? (我怎么知道哪个用户获得了哪个会话,cookie 真的足够了吗?)
    • 除了不同步的会话之外,我会遇到什么问题?
  3. 编写可扩展的代码 - 这是我经常阅读的一句话。但是以 PHP 为例,它的真正含义是什么?通常,一个用户的整个计算只发生在一台服务器上(NGINX 将用户重定向到的服务器) - 那么 PHP 本身如何可扩展,因为它实际上并没有被 NGINX 重定向?
  4. 是否可以使用不同的“负载平衡”池?我的意思是,所有文件服务器都在一个“池”中,所有 Web 服务器都在一个“池”中,基本上,如果您在文件服务器上请求一个有太多事情要做的图像,它会重定向到一个不太繁忙的文件服务器
  5. SSL - 我只需要一个用于平衡加载服务器的证书,对吗?由于数据总是通过负载平衡服务器返回 - 或者这究竟是如何工作的?

我知道这是一个很大的问题 - 基本上,我真的只是在寻找一些建议/有点帮助,我对整个事情有点迷茫。我可以阅读部分回答上述问题的 sn-ps,但真正“做”它完全是另一回事。所以我已经知道不会有一个明确的、确定的答案,但也许是一些经验。

最终目标是在未来易于扩展,并且已经提前计划(甚至购买负载平衡器服务器之类的东西)。

【问题讨论】:

标签: php mysql ssl nginx load-balancing


【解决方案1】:

您可以使用其中一台 Web 服务器进行负载平衡。但是在单独的机器上设置平衡会更可靠。如果您的 Web 服务器响应不是很快并且您收到很多请求,那么负载均衡器会将请求设置在队列中。对于大队列,您需要足够的 RAM。

您通常不需要扩展负载平衡器。

或者,您可以为您的域创建两个或多个 A(地址)记录,每个记录指向不同的网络服务器地址。它会给你一个'DNS load-balancing'没有平衡服务器。考虑这个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2010-10-23
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多