когда один из Redis Master не работает в Docker Spring Boot Redis салат-клиент всегда пытается восстановить соединение, которое блокирует приложение - PullRequest
0 голосов
/ 04 января 2019

У меня есть кластер redis с 3 Master 3 Slaves, развернутыми в Docker.Я использую spring-boot 2.0.1.Последним и следующим является конфигурация

spring.cache.type = redis

spring.redis.cluster.nodes [0] = master. $ {REDIS_SERVICE_NAME} .service: 6379

spring.redis.cluster.max-redirects = 10

spring.redis.lettuce.pool.max-idle = 10

spring.redis.lettuce.pool.max-wait = 1 с

spring.redis.lettuce.pool.min-idle = 5

spring.redis.lettuce.pool.max-active = 10

spring.cache.redis.time-to-live = 10800 с

spring.cache.redis.key-prefix = mds

spring.cache.redis.cache-null-values ​​= false

master.redis.service: 6379 - это моя служба переадресации, зарегистрированная в консуле.(Сервис Hashi Corp для поиска услуг).Это URL балансировки нагрузки.

когда один из моих главных контейнеров умирает и повторно развертывается в другом контейнере, клиент redis с весенней загрузкой пытается установить соединение с IP-адресом OLD (ip контейнера, который мертв).Пока это соединение не установлено, приложение заблокировано.

Я попытался создать пользовательский CacheErrorHandler, и он обрабатывает только RuntimeException, а не эту проблему подключения.

Я хочу, чтобы мое приложение игнорировало это и переходило к БД, если есть проблема с подключением кеша?

как решить эту проблему?

2019-01-03 21: 30: 38.463 ПРЕДУПРЕЖДЕНИЕ 76 --- [ioEventLoop-4-7] ilcore.protocol.ConnectionWatchdog: Невозможно повторно подключиться: io.netty.channel.AbstractChannel $ AnnotatedNoRouteToHostException: нет маршрута кхост: / ipaddress: 6379

...