2015-08-05 3 views
3

Мы используем AWS Elasticache около 6 месяцев без каких-либо проблем. Каждую ночь у нас есть Java-приложение, которое запускает, которое очистит DB 0 нашего кэша redis и затем повторно запишет его обновленными данными. Однако у нас было 3 случая с 31 июля по 5 августа, когда наша БД была успешно очищена, а затем мы не смогли записать новые данные в базу данных.Amazon Elasticache Failover

Мы получали следующее исключение в нашем приложении:

redis.clients.jedis.exceptions.JedisDataException: redis.clients.jedis.exceptions.JedisDataException: READONLY Вы не можете записи Против только для чтения.

Когда мы смотрим на события кэша в Elasticache мы можем увидеть

Failover от мастер-узла Prod-Redis-001 в реплике узел прод-Redis-002 завершена

Мы не смогли диагностировать проблему, и поскольку приложение работает отлично в течение последних 6 месяцев, мне интересно, связано ли это с недавним выпуском Elasticache, который был сделан 30 июня. https://aws.amazon.com/releasenotes/Amazon-ElastiCache

Мы всегда писали наш главный узел, и у нас только 1 узел реплики.

Если кто-то может предложить любую проницательность, он будет очень признателен.

РЕДАКТИРОВАТЬ: Кажется, это проблема с периодичностью. В некоторые дни он провалится в другие дни.

+0

Вы используете IP или имя DNS при подключении к elasticache Redis? Обычно, если вы используете DNS-имена, у вас не должно быть такой проблемы, потому что имя главного DNS должно оставаться неизменным, только IP-адрес изменится (по крайней мере, теоретически). Кроме того, это очень специфичные внутренние функции AWS, попробуйте также опубликовать вопрос на своих форумах. –

+0

Спасибо, я использую DNS-имя. У меня не было этой проблемы в течение последних двух дней, поэтому, возможно, это была проблема со стороны AWS, которая теперь исправлена. Я попытаюсь получить ответ от поддержки AWS. – DarrenCibis

+0

Сегодня вечером с моим приложением произошло очень похожее. Во-первых, поддержка AWS спросила: «Вы используете jedis?» Мы не. Они не могли рассказать нам много. Мы закончили строительство новых узлов и резцов. Я уточню, если они расскажут нам больше. – TimH

ответ

4

Мы были в контакте с поддержкой AWS в течение последних нескольких недель, и это то, что мы нашли.

Большинство запросов Redis являются синхронными, включая флеш, поэтому он блокирует все остальные запросы. В нашем случае мы фактически смываем ключи 19 м, и это занимает более 30 секунд.

Elasticache периодически проверяет работоспособность, и после того, как флеш работает, проверка работоспособности будет заблокирована, что приведет к отказу.

Мы просили группу поддержки, как часто проводится проверка работоспособности, поэтому мы можем получить представление о том, почему наш флеш вызывает только переключение 3-4 раза в неделю. Лучший ответ, который мы можем получить, - «Мы думаем, что он каждые 30 секунд». Однако наш флеш последовательно занимает более 30 секунд и не всегда терпит неудачу.

Они сказали, что могут реализовать возможность настройки времени проверки работоспособности, однако они сказали, что это не будет сделано в ближайшее время.

Лучший совет, который они могли бы дать нам это:

1) Создание совершенно нового кластера для загрузки новых данных на и вместо промывки предыдущего кластера, повторно указать приложение (ы) в новый кластер и удалите старый.

2) Если данные, которые вы очищаете, являются обновленной версией данных, считают, что вы не очищаете, а обновляете и перезаписываете новые ключи?

3) Вместо промывки данных, установить срок пунктов быть , когда вы обычно вровень, и пусть ключи будут утилизированы (возможно со случайным временем, чтобы избежать Громовых проблем стада), а затем снова данные.

Надеется, что это помогает :)

Смежные вопросы