本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
访问您的 ElastiCache 集群或复制组
您的亚马逊 ElastiCache 实例旨在通过亚马逊EC2实例进行访问。
如果您在 Amazon Virtual Private Cloud (AmazonVPC) 中启动 ElastiCache实例,则可以从同一个亚马逊的亚马逊EC2实例访问您的实例VPC。 ElastiCache 或者,通过使用VPC对等互连,您可以从另一个 Amazon EC2 的亚马逊访问您的 ElastiCache 实例。VPC
如果您在 EC2 Classic 中启动 ElastiCache 实例,则通过向与该EC2实例关联的 Amazon EC2 安全组授予访问您的缓存安全组的权限,允许该实例访问您的集群。默认情况下,仅启动了集群的账户能够访问集群。
授予访问您的集群或复制组的权限
您将集群启动到 EC2-VPC
如果您在亚马逊虚拟私有云 (AmazonVPC) 中启动 ElastiCache集群,则只能从在同一个亚马逊上运行的亚马逊EC2实例连接到您的集群VPC。在此情况下,您需要向集群授予网络进入。
注意
如果您正在使用 Local Zones,请确保已启用它。有关更多信息,请参阅启用 Local Zones。这样,您的VPC就会扩展到该本地区域,并且VPC您将把该子网视为任何其他可用区中的任何子网,以及相关的网关、路由表和其他安全组注意事项。将自动调整。
向集群授予从 Amazon VPC 安全组的网络入口权限
登录 AWS Management Console 并打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格中的 Network & Security 下,选择 Security Groups。
-
从安全组列表中,为您的 Amazon 选择安全组VPC。除非您创建了供 ElastiCache 使用的安全组,否则该安全组将被命名为 de fault。
-
选择 Inbound 选项卡,然后执行以下操作:
-
选择 Edit(编辑)。
-
选择 添加规则。
-
在类型列中,选择自定义TCP规则。
-
在 Port range 框中,为您的集群节点键入端口号。此端口号必须与启动集群时指定的端口号相同。Memcached 的默认端口是
11211
Valkey 和 Redis OSS 的默认端口是。6379
-
在源框中,选择任何具有端口范围 (0.0.0.0/0) 的任意位置,这样您在亚马逊中启动的任何 Amazon EC2 实例VPC都可以连接到您的节点。 ElastiCache
重要
将 ElastiCache 群集开放到 0.0.0.0/0 不会将群集暴露在 Internet 上,因为它没有公有 IP 地址,因此无法从外部访问。VPC但是,默认安全组可以应用于客户账户中的其他 Amazon EC2 实例,并且这些实例可能具有公有 IP 地址。如果这些实例碰巧在默认端口上运行某些内容,则该服务可能会意外暴露。因此,我们建议创建一个仅供使用的VPC安全组 ElastiCache。有关更多信息,请参阅自定义安全组。
-
选择保存。
-
当您在亚马逊上启动一个 A EC2 mazon 实例时VPC,该实例将能够连接到您的 ElastiCache 集群。
从外部访问 ElastiCache 资源 AWS
Amazon ElastiCache 是一项提供基于云的内存键值存储的 AWS 服务。该服务旨在仅从内部访问 AWS。但是,如果 ElastiCache 集群托管在内VPC,则可以使用网络地址转换 (NAT) 实例来提供外部访问权限。
要求
要从外部访问您的 ElastiCache 资源,必须满足以下要求 AWS:
-
集群必须位于VPC并可通过网络地址转换 (NAT) 实例进行访问。此要求不存在例外情况。
-
NAT实例必须在与集群VPC相同的环境中启动。
-
NAT实例必须在与集群分开的公有子网中启动。
-
弹性 IP 地址 (EIP) 必须与NAT实例关联。iptables 的端口转发功能用于将NAT实例上的端口转发到内的缓存节点端口。VPC
注意事项
从外部访问您的 ElastiCache 资源时,应记住以下注意事项 ElastiCache。
-
客户端连接到NAT实例的EIP和缓存端口。NAT实例上的端口转发将流量转发到相应的缓存集群节点。
-
如果添加或替换集群节点,则需要更新 iptables 规则以反映此更改。
限制
此方法应仅应用于测试和开发用途。由于以下限制,不建议将其用于生产用途:
-
该NAT实例充当客户端和多个集群之间的代理。添加代理会影响到缓存群集的性能。影响会随着您通过NAT实例访问的缓存集群的数量而增加。
-
从客户端到NAT实例的流量未加密。因此,您应避免通过NAT实例发送敏感数据。
-
该NAT实例增加了维护另一个实例的开销。
-
该NAT实例充当单点故障。有关如何在NAT上设置高可用性的信息VPC,请参阅 Amazon VPC NAT 实例的高可用性:示例
。
如何从外部访问 ElastiCache 资源 AWS
以下过程演示如何使用NAT实例连接到您的 ElastiCache 资源。
这些步骤假定以下各项:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379
接下来你需要NAT朝相反的方向前进:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.0.0.55
您还需要启用 IP 转发,该功能默认情况下处于禁用状态:
sudo sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl --system
-
您可以使用以下项访问 Memcached 集群:
-
IP 地址 – 10.0.1.230
-
默认 Memcached 端口 – 11211
-
安全组:*10\.0\.0\.55*
-
-
你正在通过以下方式访问 Valkey 或 Redis OSS 集群:
-
IP 地址 – 10.0.1.230
-
默认端口 — 6379
-
安全组 – sg-bd56b7da
-
AWS 实例 IP 地址 — sg-bd 56b7da
-
-
您的可信客户端使用 IP 地址 198.51.100.27。
-
您的NAT实例的弹性 IP 地址为 203.0.113.73。
-
您的NAT实例具有安全组 sg-c e56b7a9。
使用NAT实例连接到您的 ElastiCache 资源
-
在与您的缓存集群VPC相同但在公有子网中创建NAT实例。
默认情况下,VPC向导将启动 cache.m1.sm all 节点类型。您应该根据需求选择节点大小。您必须使用EC2NATAMI才能 ElastiCache 从外部访问 AWS。
有关创建NAT实例的信息,请参阅 AWS VPC用户指南中的NAT实例。
-
为缓存集群和NAT实例创建安全组规则。
NAT实例安全组和集群实例应具有以下规则:
-
两个入站规则
-
对于 Memcached,第一条规则是允许从受信任的客户端TCP连接到从NAT实例转发的每个缓存端口(11211-11213)。
-
对于 Valkey 和 RedisOSS,第一条规则是允许从受信任的客户端TCP连接到从NAT实例转发的每个缓存端口 (6379-6381)。
-
第二条规则是允许SSH访问受信任的客户端。
NAT实例安全组-带有 Memcached 的入站规则 类型 协议 端口范围 来源 自定义TCP规则 TCP 11211-11213 198.51.100.27/32 SSH TCP 22 198.51.100.27/32 NAT实例安全组-带有 Valkey 或 Redis 的入站规则 OSS 类型 协议 端口范围 来源 自定义TCP规则 TCP 6379-6380 198.51.100.27/32 SSH TCP 22 203.0.113.73/32 -
-
在 Memcached 中,这是一条允许TCP连接到缓存端口 (11211) 的出站规则。
NAT实例安全组-出站规则 类型 协议 端口范围 目标位置 自定义TCP规则 TCP 11211 sg-ce56b7a9(集群实例安全组) -
对于 Valkey 或 RedisOSS,这是一条允许TCP连接到缓存端口 (6379) 的出站规则。
NAT实例安全组-出站规则 类型 协议 端口范围 目标位置 自定义TCP规则 TCP 6379 sg-ce56b7a9(集群实例安全组) -
使用 Memcached,这是集群安全组的入站规则,允许从NAT实例TCP连接到缓存端口 (11211)。
集群实例安全组 – 入站规则 类型 协议 端口范围 来源 自定义TCP规则 TCP 11211 sg-bd56b7da(安全组)NAT -
使用 Valkey 或 RedisOSS,这是集群安全组的入站规则,允许从NAT实例TCP连接到缓存端口 (6379)。
集群实例安全组 – 入站规则 类型 协议 端口范围 来源 自定义TCP规则 TCP 6379 sg-bd56b7da(集群安全组)
-
-
验证规则。
-
确认受信任的客户端SSH能够访问该NAT实例。
-
确认受信任的客户端能够从NAT实例连接到集群。
-
-
内存缓存
向NAT实例添加 iptables 规则。
必须将集群中每个节点的 iptables 规则添加到NAT表中,才能将缓存端口从NAT实例转发到群集节点。示例如下所示:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211
集群中每个节点的端口号必须唯一。例如,如果处理使用端口 11211 - 11213 的三个节点的 Memcached 集群,则规则将如下所示:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11212 -j DNAT --to 10.0.1.231:11211 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11213 -j DNAT --to 10.0.1.232:11211
确认可信客户端能够连接到集群。
受信任的客户端应连接到与NAT实例EIP关联的,以及与相应群集节点相对应的集群端口。例如,的连接字符串PHP可能如下所示:
$memcached->connect( '203.0.113.73', 11211 ); $memcached->connect( '203.0.113.73', 11212 ); $memcached->connect( '203.0.113.73', 11213 );
也可以使用 telnet 客户端来验证连接。例如:
telnet 203.0.113.73 11211 telnet 203.0.113.73 11212 telnet 203.0.113.73 11213
Valkey 或 Redis OSS
向NAT实例添加 iptables 规则。
必须将集群中每个节点的 iptables 规则添加到NAT表中,才能将缓存端口从NAT实例转发到群集节点。示例如下所示:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379
集群中每个节点的端口号必须唯一。例如,如果使用端口 6379-6381 使用三节点 Redis OSS 集群,则规则将如下所示:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379
确认可信客户端能够连接到集群。
受信任的客户端应连接到与NAT实例EIP关联的,以及与相应群集节点相对应的集群端口。例如,的连接字符串PHP可能如下所示:
redis->connect( '203.0.113.73', 6379 ); redis->connect( '203.0.113.73', 6380 ); redis->connect( '203.0.113.73', 6381 );
也可以使用 telnet 客户端来验证连接。例如:
telnet 203.0.113.73 6379 telnet 203.0.113.73 6380 telnet 203.0.113.73 6381
-
保存 iptables 配置。
在您测试和验证规则之后保存规则。如果您使用基于 Redhat 的 Linux 分发(例如 Amazon Linux),请运行以下命令:
service iptables save
相关 主题
下列主题可能会有用处。