无法解析AWS ElastiCache Redis集群端点的排查求助
调试与修复方案
调试步骤
- 确认ElastiCache端点正确性:执行
aws elasticache describe-cache-clusters --cluster-id <你的集群ID> --show-cache-node-info,核对输出中的CacheNodes[0].Endpoint.Address(单节点Redis)或ConfigurationEndpoint.Address(集群模式)是否与代码中使用的一致。 - 测试VPC内其他资源的解析能力:在同一VPC的EC2实例中执行
nslookup <Redis端点>,如果EC2也无法解析,说明问题出在VPC或ElastiCache的DNS配置;如果EC2能解析,则聚焦Fargate任务配置。 - 检查Fargate任务的DNS配置:确认Fargate任务的
enable_dns_hostnames和enable_dns_support均为true(默认启用),同时检查任务所在子网关联的DHCP选项集是否包含AmazonProvidedDNS(VPC默认配置)。 - 验证Redis子网的路由表:查看Redis子网的路由表,确认存在指向VPC内部的本地路由(如对应VPC的CIDR段),该路由是VPC内部DNS解析的基础。
修复方案
- 修正Redis子网的路由配置:ElastiCache节点无需访问公网,因此Redis子网的路由表不需要
0.0.0.0/0指向NAT网关的路由。移除该路由,保留VPC本地路由即可,避免DNS解析请求被错误转发到公网DNS。 - 确保使用正确的Terraform端点输出:单节点Redis应使用
aws_elasticache_cluster.redis_service.cache_nodes[0].address作为连接地址,集群模式则使用aws_elasticache_cluster.redis_service.configuration_endpoint_address,避免代码中错误引用未生效的端点。 - 检查VPC DHCP选项集:进入VPC控制台的DHCP选项集页面,确认
domain-name-servers设置为AmazonProvidedDNS或VPC的DNS服务器地址(VPC CIDR段的第二个IP,如VPC为10.0.0.0/16则为10.0.0.2),自定义DHCP选项集时必须包含此项。 - 确认Fargate与Redis的子网连通性:Fargate任务所在子网和Redis子网必须属于同一VPC,且Fargate任务的安全组需允许出站访问Redis的6379端口(即使Redis安全组已放开0.0.0.0,也要确保Fargate侧无限制)。
内容的提问来源于stack exchange,提问作者meta
相关产品推荐
相关产品推荐

