问题描述

在使用Redis连接地址连接实例时,如果因DNS服务出现问题导致ECS解析连接地址失败,ECS与Redis之间的网络连接将会中断。您可以根据本文的建议尝试解决此类问题。

 

问题原因

ECS与Redis之间出现连接问题的原因多种多样,DNS解析失败是其中较为常见的一种。当出现UnknownHostException或者failed to connect: r-***************.redis.rds.aliyuncs.com could not be resolved之类提示未知主机名或连接地址无法正常解析的报错时,请检查域名的正确性和DNS服务器设置,并刷新DNS缓存。

 

解决方案

本文以Linux环境为例进行说明。
  1. 检查业务代码中设置的Redis连接地址是否正确。您可以在Redis管理控制台实例信息页查看Redis的内网连接地址,如下图所示。
    查看Redis连接地址
  2. 在ECS中使用cat /etc/resolv.conf命令,查看/etc/resolv.conf文件中是否正确设置了DNS服务器地址。
    注:
    • 如未设置DNS服务器请使用vi /etc/resolv.conf命令编辑/etc/resolv.conf文件,按照下图中的格式添加DNS服务器地址,编辑完成后保存退出。
    • 建议您使用ECS中默认的DNS服务器或将其自定义为其它安全稳定的DNS服务器。
  3. 根据您使用的DNS服务,选择相应的方法清除DNS缓存。
    • 清除nscd的DNS缓存。
      service nscd restart

      或使用如下命令清理。

      service nscd reload
    • 清除dnsmasq的DNS缓存。
      service dnsmasq restart
    • 清除BIND服务器中的DNS缓存 。
      /etc/init.d/named restart

      或使用如下命令清理。

      rndc restart
  4. 如果以上步骤未能解决问题,您可以采用临时方案,在/etc/hosts文件中加入Redis的域名和IP的映射,确保域名可以正常解析,之后参考Redis连接问题排查与解决尝试排除其它原因引起的连接问题。hosts文件的编辑方法请参见本文第2步的说明部分和下图示例。请注意,修改hosts文件只能作为临时解决方案,如果Redis实例的IP地址发生改变,该方案将会失效。

 

适用于

  • 云数据库 Redis