Ошибка AWS + Celery + ElastiCache (Redis Cluster): ключи CROSSSLOT в запросе не хешируются в один и тот же слот

У меня есть Dockerized Celery, работающий на AWS, и он использует ElastiCache (Redis Cluster с несколькими узлами) от AWS в качестве брокера сообщений, но я получаю следующую ошибку.

Когда я тестирую своих рабочих Celery на своей локальной машине, он совершенно нормально общался с одним узлом Redis. Как мне исправить эту проблему?

[I 180518 18:54:20 mixins:224] Connected to redis://....use1.cache.amazonaws.com:6379//

[E 180518 18:54:20 events:123] Failed to capture events: 'CROSSSLOT Keys in request don't hash to the same slot', trying again in 1 seconds.

...

[E 180518 18:54:23 events:123] Failed to capture events: 'Command # 1 (LLEN celeryev....2d788) of pipeline caused error: MOVED 11904 10.0.x.xxx:6379', trying again in 1 seconds.

person user1187968    schedule 18.05.2018    source источник


Ответы (1)


Эта ошибка возникает из-за того, что ключи должны находиться в одном и том же хеш-слоте, а не только в одном и том же узле. Чтобы реализовать операции с несколькими ключами в сегментированном кластере Redis (включен режим кластера) ElastiCache, ключи должны быть хешированы в один и тот же хэш-слот. Вы можете принудительно вставить ключи в один и тот же хеш-слот, используя хэш-теги.

Я также рекомендую проверить, поддерживает ли ваше приложение Redis, используя режим кластера.

Дополнительная информация здесь и здесь

person Lucas Carvalho    schedule 01.12.2018