阿里云Redis数据库因域名解析失败导致连接问题的解决方法
发布时间:2019-07-10 点击数:3372
在使用Redis连接地址连接实例时,如果因DNS服务出现问题导致ECS解析连接地址失败,ECS与Redis之间的网络连接将会中断。您可以根据本文的建议尝试解决此类问题。
背景信息
ECS与Redis之间出现连接问题的原因多种多样,DNS解析失败是其中较为常见的一种。当出现UnknownHostException或者failed to connect: r-***************.redis.rds.aliyuncs.com could not be resolved之类提示未知主机名或连接地址无法正常解析的报错时,请检查域名的正确性和DNS服务器设置,并刷新DNS缓存。
说明 本文以Linux环境为例进行说明。
操作步骤
-
检查业务代码中设置的Redis连接地址是否正确。
-
使用# cat /etc/resolv.conf在ECS中查看/etc/resolv.conf文件中是否正确设置了DNS服务器地址。
说明- 如未设置DNS服务器请使用# vi /etc/resolv.conf命令编辑/etc/resolv.conf,按照上图中的格式添加DNS服务器地址,编辑完成后按键盘上的Esc键,输入:wq之后按下回车保存修改。
- 建议您使用ECS中默认的DNS服务器或将其自定义为其它安全稳定的DNS服务器。
-
根据您使用的DNS服务在下方选择相应的方法清除DNS缓存。
-
清除nscd的DNS缓存:
# service nscd restart
或使用:
# service nscd reload
-
清除dnsmasq的DNS缓存:
# service dnsmasq restart
-
清除BIND服务器中的DNS缓存 :
# /etc/init.d/named restart
或使用:
# rndc restart
-
清除nscd的DNS缓存:
说明 如果以上步骤未能解决问题,您可以采用临时方案,在 /etc/hosts文件中加入Redis的域名和IP的映射,确保域名可以正常解析,之后参考Redis连接问题排查与解决尝试排除其它原因引起的连接问题。hosts文件的编辑方法请参见本文第2步的说明部分和下图示例。请注意,修改hosts文件只能作为临时解决方案,如果Redis实例的IP地址发生改变,该方案将会失效。