我正在使用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上运行我的应用程序?
任何帮助将不胜感激!
答案 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,而在本地计算机上没有任何问题。