负载平衡 - 如何正确设置?

时间:2012-12-11 11:00:18

标签: php mysql ssl nginx load-balancing

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

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

使用PHP 5.4< over fastCGI

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

另一件事是:我想在一个域上做所有事情,以便在前端真正注意到对差异后端服务器的访问(一些后端服务器基本上通过子域调用 - 例如:文件服务器,通过'http ://file.myserver.com / ...'只在文件服务器之间进行负载平衡)

  1. 我是否需要一个额外的单独服务器来实现负载平衡?或者我可以只使用其中一个Web服务器?如是:
    • 这样的负载平衡服务器需要多少功率(CPU / RAM)?是否必须像网络服务器一样,或者是否足以拥有一个“更轻”的服务器?
    • '负载平衡'服务器是否也必须可扩展?如果请求太多,我还需要不止一个吗?
  2. 整个负载平衡究竟是如何工作的?我的意思是说:
    • 我看过很多条目,说在负载均衡系统上存在会话处理/同步等问题。我可以找到2个可能符合我需求的解决方案:用户总是被定向到同一台机器,或者数据存储在数据库中。但是第二个,我基本上必须重建PHP已经拥有的$ _SESSION功能的一部分,对吧? (我怎么知道用户得到什么会话,cookie真的够用吗?)
    • 除了不同步的会话外,我还有什么问题?
  3. 编写可扩展的代码 - 这是我经常阅读的一个句子。但就PHP而言,它究竟意味着什么?通常,一个用户的整个计算只发生在一个服务器上(NGINX重定向用户的那个) - 那么PHP本身如何可扩展,因为它实际上并没有被NGINX重定向?
  4. 可以使用不同的“负载平衡”池吗?我的意思是,所有文件服务器都在“池”中,并且所有Web服务器都在“池”中,基本上,如果您在文件服务器上请求图像太多,它会重定向到不太繁忙的文件服务器< / LI>
  5. SSL - 我只需要一个平衡加载服务器的证书,对吧?由于数据总是通过负载平衡服务器返回 - 或者这究竟是如何工作的?
  6. 我知道这是一个很大的问题 - 基本上,我只是在寻找一些建议/并且有点伸出援手,我在整个事情上有点迷失。我可以阅读部分回答上述问题的片段,但真的“做”完全是另一回事。所以我已经知道,这不是一个明确的,明确的答案,但也许是一些经验。

    最终目标是在未来可以轻松扩展,并且已经及时计划(甚至可以像负载均衡器服务器那样购买)。

1 个答案:

答案 0 :(得分:0)

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

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

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