本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ElastiCache 最佳實務和快取策略
您可以在下方找到 Amazon 的建議最佳實務 ElastiCache。遵循這些內容可改善快取的效能和可靠性。
主題
TLS 已啟用雙堆疊 ElastiCache 叢集
ElastiCache 叢集啟用 TLS 時,叢集探索函數 (cluster slots
、 cluster shards
和 cluster nodes
代表 Redis) 或 config get cluster
Memcached 傳回主機名稱,而非 IPs。然後,會使用主機名稱來取代 IPs 連接至 ElastiCache 叢集,並執行交TLS握。這表示用戶端不會受到 IP 探索參數的影響。對於TLS已啟用的叢集,IP Discovery 參數不會影響偏好的 IP 通訊協定。相反地,使用的 IP 通訊協定將取決於用戶端在解析DNS主機名稱時偏好的 IP 通訊協定。
Java 用戶端
從同時支援 IPv4和 的 Java 環境連線時IPv6,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 通訊協定偏好設定。您可以在 /etc/gai.conf
下找到 gai.conf
檔案。若沒有指定的 gai.conf
,則應在 /usr/share/doc/glibc-common-x.xx/gai.conf
之下提供一個範例,可以複製到 /etc/gai.conf
,且預設組態應取消註解。若要更新連線到 ElastiCache 叢集IPv4時偏好的組態,請將包含叢集CIDR的範圍優先順序更新IPs為高於預設IPv6連線的優先順序。預設IPv6連線的優先順序為 40。例如,假設叢集位於具有 172.31.0.0:0/16 CIDR 的子網路中,下面的組態會導致用戶端偏好與該叢集的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進行連線。例如,假設叢集位於執行 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