问题描述
在使用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连接地址是否正确。您可以在Redis管理控制台的实例信息页查看Redis的内网连接地址,如下图所示。
- 在ECS中使用
cat /etc/resolv.conf
命令,查看/etc/resolv.conf
文件中是否正确设置了DNS服务器地址。注:
- 如未设置DNS服务器请使用
vi /etc/resolv.conf
命令编辑/etc/resolv.conf
文件,按照下图中的格式添加DNS服务器地址,编辑完成后保存退出。 - 建议您使用ECS中默认的DNS服务器或将其自定义为其它安全稳定的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地址发生改变,该方案将会失效。
适用于
- 云数据库 Redis