2

刚刚迁移到 AWS 并启动了 2 个负载均衡的 RHEL 服务器。并安装了 Apache 和 PHP。就这样。第二个甚至是第一台服务器的图像。

但突然我注意到 PHP$_SESSION变量没有同步。各有不同。

在我运行这个之后:

<?php
session_start();

if ( $_GET["setvalue"] ) {
    $_SESSION["sess_test"] = $_GET["setvalue"];
}

echo "session value: ".$_SESSION["sess_test"];
?>

然后我分配像:

在我分配会话值并一次又一次地刷新(当然通过删除“ ?setvalue=hello”部分)之后,每当我刷新时,同一页面都会显示 2 倍不同的值(因为我有两个负载平衡服务器)。

一是显示:

  • 会话值:你好

下一次显示:

  • 会话值:

在我再次给出不同的值后,只有一个命中服务器显示最后一个值,而其他服务器仍未更新为最后一个值。

有什么想法吗?:(

4

1 回答 1

3

如果您使用的是默认的基于文件的会话存储引擎,那么很自然地,您无法对它们进行负载平衡(至少,在不使用某种粘性的情况下并非如此)。

您需要的是集中存储会话,例如使用数据库memcache

另请参阅负载平衡集群中的 PHP 会话 - 如何?

于 2013-07-26T10:47:44.927 回答