ElastiCache 最佳实践和缓存策略 - Amazon ElastiCache

ElastiCache 最佳实践和缓存策略

您可以在下面找到建议的 Amazon ElastiCache 最佳实践。遵循这些最佳实践可提高您的缓存的性能和可靠性。

启用 TLS 的双堆栈 ElastiCache 集群

为 ElastiCache 集群启用 TLS 时,集群发现函数(Redis 的 cluster slotscluster shardscluster nodesMemcached config get cluster 返回的是主机名而不是 IP。然后使用主机名代替 IP 来连接到 ElastiCache 集群并执行 TLS 握手。这意味着客户端不会受到 IP 发现参数的影响。对于启用 TLS 的集群,IP 发现参数对首选 IP 协议没有影响。相反,使用的 IP 协议将取决于客户端在解析 DNS 主机名时首选的 IP 协议。

Java 客户端

从同时支持 IPv4 和 IPv6 的 Java 环境进行连接时,为了实现向后兼容,Java 默认情况下会优先使用 IPv4 而不是 IPv6。但是,IP 协议首选项可通过 JVM 参数进行配置。要首选 IPv4,JVM 会接受 -Djava.net.preferIPv4Stack=true 并首选 IPv6 集 -Djava.net.preferIPv6Stack=true。设置 -Djava.net.preferIPv4Stack=true 意味着 JVM 将不再建立任何 IPv6 连接。对于 Valkey 或 Redis OSS,这包括与其他非 Valkey 和非 Redis OSS 应用程序的连接。

主机级别首选项

通常,如果客户端或客户端运行时系统不提供用于设置 IP 协议首选项的配置选项,则在执行 DNS 解析时,IP 协议将取决于主机的配置。默认情况下,大多数主机更喜欢 IPv6 而不是 IPv4,但可以在主机级别配置此首选项。这将影响来自该主机的所有 DNS 请求,而不仅仅是发往 ElastiCache 集群的请求。

Linux 主

对于 Linux,可以通过修改gai.conf文件来配置 IP 协议首选项。可以在下方找到该gai.conf文件/etc/gai.conf。如果未gai.conf指定,则应提供一个示例/usr/share/doc/glibc-common-x.xx/gai.conf,可以在其下复制到,/etc/gai.conf然后应取消注释默认配置。要将配置更新为在连接到 ElastiCache 集群时首选 IPv4,请更新包含集群 IP 的 CIDR 范围的优先级,使其高于默认 IPv6 连接的优先级。默认情况下,IPv6 连接的优先级为 40。例如,假设集群位于 CIDR 172.31.0.0:0/16 的子网中,则以下配置将导致客户端优先使用该集群的 IPv4 连接。

label ::1/128 0 label ::/0 1 label 2002::/16 2 label ::/96 3 label ::ffff:0:0/96 4 label fec0::/10 5 label fc00::/7 6 label 2001:0::/32 7 label ::ffff:172.31.0.0/112 8 # # This default differs from the tables given in RFC 3484 by handling # (now obsolete) site-local IPv6 addresses and Unique Local Addresses. # The reason for this difference is that these addresses are never # NATed while IPv4 site-local addresses most probably are. Given # the precedence of IPv6 over IPv4 (see below) on machines having only # site-local IPv4 and IPv6 addresses a lookup for a global address would # see the IPv6 be preferred. The result is a long delay because the # site-local IPv6 addresses cannot be used while the IPv4 address is # (at least for the foreseeable future) NATed. We also treat Teredo # tunnels special. # # precedence <mask> <value> # Add another rule to the RFC 3484 precedence table. See section 2.1 # and 10.3 in RFC 3484. The default is: # precedence ::1/128 50 precedence ::/0 40 precedence 2002::/16 30 precedence ::/96 20 precedence ::ffff:0:0/96 10 precedence ::ffff:172.31.0.0/112 100

有关更多详细信息可gai.confLinux 主页上找到

微软主机

Windows 主机的过程与此类似。对于 Windows 主机,你可以运行netsh interface ipv6 set prefix CIDR_CONTAINING_CLUSTER_IPS PRECEDENCE LABEL。这与修改 Linux 主机上的gai.conf文件效果相同。

这将更新优先级策略,使指定的 CIDR 范围优先于 IPv4 连接而不是 IPv6 连接。例如,假设群集位于子网中,执行 172.31.0.0:0/16 CIDRnetsh interface ipv6 set prefix ::ffff:172.31.0.0:0/112 100 15 将生成以下优先级表,这将导致客户端在连接到集群时首选 IPv4。

C:\Users\Administrator>netsh interface ipv6 show prefixpolicies Querying active state... Precedence Label Prefix ---------- ----- -------------------------------- 100 15 ::ffff:172.31.0.0:0/112 20 4 ::ffff:0:0/96 50 0 ::1/128 40 1 ::/0 30 2 2002::/16 5 5 2001::/32 3 13 fc00::/7 1 11 fec0::/10 1 12 3ffe::/16 1 3 ::/96