当前位置: 首页 > 知识库问答 >
问题:

无法连接到redis sentinel在本地Spring引导中运行在docker上

蓟雪峰
2023-03-14

我使用的是Spring boot 2.2.5和Spring data redis和Bitnami/redis-Sentinel sentinel docker Image。

我可以用redis-cli连接到redis。(cli显示127.0.0.1:6379)

但在我本地的Spring boot应用程序中,它不起作用。错误跟踪如下所示:

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。

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

我想我的应用程序通过localhost sentinel配置很好地获得了主信息。

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

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

任何帮助都将不胜感激!

共有1个答案

唐昊焜
2023-03-14

我刚刚通过在docker-compose中的environment中添加redis_master_host=127.0.0.1(原来是'redis')来解决我的问题。我发现运行容器的redis-sentinel.conf中设置了172.28.0.26379用于monitor reids master,并且容器名“redis”没有改变。

之后,我的带有lettuce客户端的springb引导应用程序可以在本地机器上毫无问题地连接到redis。

 类似资料:
  • 问题内容: 我有去grpc服务。我正在开发Mac,塞拉利昂。在本地针对服务运行grpc客户端时,一切都很好,但是在Docker容器中针对相同服务运行相同的客户端时,出现此错误: 这是我的docker文件: 我的命令来建立图像: 我的命令启动Docker容器: 其他资讯: 客户端程序可以在Docker容器中正常运行 连接到常规的休息端点可以正常工作(http2,与grpc相关吗?) 在OS X中运行

  • 我有go grpc服务。我在mac电脑上开发,塞拉。当针对本地服务运行grpc客户机时,一切都很好,但当针对docker容器中的相同服务运行相同客户机时,我会出现以下错误: 下面是我的服务器代码片段:

  • 我在docker compose yml文件中为广告侦听器配置了以下配置 警告O.apache.kafka.clients.networkclient-获取相关id为1的元数据时出错:{foo=leader_not_available} 主机可以从我的机器ping,因为它都在同一个网络中,没有防火墙问题。在docker容器中使用命令时,可以看到相同的主机名。我是不是漏掉了什么?

  • 我试图连接到mysql数据库从docker图像。然而,这是投掷错误。 下面是我正在使用的docker图像。https://hub.docker.com/_/mysql/ 下面是我用来运行docker映像的命令。 以下是命令的输出 如果我使用docker检查IP并ping该IP,则显示IP不可访问。 如果我尝试使用和我遇到以下错误。 无法加载身份验证插件“缓存\u sha2\u密码”。

  • 问题内容: 遵循此示例:https : //docs.docker.com/engine/examples/mongodb/ 当尝试使用以下命令连接到mongoDB时:( 其中ip是boot2docker ip的名称)+ docker ps的端口号: 27017 / tcp 或-P 0.0.0.0:49155->27017/tcp 无论哪种方式,我都会收到以下错误: 警告:无法连接到ip:2701

  • 问题内容: 我在本地计算机上使用docker设置了Single Node Basic Kafka Deployment,如Confluent Kafka文档中所述(步骤2-3)。 另外,我还公开了zookeeper的端口2181和kafka的端口9092,以便能够从在本地计算机上运行的Java客户端连接到它们: 问题:当我尝试从主机连接到kafka时,连接失败,因为它无法解析地址:kafka:90