Как использовать PHP memcached для хранения сессий с автоматическим масштабированием?

У меня уже есть memcached установлен на моих серверах, и я изменил по умолчанию php.ini чтобы:

session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

Я использую экземпляры Amazon EC2 (Ubuntu 16.04 LTS) с автоматическим масштабированием и балансировкой нагрузки, но у меня есть большой вопрос о PHP memcached, Сначала объясню мою проблему: я сохранил sessions в моем Server A а у меня другой Server B тоже работает. Но когда я останавливаюсь Server A (что я связан с sessions), балансировщик нагрузки перенаправляет меня на Server B и это выглядит как sessions потерялись, потому что я отключен от своего веб-сайта, и он просит меня войти снова.

И я прочитал этот отрывок для использования memcached для хранения сессии на нескольких серверах ( отсюда):

В вашем php.ini вы должны установить session.save_path для списка серверов memcached, например server1:11211, server2:11211.

Но как я могу сказать, кто будет server1:11211 а также server2:11211 при том, что я использую автоматическое масштабирование и у меня может быть "n" серверов?

1 ответ

Решение

Ваш memcached сервер (ы) должен быть вне вашей ASG. Как вы знаете, состояние не может быть сохранено в экземплярах ASG. Итак, либо воспользуйтесь сервисом Elasticache AWS, либо запустите свой собственный сервер memcached, а затем укажите туда свои экземпляры ASG.

Другие вопросы по тегам