【问题标题】:Laravel Application & Load balancerLaravel 应用程序和负载均衡器
【发布时间】:2018-10-15 22:24:57
【问题描述】:

我在 AWS 云上托管了我的应用程序,负载均衡器运行在两个实例之上,这两个实例由 Nginx 在 Php7.0-fpm 之上提供服务。假设我的应用程序下载了一个文件并将其存储在本地,以便可以将内容提供给客户。带弹性伸缩组,配置两个实例;

1) 如果我的会话从下载文件的实例 1 开始,然后突然切换到实例 2,我会得到相同的内容吗?

或者

2) 如果在单个实例上创建会话,在我注销应用程序之前是否会使用同一个实例?

非常感谢任何帮助!

【问题讨论】:

  • 我建议下载并保存在 S3 中,以便每个实例都可以使用它
  • @Mumtaz 我同意.. 对于静态文件来说没问题。但是,如果我想编辑文档怎么办?假设它是一个电子表格。本地发生的操作不会被打断吗?
  • 1) 是的。 2) 是的。
  • 你能详细说明@DigitalDrifter吗?

标签: laravel amazon-web-services autoscaling elastic-load-balancer


【解决方案1】:

对于具有 1 个以上实例且负载均衡的网站,强烈建议您将缓存和会话存储在 1 个位置,而不是多个位置。为此,您可以在所有服务器上安装 memcached 并将它们配置为将它们指向 1 个服务器以存储所有内容。

SESSION_DRIVER=memcached
CACHE_DRIVER= memcached
MEMCACHED_HOST=127.0.0.1 #on your memcache server, point to localhost
MEMCACHED_HOST=10.10.1.10 #on other instances, point to memcache server
MEMCACHED_PORT=11211

对于文件和图像上传,请使用 AWS 的 S3 或带有 FTP 的专用存储服务器进行存储,以便所有服务器可以直接以相同的方式访问它。最简单,最高效:)

如果您将它们存储在本地,您的服务器将不会与相同的内容同步,并且您的用户最终会得到 404。

【讨论】:

  • 解决了。谢谢@emotality :)
  • 我们应该在单独的服务器中单独托管 memcache,而不是完整的应用程序。由于 ASG 组下的实例可能会根据策略终止。
猜你喜欢
  • 2012-01-11
  • 2017-09-27
  • 2018-02-26
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2017-01-04
相关资源
最近更新 更多