在使用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. 使用# cat /etc/resolv.conf在ECS中查看/etc/resolv.conf文件中是否正确设置了DNS服务器地址。
    查看DNS服务器地址
    说明
    • 如未设置DNS服务器请使用# vi /etc/resolv.conf命令编辑/etc/resolv.conf,按照上图中的格式添加DNS服务器地址,编辑完成后按键盘上的Esc键,输入:wq之后按下回车保存修改。
    • 建议您使用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
说明 如果以上步骤未能解决问题,您可以采用临时方案,在/etc/hosts文件中加入Redis的域名和IP的映射,确保域名可以正常解析,之后参考Redis连接问题排查与解决尝试排除其它原因引起的连接问题。hosts文件的编辑方法请参见本文第2步的说明部分和下图示例。请注意,修改hosts文件只能作为临时解决方案,如果Redis实例的IP地址发生改变,该方案将会失效。