解决 AWS ElastiCache Redis DNS 错误 – 无法找到名称或服务

118次阅读
没有评论

问题描述

在尝试创建一个 AWS ElastiCache Redis 集群,并且希望从同一 VPC 中的实例连接到它。在最初创建集群时,可以通过 redis-cli 连接到集群。但是,如果等待了一天或两天,然后尝试再次通过 redis-cli 连接,就会出现以下错误:

$ redis-cli -h <aws-elasticache-cluster-primary-endpoint>
Could not connect to Redis at <aws-elasticache-cluster-primary-endpoint>:6379: Name or service not known
not connected>

虽然最初能够成功连接,但为什么在一天之后会出现 DNS 错误?在创建集群后,集群没有发生任何变化。如何修复这个问题?

解决方案

请注意以下操作可能因版本差异或环境变化而有所不同,确保提前备份重要数据。

解决方案1:VPC DNS 限制

出现 DNS 错误可能是由于 “VPC DNS 限制” 导致的。你可以在官方文档找到更多相关信息以及解决方法。

解决方案2:第三方 DNS 解析器问题

如果你在环境中使用了一些第三方 DNS 解析器,比如 Microsoft AD 域控制器(例如,如果环境依赖于 AD 或 LDAP),也可能会引发问题。通常情况下,像 Google 或 Cloudflare 这样的公共 DNS 服务都是可靠的选择,但是如果本地域名解析主机配置不正确,可能会导致许多问题。

复现步骤

以下是复现问题的步骤:
1. 打开 ElastiCache 仪表板,选择 Redis,然后点击创建。
2. 在创建选项中,设置以下参数:
– Cluster Engine: Redis
– Location: Amazon Cloud
– Engine version compatibility: 6.x
– Port: 6379
– Parameter group: default.redis6.x
– Node type: cache.t3.micro
– Number of replicas: 0
– Multi-AZ: false
– Subnet group: default
– Security groups: default
– Encryption at-rest: false
– Encryption in-transit: false
3. 点击创建按钮。
4. 创建后,使用以下命令验证是否能够连接到集群:
redis-cli -h <aws-elasticache-cluster-primary-endpoint>
5. 断开连接。
6. 几天后,尝试使用相同的 redis-cli 命令重新连接。你应该会看到上面部分中显示的错误信息。

附加信息

nping 测试

使用 nping 命令测试连接性,可能会出现以下错误:

$ sudo nping --tcp -p 6379 <aws-elasticache-cluster-primary-endpoint>
Failed to resolve given hostname/IP: <aws-elasticache-cluster-primary-endpoint>.
Note that you can't use '/mask' AND '1-4,7,100-' style IP ranges
Cannot find a valid target. Please make sure the specified hosts are either IP addresses in standard notation or hostnames that can be resolved with DNS

nslookup 测试

使用 nslookup 命令测试,可能会出现以下错误:

$ sudo nslookup <aws-elasticache-cluster-primary-endpoint>
Server:         75.75.75.75
Address:        75.75.75.75#53
** server can't find <aws-elasticache-cluster-primary-endpoint>: REFUSED

Reachability Analyzer 测试

根据 AWS 的连接性故障排除文档进行测试,从 EC2 实例到 ElastiCache 集群的连接性应该是可达的。在连接性测试中,应该会得到以下结果:

Reachability Status: Reachable
State: Succeeded

集群指标

以下是集群的一些指标数据:
– CPU 利用率: ~1.000%
– 引擎 CPU 利用率: ~0.283%
– 数据库内存使用百分比: ~1.093%

本地 Wireguard 配置

这是一个本地 Wireguard 配置示例,可能对你的网络配置产生影响:

[Interface]
PrivateKey = <value>
ListenPort = 21841
Address = 10.0.0.2/32
DNS = 9.9.9.9 # 75.75.75.75 75.75.76.76

[Peer]
PublicKey = <value>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <public-IP>:51820

请根据具体情况,选择合适的解决方案来修复这个 DNS 错误问题。

正文完