本页面简要介绍了 Memorystore for Redis 的传输加密。
如需了解如何使用传输加密加密连接,请参阅启用传输加密。
Memorystore for Redis 仅支持 TLS 协议 1.2 版或更高版本。
简介
Memorystore for Redis 支持使用传输层安全 (TLS) 协议加密所有 Redis 流量。启用传输加密后,Redis 客户端仅通过安全端口连接进行通信。未配置 TLS 的 Redis 客户端将被屏蔽。如果您选择启用传输加密,则要负责确保您的 Redis 客户端能够使用 TLS 协议。
传输加密前提条件
如需将传输加密与 Memorystore for Redis 搭配使用,您需要具备以下条件:
- 支持 TLS 或第三方 TLS 辅助信息文件 的 Redis 客户端
- 安装在访问您的 Redis 实例的客户端机器上安装的证书授权机构
开源 Redis 6.0 之前的版本不支持原生 TLS。因此,并非所有 Redis 客户端库都支持 TLS。如果您使用的客户端不支持 TLS,我们建议您使用为客户端启用 TLS 的安全通道第三方插件。如需了解如何使用安全通道连接到 Redis 实例,请参阅使用安全通道和 telnet 安全地连接到 Redis 实例。
证书授权机构
使用传输加密的 Redis 实例具有一个或多个独一无二的证书授权机构 (CA),用于验证服务器的身份。CA 就是一个字符串,您必须在访问 Redis 实例的客户端上下载并安装该字符串。CA 的有效期为自创建之日起 10 年。为了确保服务连续性,必须在上一个 CA 过期之前,在 Redis 实例的客户端上安装新的 CA。
证书授权机构轮替
CA 的有效期为实例创建之日起 10 年。此外,在实例创建后五年将发布新的 CA。
在旧 CA 失效日期之前,旧的 CA 将继续有效。因此,您将获得五年的时间段,您只要在此时间段内下载新 CA 并将其安装到连接到 Redis 实例的客户端上即可。旧 CA 过期后,您可以将其从客户端中卸载。
有关轮替 CA 的说明,请参阅管理证书授权机构轮替。
服务器证书轮替
服务器端证书每 180 天轮替一次,轮替时会导致几秒钟的暂时性连接断开。要重新建立连接,您应该具备含有指数退避算法的重试逻辑。标准轮替不会造成标准层级实例发生故障切换。
传输加密的连接限制
在 Redis 实例上启用传输加密会限制实例可建立的客户端连接数上限。此限制取决于您的实例大小。如果您需要的连接数量超出您当前容量层级支持的连接数上限,则应考虑增加 Redis 实例的大小。
容量层级 | Redis 4.0、5.0 和 6.x 版的连接数上限1 | Redis 7.0 及更高版本的连接数上限1 |
---|---|---|
M1 (1-4GB) | 1000 | 65000 |
M2 (5-10GB) | 2500 | 65000 |
M3 (11-35GB) | 15000 | 65000 |
M4 (36-100GB) | 30000 | 65000 |
M5 (101+GB) | 65000 | 65000 |
1 这些连接限制是近似值,具体取决于每个连接发送的 Redis 命令的速率和复杂性。
监控连接
由于使用传输加密的 Redis 实例具有特定的连接数限制,因此您应该监控 redis.googleapis.com/clients/connected
指标以确保不超出连接限制。如果已超出此限制,则 Redis 实例会拒绝后续的新连接尝试。在这种情况下,我们建议您对实例进行扩容以适应所需连接数。如果您怀疑空闲连接在您的连接中占很大一部分,则可以使用 timeout
配置参数主动终止这些连接。
启用传输加密对性能的影响
传输加密功能会执行数据加密和解密,这会造成处理开销。因此,启用传输加密可能会降低性能。此外,在使用传输加密时,每个额外的连接都会产生关联的资源费用。如需确定与使用传输加密相关的延迟时间,请同时使用启用了传输加密的 Redis 实例和停用了传输加密的的 Redis 实例对应用性能进行基准化分析,以比较应用性能。
有关提升性能的指导原则
- 尽可能减少客户端连接数量。建立并重用长时间运行的连接,而不是按需创建短时间运行的连接。
- 增加 Memorystore 实例的大小(建议使用 M4 或更大的大小)。
- 增加 Memorystore 客户端主机的 CPU 资源。CPU 个数越多,客户端机器的性能就越好。如果使用 Compute Engine 虚拟机,我们建议您使用计算优化型实例。
- 减小与应用流量关联的载荷大小,因为载荷越大,所需的往返次数就越多。
传输加密对内存用量的影响
启用传输加密会为此功能预留部分 Redis 实例内存。在所有其他条件相同的情况下,启用传输加密时,系统内存使用率指标值要更高,因为此功能会占用额外的内存开销。
Redis 7.0 版性能改进
在 Memorystore for Redis 上使用 Redis 7.0 可提升传输中加密的性能。如需利用这些性能改进,不妨考虑升级实例以使用 Redis 7.0 版本。