Невозможно подключиться к Redis Sentinel, работающему на docker в моей локальной загрузке Spring - PullRequest
0 голосов
/ 27 марта 2020

Я использую Spring boot 2.2.5 и данные Redis redis и изображение bitnami / redis-sentinel docker.

bitnami / redis-sentinel docker изображение отлично работает с docker compose .

Я могу подключиться к redis с помощью redis-cli. (Cli показывает 127.0.0.1:6379 подключен)

Но в моем локальном загрузочном приложении Spring это не работает. Трассировка ошибок выглядит следующим образом:

org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 172.28.0.2:6379
at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:109) ~[spring-data-redis-2.2.5.RELEASE.jar:2.2.5.RELEASE]

Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 172.28.0.2:6379
    at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) ~[lettuce-core-5.2.2.RELEASE.jar:5.2.2.RELEASE]

Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: /172.28.0.2:6379
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:261) ~[netty-transport-4.1.45.Final.jar:4.1.45.Final]

IP-адрес 172.28.0.2 - это redis master ip в образе docker.

Моя конфигурация сторожевого хоста такая, как показано ниже, 127.0.0.1:26379 , 127.0.0.1: 26379,127.0.0.1: 26379

Я полагаю, что мое приложение хорошо справляется с основной информацией через конфигурацию локального стража.

Тогда почему мое приложение находит 172.28.0.2:6379 для master вместо 127.0.0.1:6379?

Нужно ли мне изменить адрес в этом docker образе или я должен также запустить свое приложение на docker?

Любая помощь будет быть оцененным!

1 Ответ

0 голосов
/ 28 марта 2020

Я только что решил свою проблему, добавив REDIS_MASTER_HOST = 127.0.0.1 (который изначально был 'redis') в среде в docker -compose. Я выяснил, что в redis-sentinel.conf запущенного контейнера есть 172.28.0.2 6379, установленный для master-объекта reids монитора, и он не изменился с именем контейнера 'redis'.

После этого мое загрузочное приложение springb с салатом-клиентом можно без проблем подключиться к redis на локальной машине.

...