ElastiCache 最佳實務和快取策略 - Amazon ElastiCache

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ElastiCache 最佳實務和快取策略

下面提供 Amazon ElastiCache 的建議最佳實務。遵循這些內容可改善快取的效能和可靠性。

啟用 TLS 的雙堆疊 ElastiCache 叢集

當 ElastiCache 叢集啟用 TLS 時cluster shards,叢集探索函數 (cluster slots、 和 cluster nodes Redis)config get cluster Memcached 傳回主機名稱,而非 IPs。接著會使用主機名稱而非 IP 來連線 ElastiCache 叢集,並執行 TLS 交握。這表示用戶端不會受到 IP 探索參數的影響。針對啟用 TLS 的叢集,IP 探索參數對偏好的 IP 通訊協定沒有影響。反之,用戶端在解析 DNS 主機名稱時,偏好使用的 IP 通訊協定會決定所用的 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 叢集的 DNS 要求。

Linux 主機

針對 Linux,可以透過修改 gai.conf 檔案,設定 IP 通訊協定偏好設定。您可以在 /etc/gai.conf 下找到 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.conf 的相關資訊,請前往 Linux 主頁

Windows 主機

Windows 主機的程序十分類似。針對 Windows 主機,您可以執行 netsh interface ipv6 set prefix CIDR_CONTAINING_CLUSTER_IPS PRECEDENCE LABEL。此操作與在 Linux 主機上修改 gai.conf 檔案的效果相同。

這會更新偏好設定政策,使其在指定的 CIDR 範圍內偏好 IPv4 連線而非 IPv6 連線。例如,若叢集位於具執行 netsh interface ipv6 set prefix ::ffff:172.31.0.0:0/112 100 15 的 172.31.0.0:0/16 CIDR 子網路中,則會產生下列優先順序表格,導致用戶端在連線至叢集時偏好 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