ECS实例通过专有网络(内网)访问Redis需要满足同一地域、同一专有网络、已配置Redis白名单、正确的账号密码。本文介绍ECS连接Redis失败的常见问题的解决办法。
ECS连接问题排查流程图
步骤一:报错信息是否为invalid password
、WRONGPASS
、NOAUTH Authentication required
如果报错信息为connection timed out
或者无明确的报错信息,请跳过步骤一,直接查看步骤二。
报错说明
报错信息为invalid password
、WRONGPASS invalid username-password pair
或者NOAUTH Authentication required
,说明账号密码错误。
解决方法
使用
<user>:<password>
格式的密码重新连接。例如自定义账号为testaccount
,密码为Rp829dlwa
,密码需填写为testaccount:Rp829dlwa
。如果使用
<user>:<password>
格式的密码重新连接,仍然提示密码错误,可能是密码记错了,请重置密码后使用新密码连接。重置密码,请参见修改或重置密码。
步骤二:使用ping命令检测ECS与Redis的网络是否连通
操作方法
登录ECS实例,执行ping命令。
ping <host>
示例:ping r-bp1zx****.redis.rds.aliyuncs.com
结果说明
如果Ping通(如下所示),说明网络连通,可参考步骤三继续排查。
如果Ping不通,说明网络未连通。
常见的原因和解决方法
ECS实例与Redis实例可能不在同一VPC。
请确认ECS实例与Redis实是否在同一VPC,具体步骤请参见如何确认ECS和Redis的网络环境是否相同。
如果ECS实例与Redis实例不在同一VPC,您可以:
切换ECS实例的VPC。具体步骤请参见更换ECS实例的VPC。
使用公网连接。申请公网地址的步骤,请参见申请公网连接地址。
重要专有网络与公网相比,具备更好的安全性与性能。因此,推荐您使用专有网络连接Redis实例。
ECS实例的安全组出方向的访问规则可能禁止了Redis所属的交换机IP或VPC IP。
查看ECS安全组出方向是否存在协议类型为ICMP(IPv4)的规则,该规则是否禁止了Redis所属的交换机IP或VPC IP。
如果是,请允许访问Redis所属的交换机IP或VPC IP,具体操作请参见添加安全组规则。
说明查看交换机IP或VPC IP的方法:在Redis控制台实例信息页,在交换机或专有网络右侧,单击ID。在新打开的页面中查看IPv4网段。
如果按上述的方法,仍然连接失败,请参考使用PING命令检测ECS与Tair实例之间的网络连接。
步骤三:使用telnet命令检测服务端口是否可用
操作方法
登录ECS实例,执行telnet命令。
telnet <host> <port>
示例:telnet r-bp1zx****.redis.rds.aliyuncs.com 6379
结果说明
如果返回Connected to ...
或显示telnet界面(如下所示),说明端口可用。
如果显示Connection timed out或Connect failed,表示连接失败。
常见原因和解决方法
白名单配置错误或未配置白名单。具体请参见步骤四:检查白名单。
ECS实例的安全组出方向的访问规则可能禁止了Redis的端口。
查看ECS安全组出方向是否存在协议类型为TCP的规则,该规则是否禁止了Redis的端口(默认为6379)。如果是,请允许访问Redis的端口,具体操作请参见添加安全组规则。
如果按上述的方法,仍然连接失败,请参考使用telnet命令检测Tair实例端口连通性。
步骤四:检查白名单
白名单错误或未配置白名单是连接失败的常见原因。如果出现以下两种现象,建议您排查白名单。
域名可以ping通,但telnet失败。
如果您在ECS上使用redis-cli连接Redis专有网络地址,报错
(error) ERR illegal address
或(error) ERR client ip is not in whitelist
。
常见原因
配置了错误的IP地址。
例如:ECS连接时使用了Redis专有网络的连接地址,但却误将ECS的公网IP(而不是主私网IP)添加到了Redis白名单;或者ECS连接时使用了Redis公网的连接地址,但却误将ECS的主私网IP添加到了Redis白名单。
未配置白名单。
解决方法一
通过连接诊断,诊断ECS实例的IP是否已添加到Redis白名单,并一键添加IP到白名单。具体操作请参见连接诊断。
选择ECS IP地址时,请注意连接地址是私网地址(即专有网络连接地址)还是公网地址。
解决方法二
相关文档
如果您想了解本地设备连接ECS失败的原因和排查方法,请参见Tair连接问题排查流程。
如果您想跨阿里云账号(主账号)连接Redis实例和ECS实例,请参见跨账号连接Tair与ECS实例。