AWS Privatelink跨账号访问ElastiCache Redis重定向超时问题求助
以下是几种可行的解决办法:
配置ElastiCache集群返回主机名而非私有IP
修改账号A中ElastiCache Redis集群的参数配置,启用cluster-announce-hostname参数,并设置cluster-announce-ip为节点的私有DNS名称(而非私有IP)。这样Redis在重定向时会返回节点的DNS名称,而非私有IP。同时确保账号B的VPC能够通过Privatelink终端节点解析这些DNS名称(可通过在账号B的VPC中配置Route 53私有托管区,将账号A的ElastiCache节点DNS映射到Privatelink终端节点的地址)。通过NLB代理所有ElastiCache节点并统一出口地址
将账号A中所有ElastiCache Redis节点添加到NLB的目标组中,为每个节点分配独立端口或使用不同目标组。然后配置ElastiCache集群的cluster-announce-ip为NLB的DNS名称,cluster-announce-port为对应节点的转发端口。这样账号B收到的重定向地址是NLB的DNS,该地址已通过Privatelink暴露,账号B可正常访问。部署Redis代理中转请求
在账号A的VPC内部署Redis代理(如Redis Cluster Proxy、Twemproxy),将代理的前端地址通过Privatelink暴露给账号B。账号B直接连接代理的DNS,由代理处理Redis集群内部的重定向和节点通信,账号B无需感知后端ElastiCache节点的私有IP,所有请求都通过代理中转。在账号B的VPC中配置IP映射解析
在账号B的VPC内创建自定义DNS解析规则(通过Route 53私有托管区或本地DNS服务器),将账号A的ElastiCache节点私有IP映射到Privatelink终端节点的IP地址。这样当Redis返回私有IP时,账号B的DNS会将其解析为可访问的终端节点IP,从而正常建立连接。
内容的提问来源于stack exchange,提问作者Arthos

