我使用的是springboot2.2.5和springdataredis和bitnami/redis sentinel sentinel docker映像。
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主ip。
我的sentinel主机配置如下,127.0.0.1:26379127.0.0.1:26379127.0.0.1:26379
我想我的应用程序可以通过localhost sentinel配置获得主信息。
那么为什么我的应用程序找到172.28.0.2:6379而不是127.0.0.1:6379?
我是否需要更改docker映像中的地址,还是应该在docker上运行我的应用程序?
任何帮助都将不胜感激!
1条答案
按热度按时间ufj5ltwl1#
我刚刚通过在docker compose的环境中添加redis\u master\u host=127.0.0.1(原来是“redis”)解决了我的问题。我发现在运行container的redis-sentinel.conf中为monitor reids master设置了172.28.0.2 6379,并没有使用container name“redis”进行更改。
之后,我的springb引导应用程序和莴苣客户端可以连接到redis,而不会在本地机器上出现任何问题。