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

Управление сеансом кластера AWS Redis не работает

Мы запускаем php7 с nginx в aws ELB и обрабатываем сеансы в кластеризованном Redis AWS, но сеанс не сохраняется в кластере AWS redis. Иногда это работает, но в большинстве случаев не работает.

в php.ini изменились на session.save_handler = redis и session.save_path = "tcp: // конечная точка конфигурации redis: 6379"

любезно помогите в этом.

Ваш обработчик сохранения сеанса установлен на Redisне редискластер. Видеть: https://github.com/phpredis/phpredis/blob/develop/cluster.markdown#session-handler

Вы должны убедиться, что rediscluster является зарегистрированным обработчиком сохранения для сеансов. Вы можете проверить это в phpinfo().

Вы также используете Redis стиль для вашего save_path, а не редискластер стиль. Для этого требуется только hostname: port в save_path, но также как минимум одно семя. Он должен выглядеть примерно так:

session.save_handler = rediscluster
session.save_path = seed[]=redis-config-endpoint:6379&option=value

Где option - это любая из опций, определенных в файле cluster.markdown (тайм-аут, read_timeout, постоянный, отказоустойчивый ... и, возможно, распространение).

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

Вы также захотите настроить время жизни сеанса сборки мусора и вероятность того, что это произойдет на заданном session_start() вызовите, чтобы убедиться, что старые сеансы очищены.