我的 EC2 在每个 AZ 中都有一个带有私有子网的 VPC。在 VPC 中,我的 ElastiCache (Redis) 实例也有私有子网。设置是这样的。
我还有安全组和 NACL 来控制对子网中资源的访问。
当我想从在其中一个 EC2 实例上运行的程序访问 ElastiCache 集群时,我必须指定集群端点 - 例如:
Primary Endpoint: CLUSTER_NAME.uepak9.ng.0001.euw1.cache.amazonaws.com:6379
Reader Endpoint: CLUSTER_NAME-ro.uepak9.ng.0001.euw1.cache.amazonaws.com:6379
我了解使用 Reader 端点可以在读取器实例之间实现负载平衡,但由于所有资源都在同一个 VPC 中(并且 ElastiCache 实例是基于 EC2 的),因此理论上可以(但不是最佳实践)访问 ElastiCache实例直接通过其私有 IP。
从我看到的文档来看,没有更详细的说明 ElastiCache 端点的工作原理。
我假设AWS 将 DNS 记录指向主要端点的网络负载均衡器(因为 Redis 使用 TCP 连接),并将记录指向读取器端点的另一个网络负载均衡器。我假设这些负载均衡器随后指向 ElastiCache 实例。但这一切都只是一组假设。
这种通过阅读器端点的连接是如何工作的?
主要/读取器终端节点的 DNS 记录是否存储在 VPC 外部的中央 AWS DNS 服务器中?
如果 VPC 包含 ElastiCache 集群,那么 VPC (at *.*.*.2
) 的 DNS 是否有直接指向私有 IP 的记录 - 以便 EC2 和 ElastiCache 之间的流量可以留在 VPC 内?
从 EC2 到 ElastiCache 的流量是否会通过公共互联网,还是始终停留在 AWS 的基础设施中?