Назад | Перейти на главную страницу

Amazon EC2 ELB направляет нагрузку в другие инстансы и хранилища сеансов

  1. Если мы увеличим масштаб (добавим экземпляр в ELB), сможем ли мы перенаправить некоторые существующие запросы на новый экземпляр. Таким образом, пользователям, которых мы заставляем на новый сервер, будет предложено снова войти в систему.

  2. Если мы уменьшим масштаб (удалим экземпляр из ELB), то все пользователи с этого сервера будут автоматически перенаправлены ELB на другие оставшиеся серверы. Этого пользователя не следует просить снова войти в систему.

Возможно ли это (включая перенаправление запроса)? Как?

Любые идеи приветствуются, но я предполагаю, что это можно решить с помощью центрального хранилища сеансов. Я просто не знаю, как это реализовать.

И каковы варианты использования центрального хранилища сеансов? simpledb? Redis? memcached?

ОБНОВЛЕНО:

Наше приложение - это простое веб-приложение, размещенное в apache. У нас есть два его экземпляра, добавленных в Amazon ELB, и мы используем PHP.

Какие-либо предложения по ELB php? при увеличении / уменьшении масштаба не должно отображаться никаких видимых пользователем симптомов?

Да, вы можете решить все эти и многие другие проблемы с помощью централизованного хранилища сеансов. Не зная свое приложение, невозможно указать вам на исчерпывающее руководство по его реализации (и в любом случае это будет вопрос о переполнении стека), но обычно это так же просто, как либо установить параметр (в таких фреймворках, как Rails), либо написать несколько строк связующего кода, который вызывается веб-фреймворком и который подключается к магазину для хранения деталей или их получения.

Что касается того, что использовать, я рекомендую Redis. Хотя кажется, что memcached может помочь, у него есть неприятный недостаток, заключающийся в том, что пользователи должны повторно входить в систему всякий раз, когда вам нужно перезапустить ваши экземпляры memcached. Хорошее практическое правило, которому следует следовать в системах с резервированием, - никакие изменения в вашей инфраструктуре не должны проявляться любой видимые пользователем симптомы. Redis, с другой стороны, сохраняется на диске, невероятно быстр как при обновлении, так и при получении, и показал себя невероятно надежным в крупномасштабных ситуациях, в которых я его использовал.