Laravel Application & Load Balancer - PullRequest
0 голосов
/ 05 мая 2018

Я разместил свое приложение в облаке AWS, и балансировщик нагрузки работает поверх двух экземпляров, которые обслуживаются Nginx поверх Php7.0-fpm. Допустим, мое приложение загружает файл и сохраняет его локально, чтобы его содержимое можно было доставить клиентам. С группой автоматического масштабирования, настроенной для двух экземпляров;

1) Если мой сеанс начинается с экземпляра 1, где загружается мой файл, и внезапно переключается на экземпляр 2, получу ли я тот же контент?

Или

2) Если сеанс создается для одного экземпляра, будет ли этот экземпляр использоваться до тех пор, пока я не выйду из приложения?

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 05 мая 2018

Для веб-сайта с более чем 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

Для загрузки файлов и изображений используйте S3 с AWS или выделенного сервера хранения с FTP для хранения, чтобы все серверы могли получить к нему прямой и одинаковый доступ. Самый простой и самый эффективный:)

Если вы храните их локально, ваши серверы не будут синхронизированы с одним и тем же контентом, и у ваших пользователей будет 404.

...