【问题标题】:Spring data redis unable to connect to Redis DNS proxySpring data redis 无法连接到 Redis DNS 代理
【发布时间】:2017-12-14 17:06:42
【问题描述】:

我在将 Spring Redis 与客户端连接时遇到问题。 所以我有一个带有主机名的代理,并且有 3 个 redis 节点,但只有一个可用。 我正在使用 LettuceConnectionFactory 创建连接。 当应用程序尝试连接到客户端时出现异常:

Caused by: java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration: Invocation of init method failed; nested exception is org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis on unavailableIP:13376; nested exception is com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration: Invocation of init method failed; nested exception is org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis on unavailableIP:13376; nested exception is com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376
Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis on unavailableIP:13376; nested exception is com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376
Caused by: com.lambdaworks.redis.RedisConnectionException: Unable to connect to /unavailableIP:13376
Caused by: java.net.ConnectException: Connection refused: no further information: /unavailableIP:13376"}}

相反..如果我尝试从 Redis 桌面管理器连接,它可以工作..

有没有办法应用“重试”来获取可用的ip?

【问题讨论】:

    标签: java spring proxy redis connection


    【解决方案1】:

    将 DNS 代理与 Java 用于 HA 可能需要对您的代码/运行时进行一些调整。 Java 将 DNS 响应缓存一段时间,这可能导致 Java 代码解析为旧 IP 地址,尽管您的 DNS 会使用更新的 IP 地址进行响应。您还应该注意,根据可用性检查的实现,后端需要一些时间才能刷新数据,而 Lettuce 中断开的连接会立即尝试重新连接。

    我建议不要使用基于 DNS 的平衡器,因为您只能对断开/超时的连接做出反应。使用更积极的方法(如 Redis Sentinel)是更好的选择。

    您可以尝试使用自定义 DNS 配置 Lettuce 的 DnsResolver,每次连接/重新连接时都会解析地址。

    另见:

    【讨论】:

      猜你喜欢
      • 2022-08-03
      • 2021-01-01
      • 2017-09-16
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 2021-02-15
      相关资源
      最近更新 更多