веб-сервисы Amazon — Elasticache PHP Redis AWS перемещено исключение в Laravel

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

Я настроил эластичный кластер Redis, имеющий следующие параметры:

Группа параметров: default.redis.3.2.cluster.on
Осколки: 3
Всего узлов: 9

В конфигурации сеанса laravel я установил redis в качестве драйвера сеанса.

В файле database.php, где установлена ​​конфигурация redis, я использовал следующее:

REDIS_HOST = my_aws_elasticache_configuration_endpoint
REDIS_PASSWORD = нуль
REDIS_PORT = 6379
,

Когда я пытаюсь использовать его, я получаю следующую ошибку:

MOVED 13841 some_ip_address_of_aws: 6379

Я попытался использовать локальный Redis, и это сработало, поэтому predis работает правильно. Я пытался проверить решения в Интернете, но не смог найти решение. Я считаю, что конечная точка конфигурации пытается перенаправить соединение redis на доступный URL-адрес узла из 9 имеющихся у меня узлов. Тем не менее, я ожидал, что AWS должен делать это внутренне, а не создавать исключения. Может кто-нибудь мне помочь?

0

Решение

Наконец-то я получил ответ: нам нужно включить режим кластера в настройках базы данных и установить новый параметр кластера на redis. Вот как выглядит конфигурация redis в database.php:

'redis' => [
'client' => 'predis',
'options' => [
'cluster' => 'redis',
],
'clusters' => [
'default' => [
[
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
],
],

Если у вас есть пароль, вы можете заменить массив опций следующим:

 'options' => [
'cluster' => 'redis',
'parameters' => ['password' => env('REDIS_PASSWORD', null)],
],
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]