2

我在具有自己的RDS 数据库服务器的单个 AWS EC2服务器上安装了一个MediaWiki应用程序,效果很好。出于负载平衡的目的,我安装了另一个带有负载平衡器的 EC2 服务器来处理额外的 Web 服务器流量。

我编辑了 LocalSettings.php 并将其指向负载平衡 URL $wgServer = " http://xxxxxxxxx.elb.amazonaws.com ",然后我重新声明了 apache 服务器。

该应用程序不再始终如一地工作 - 以下是一些症状。

  1. 登录后,最终用户会看到登录链接,就好像该用户根本没有登录过一样。
  2. 当用户编辑信息时,数据可能会或可能会。

在我关闭负载均衡器中的一个 Web 服务器后,一切都恢复正常了。我怀疑这是由于会话状态等。

如何使应用程序在负载平衡的环境中工作?

我还查看了https://meta.wikimedia.org/wiki/Help:Logging_并在其中搜索了信息,但它没有给我提供如何解决这个问题的线索。

从EC2 Linux 服务器上的https://releases.wikimedia.org/mediawiki/1.22/mediawiki-1.22.6.tar.gz安装。

4

2 回答 2

3

是的,这是由于用户的会话没有分布在两个 EC2 实例上。您可以更改 Mediawiki 存储会话数据的方式。这个答案描述了使用 MySQL。在两个 EC2 实例上对 Mediawiki 进行更改后,两个实例都可以使用用户会话。

一个(不太理想的)替代方法是在 AWS ELB 上配置粘性会话。

于 2016-10-13T15:32:11.120 回答
0

您还可以使用来自 AWS sdk ( https://aws.amazon.com/ru/blogs/aws/scalable-session-handling-in-php-using-amazon-dynamodb/ ) 的 DynamoDB 会话处理,尽管它需要编写Mediawiki 的小扩展。

于 2016-10-14T13:04:07.777 回答