无法连接到本地Spring Boot中在docker上运行的Redis Sentinel

时间:2020-03-27 16:25:17

标签: spring spring-boot docker redis lettuce

我正在使用Spring Boot 2.2.5和Spring数据Redis和Bitnami / Redis-Sentinel 前哨泊坞窗图片。

bitnami / redis-sentinel docker镜像在docker compose上工作正常。

我可以使用redis-cli连接到redis。 (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是docker镜像中的redis master ip。

我的哨兵主机配置如下所示, 127.0.0.1:26379,127.0.0.1:26379,127.0.0.1:26379

我想我的应用程序通过localhost哨兵配置很好地掌握了主信息。

然后,为什么我的应用程序为master而不是127.0.0.1:6379找到172.28.0.2:6379?

我需要更改该Docker映像中的地址吗?还是应该在docker上运行我的应用程序?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我刚刚通过在docker-compose环境中添加REDIS_MASTER_HOST = 127.0.0.1(最初是'redis')解决了我的问题。 我发现正在运行容器的redis-sentinel.conf中为监视器reids master设置了172.28.0.2 6379,并且容器名称为'redis'并没有更改。

然后,我的带有生菜客户端的springb引导应用程序可以连接到Redis,而在本地计算机上没有任何问题。