首页 > 解决方案 > Laravel 应用程序和负载均衡器

问题描述

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

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

或者

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

任何帮助深表感谢!!

标签: laravelamazon-web-servicesautoscalingelastic-load-balancer

解决方案


对于具有超过 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。


推荐阅读