如何在 2 台服务器上同时使用 2 个 Web 服务器而不会产生任何影响

如何在 2 台服务器上同时使用 2 个 Web 服务器而不会产生任何影响

我有一个很大的 phpbb 论坛和 2 台服务器。想将 http 负载从 1 台网络服务器分配到 2 台网络服务器。以前已经这样做过,但存在问题。

两台服务器(1 和 2)上都安装了 lighttpd。当用户连接到服务器 1 时,我使用了各种负载均衡器,然后负载均衡器决定是否应连接到服务器 1 或 2 上的 lighttpd。

一切都很好,除了负载平衡是循环(随机)的,当用户登录论坛(某种会话)然后在下一页被重定向到第二台服务器时,他没有他的会话!所以他必须再次登录,但谁知道他下次会被重定向到哪里。

解决方案是创建可从两个服务器访问的会话。这样,无论哪个 ligghtpd 用户访问,都不会有问题(我认为)。问题究竟出在哪里,我认为是 lighttpd 的 tmp 中的会话文件,因为 phpbb 的会话位于两个服务器都可以访问的数据库中。另一个可能是 phpbb 会话的 cookie 写入了用于登录的服务器的 ip,如果之前写入 cookie 的 ip 发生更改(第二个 Web 服务器),则会导致问题。

另一个问题是,当用户被重定向到 Web 服务器 2 时,他将获得重定向他的服务器的 IP 地址(而不是他自己的 IP)。这就像他从服务器 1 到服务器 2 建立隧道一样。而不是像应该的那样直接重定向到服务器 2。

这两个问题都需要帮助,我需要做什么才能让用户从两个不同的网络服务器(本例中为 lighttpd)顺利使用我的网站。

答案1

一个词:哈普罗西- 它将根据 IP 哈希提供持久连接,并解决您的所有问题,包括隧道 IP。

答案2

我过去曾用两种方法之一解决过这个问题。方法 1 涉及在用户机器上设置一个包含所有所需会话信息的 cookie。方法 2 是使用可以进行持久连接的负载均衡器 - 这意味着当用户发起连接时,只要他们正在积极使用您的网站,他们就会停留在负载均衡器最初放置他们的服务器上。

答案3

或者只需为共享会话目录设置一个 NFS 服务器,然后将其安装在两个 Web 服务器上。

相关内容