1

我的 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 的基础设施中?

4

1 回答 1

2

AWS 技术如何在幕后工作的内部工作原理通常不会被披露,但是是的,在许多节点之间会有一些分布。

您可以在 VPC 外部解析 ElastiCache 主机,您可以通过在 VPC 外部运行 DIG 命令来重现此问题。

这些主机将始终解析为 VPC 内的私有 IP 地址,因此永远不会有任何公共连接。事实上,每个节点都会在您的 VPC 中启动一个 ENI。

将 ElastiCache 集群打开到 0.0.0.0/0 不会将集群公开到 Internet,因为它没有公共 IP 地址,因此无法从 VPC 外部访问。

除了使用 VPN 之外,没有与节点通信的直接方式。

访问您的集群文档中提供了更多信息。

于 2021-02-04T14:58:38.900 回答