在负载平衡环境中在AWS / EC2上托管MediaWiki的会话问题

时间:2016-10-13 04:12:51

标签: php amazon-web-services amazon-ec2 mediawiki elastic-load-balancer

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

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

应用程序不再一直工作 - 这里有一些症状。

  1. 登录后,最终用户会看到登录链接,就好像用户根本没有登录一样。
  2. 数据可能会或可能在用户编辑信息时使用。
  3. 在我关闭负载均衡器中的一个Web服务器之后 - 一切都运行良好。我怀疑这是由于会话状态等。

    如何让应用程序在负载均衡的环境中运行?

    我还查看了https://meta.wikimedia.org/wiki/Help:Logging_and搜索到的信息,但它没有给我提供解决方法的线索。

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

2 个答案:

答案 0 :(得分:3)

是的,这是因为用户的会话未在两个EC2实例中分发。您可以更改Mediawiki存储会话数据的方式。这个回答describes使用MySQL。在两个EC2实例上对Mediawiki进行更改后,用户&#39;会话将可用于两个实例。

(不太理想)替代方案是在AWS ELB上配置Sticky Sessions

答案 1 :(得分:0)

您也可以使用AWS sdk(https://aws.amazon.com/ru/blogs/aws/scalable-session-handling-in-php-using-amazon-dynamodb/)中的DynamoDB会话处理,但需要为Mediawiki编写微小的扩展名。