ECS无法连接Redis的常见问题排查

ECS实例通过专有网络(内网)访问Redis需要满足同一地域、同一专有网络、已配置Redis白名单、正确的账号密码。本文介绍ECS连接Redis失败的常见问题的解决办法。

ECS连接问题排查流程图

image

步骤一:报错信息是否为invalid passwordWRONGPASSNOAUTH Authentication required

如果报错信息为connection timed out或者无明确的报错信息,请跳过步骤一,直接查看步骤二。

报错说明

报错信息为invalid passwordWRONGPASS 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通(如下所示),说明网络连通,可参考步骤三继续排查。

返回结果图示

Linux

Linux系统执行该命令后将会持续发送Ping请求,您可以按下键盘上的Ctrl+C键停止执行并统计结果,如下图。

image

Windows

Windows系统会在4次Ping之后显示测试结果,如下图。

image

如果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与Redis之间的网络连接

步骤三:使用telnet命令检测服务端口是否可用

操作方法

登录ECS实例,执行telnet命令。

telnet <host> <port>

示例:telnet r-bp1zx****.redis.rds.aliyuncs.com 6379

结果说明

如果返回Connected to ...或显示telnet界面(如下所示),说明端口可用。

返回结果图示

Linux

Linux系统telnet连接成功显示界面。

image

Windows

Window系统telnet连接成功显示界面。

image

如果显示Connection timed out或Connect failed,表示连接失败。

常见原因和解决方法

  • 白名单配置错误或未配置白名单。具体请参见步骤四:检查白名单

  • ECS实例的安全组出方向的访问规则可能禁止了Redis的端口。

    查看ECS安全组出方向是否存在协议类型为TCP的规则,该规则是否禁止了Redis的端口(默认为6379)。如果是,请允许访问Redis的端口,具体操作请参见添加安全组规则

如果按上述的方法,仍然连接失败,请参考使用telnet命令检测Redis端口连通性

步骤四:检查白名单

白名单错误或未配置白名单是连接失败的常见原因。如果出现以下两种现象,建议您排查白名单。

  • 域名可以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地址时,请注意连接地址是私网地址(即专有网络连接地址)还是公网地址。

image

解决方法二

  1. 确认您使用的连接地址类型是专有网络类型还是公网访问类型。具体操作请参见查看连接地址

  2. 如果连接地址是专有网络类型,请将ECS主私网IP添加到Redis白名单中。如果连接地址是公网访问类型,请将ECS公网IP添加到Redis白名单中。具体操作请参见设置IP白名单

    说明

    查询ECS实例的IP地址,请参见网络FAQ

相关文档