连接故障排除

本文提供将客户端应用程序连接到 Azure Cache for Redis 的故障排除帮助。 连接问题分为两种类型:间歇性连接问题和持续连接问题。

间歇性连接问题

客户端应用程序可能由于修补或连接数量激增等事件而出现间歇性连接问题。

服务器维护

有时,缓存会进行计划内或计划外服务器维护。 在维护期间,应用程序可能会受到负面影响。 可以通过在门户中检查 Errors (Type: Failover) 指标进行验证。 若要尽量减少故障转移的影响,请参阅连接复原

连接的客户端数

检查 Connected Clients 指标的最大聚合是否接近或高于特定缓存大小允许的最大连接数。 有关调整每个客户端连接大小的信息,请参阅 Azure Cache for Redis 性能

Kubernetes 托管应用程序

  • 如果客户端应用程序托管在 Kubernetes 上,请检查运行客户端应用程序或群集节点的 Pod 是否处于内存/CPU/网络压力之下。 运行客户端应用程序的 Pod 可能会受同一节点上运行的其他 Pod 的影响,并限制 Redis 连接或 IO 操作。
  • 如果使用 Istio 或其他任何服务网格,请检查服务网格代理是否保留端口 13000-13019 或 15000-15019。 客户端使用这些端口与群集 Azure Cache For Redis 节点进行通信,并可能导致这些端口出现连接问题。

基于 Linux 的客户端应用程

在 Linux 中使用乐观 TCP 设置可能会导致客户端应用程序遇到连接问题。 请参阅连接中断持续 15 分钟

持续连接

如果应用程序无法连接到 Azure Cache for Redis,则缓存上的某些配置可能未正确设置。 以下部分提供如何确保正确配置缓存的建议。

使用 redis-cli 测试连接

使用 redis-cli 测试连接。 有关 CLI 的详细信息,请参阅将 Redis 命令行工具与 Azure Cache for Redis 配合使用

使用 PSPING 测试连接

如果 redis-cli 无法连接,则可在 PowerShell 中使用 PSPING 测试连接。

psping -q <cache DNS endpoint>:<Port Number>

可以确认发送的数据包数等于收到的数据包数。 确认可确保连接性不会下降。

虚拟网络配置

检查虚拟网络配置的步骤:

  1. 在 Azure 门户“资源”菜单上“设置”下的“虚拟网络”部分,检查是否为缓存分配了虚拟网络。
  2. 确保客户端主机与 Azure Cache For Redis 位于同一虚拟网络中。
  3. 在客户端应用程序与 Azure Cache For Redis 位于不同的 VNet 中时,这两个 VNet 必须在同一 Azure 区域启用 VNet 对等互连。
  4. 验证入站出站规则是否满足要求。
  5. 有关详细信息,请参阅配置虚拟网络 - 高级版 Azure Cache for Redis 实例

专用终结点配置

检查专用终结点配置的步骤:

  1. 创建专用终结点时,Public Network Access 标志默认禁用。 确保已正确设置 Public Network Access。 当 Azure 门户中有缓存时,在左侧“资源”菜单中的“专用终结点”下查看此设置。
  2. 如果尝试从缓存的虚拟网络外部连接到缓存专用终结点,需要启用 Public Network Access
  3. 如果已删除专用终结点,请确保启用公用网络访问。
  4. 验证专用终结点配置是否正确。 有关详细信息,请参阅使用新的 Azure Cache for Redis 实例创建专用终结点
  5. 验证应用程序是否在端口 6380 上连接到 <cachename>.redis.cache.chinacloudapi.cn。 建议避免在配置或连接字符串中使用 <cachename>.privatelink.redis.cache.chinacloudapi.cn
  6. 从链接到专用终结点的 VNet 中运行类似 nslookup <hostname> 的命令,以验证该命令是否解析为缓存的专用 IP 地址。

防火墙规则

如果为 Azure Cache for Redis 配置了防火墙,请确保将客户端 IP 地址添加到防火墙规则。 可在 Azure 门户“资源”菜单中的“设置”下查看“防火墙”。

第三方防火墙或外部代理

在网络中使用第三方防火墙或代理时,请检查是否允许 Azure Cache for Redis 的终结点 *.redis.cache.chinacloudapi.cn,以及端口 63796380。 使用群集缓存或异地复制时,可能需要允许更多端口。

公共 IP 地址变更

如果你已经将任何网络或安全资源配置为使用缓存的公共 IP 地址,请检查确认缓存的公共 IP 地址是否已更改。 有关详细信息,请参阅依赖缓存的主机名而不是公共 IP 地址

使用 VNet 注入和高级缓存进行异地复制

虽然可以将 VNet 注入用于高级缓存,但建议使用 Azure 专用链接。

有关详细信息,请参阅:

支持对 VNet 中的缓存进行异地复制,但需要注意以下问题:

  • 支持在同一 VNet 中的缓存之间进行异地复制。
  • 也支持在不同 VNet 中的缓存之间进行异地复制。
    • 如果 VNet 位于同一区域,则可以使用 VNet 对等互连VPN 网关 VNet 到 VNet 连接来连接 VNet。
    • 如果 VNet 位于不同的区域,则不支持使用 VNet 对等互连进行异地复制。 由于基本内部负载均衡器的限制,VNet 1(区域 1)中的客户端 VM 无法使用其 DNS 名称访问 VNet 2(区域 2)中的缓存。 有关 VNet 对等互连约束的详细信息,请参阅虚拟网络 - 对等互连 - 要求和约束。 建议使用 VPN 网关 VNet 到 VNet 连接。

若要有效地配置 VNet 并避免异地复制问题,必须正确配置入站和出站端口。 有关避免最常见 VNet 配置错误问题的详细信息,请参阅异地复制对等端口要求

以下文章提供有关连接性和复原能力的详细信息: