启用传输中加密时的最佳实践 - 亚马逊 ElastiCache

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

启用传输中加密时的最佳实践

启用传输中加密之前:请确保DNS记录处理得当

注意

在此过程中,我们正在更改和删除旧端点。不正确使用终端节点可能会导致 Valkey 或 Redis OSS 客户端使用旧的和已删除的终端节点,从而使其无法连接到集群。

当集群从 no TLS-p DNS referred 迁移TLS到首选时,会保留旧的每节点DNS记录,并以不同的格式生成新的每节点记录。TLS启用的集群使用的记录格式与集 non-TLS-enabled群使用的DNS记录格式不同。 ElastiCache 当集群配置为加密模式时,将保留这两个DNS记录:首选,以便应用程序和其他 Valkey 或 Redis OSS 客户端可以在它们之间切换。在 TLS-migration 过程中,DNS记录中会发生以下更改:

描述启用传输中DNS加密时记录发生的变化

对于CME集群

当集群设置为“传输加密模式:首选”时:

  • 未TLS启用集群的原始集群终端节点将保持活动状态。将集群从TLS加密模式 “无” 重新配置为 “首选” 时,不会出现停机时间。

  • 当集群设置为首选模式时,将生成新的 TLS Valkey 或 Redis OSS 终端节点。TLS这些新端点将解析IPs为与旧端点相同(非-TLS)。

  • 新的 TLS Valkey 或 Redis OSS 配置端点将在ElastiCache 控制台和对的响应中公开。describe-replication-group API

当集群设置为“传输加密模式:需要”时:

  • 未TLS启用的旧端点将被删除。TLS集群终端节点不会出现停机时间。

  • 您可以cluster-configuration-endpoint从 ElastiCache 控制台或从中检索新内容describe-replication-groupAPI。

适用于启用了自动故障转移或禁用了自动故障转移的CMD群集

当复制组设置为“传输加密模式:首选”时:

  • 未TLS启用集群的原始主终端节点和读取器终端节点将保持活动状态。

  • 当集群设置为TLSPreferred模式时,将生成新的TLS主终端节点和读取器终端节点。这个新端点将解析到与旧端点相同的 IP(非-TLS)。

  • 新的主端点和读取器端点将在 ElastiCache 控制台和对的响应中公开describe-replication-groupAPI。

当复制组设置为“传输加密模式:需要”时:

  • 旧的非TLS主端点和读取器端点将被删除。TLS集群终端节点不会出现停机时间。

  • 您可以从 ElastiCache控制台或从中检索新的主端点和读取器端点describe-replication-groupAPI。

DNS记录的建议用法

对于CME集群

  • 在应用程序的代码中使用集群配置终端节点,而不是每个节点的DNS记录。不建议直接使用每个节点的DNS名称,因为在添加或删除分片时,它们可能会发生变化。

  • 不要在应用程序中对集群配置端点进行硬编码,因为在此过程中此端点会发生变化。

  • 在应用程序中对集群配置端点进行硬编码是一种不好的做法,因为在此过程中可能会对此端点进行更改。传输中加密完成后,使用 describe-replication-groupAPI(如上所示(粗体))查询集群配置终端节点,然后使用此后获得的作为响应。DNS

适用于启用了自动故障转移的CMD群集

  • 使用主终端节点和读取器终端节点而不是应用程序代码中的每个节点的DNS名称,因为在将集群从 no-preferred迁移到-TLS preferred时,会删除旧的每节点DNS名称并生成新的名称。TLS不建议直接使用每个节点的DNS名称,因为将来可能会向集群添加副本。此外,启用自动故障转移后, ElastiCache 服务会自动更改主群集和副本的角色,建议使用主终端节点和读取器终端节点来帮助您跟踪这些更改。最后,使用读取器端点将帮助您在集群中的副本之间平均分配从副本进行的读取操作。

  • 在应用程序中对主端点和读取器端点进行硬编码是不好的做法,因为可以在TLS迁移过程中对其进行更改。完成对 TLS-preferred的迁移更改后,使用查询主终端节点和读取器终端节点终端节点, describe-replication-groupAPI然后使用此后得到的作为响应。DNS这样,您将能够以动态方式跟踪端点的变化。

适用于禁用自动故障转移的CMD群集

  • 使用主端点和读取器端点,而不是应用程序代码中的每个节点的DNS名称。禁用自动故障转移后,在启用自动故障转移时由 ElastiCache 服务自动管理的扩展、修补、故障转移和其他过程将由您完成。这使您能够更轻松地手动跟踪不同的端点。由于在将群集从 no-preferred 迁移到 TLS-preferred 时会删除旧的每个节点的DNS名称并生成新的名称,因此不要直接使用每个节点DNS的名称。TLS这是必需的,这样客户端才能在TLS迁移期间连接到集群。此外,在使用读取器终端节点时,在副本之间均匀分配读取量,并在集群中添加或删除副本时跟踪 DNS-records,您将受益匪浅。

  • 在应用程序中对集群配置终端节点进行硬编码是不好的做法,因为可以在TLS迁移过程中对其进行更改。

在传输中加密期间:注意迁移过程何时完成

传输加密模式的更改并非立即生效,而可能需要一些时间。对于大型集群而言,这种情况尤其如此。只有当集群完成向 TLS-preferred的迁移后,它才能接受和提供两者兼TCP而有之TLS。因此,在传输加密完成之前,您不应创建尝试与集群建立TLS连接的客户端。

有几种方法可以在传输中加密成功完成或失败时获得通知:(未显示在上面的代码示例中):

  • 使用该SNS服务在加密完成时收到通知

  • 使用describe-eventsAPI将在加密完成时发出一个事件

  • 在 ElastiCache 控制台中看到一条提示加密已完成的消息

您还可以在应用程序中实现逻辑以了解加密是否已完成。在上面的示例中,我们看到了几种确保集群完成迁移的方法:

  • 等到迁移过程开始(集群状态更改为“正在修改”),然后等到修改完成(集群状态变回为“可用”)

  • 通过查询,断言集群已transit_encryption_enabled设置为 True。describe-replication-group API

启用传输中加密后:确保正确配置了您使用的客户端

当集群处于TLS首选模式时,您的应用程序应打开TLS与集群的连接并仅使用这些连接。这样,在启用传输中加密时,应用程序就不会出现停机。你可以使用该部分下的 info 命令确保与 Valkey 或 Redis OSS 引擎没有更清晰的TCPSSL连接。

# SSL ssl_enabled:yes ssl_current_certificate_not_before_date:Mar 20 23:27:07 2017 GMT ssl_current_certificate_not_after_date:Feb 24 23:27:07 2117 GMT ssl_current_certificate_serial:D8C7DEA91E684163 tls_mode_connected_tcp_clients:0 (should be zero) tls_mode_connected_tls_clients:100