Как использовать 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.