You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function(VNet部署)无法连接已加白名单的Azure Redis缓存

问题描述

部署在VNet单子网中的Azure Function,原本与公网可访问的Azure Redis Cache通信正常,将Function的出站IP添加至Redis缓存白名单后,出现连接超时问题。

环境信息

  • Azure Function出站IP查看路径:Function App -> 属性
    Function App属性页
  • 子网信息:无安全组或自定义路由表
    子网信息

报错信息

Method: PutKeysAsync error while inserting key: key and value: akhil, Error: The message timed out in the backlog attempting to send because no connection became available (5000ms) - Last Connection Exception: It was not possible to connect to the redis server(s). ConnectTimeout, command=SET, timeout: 5000, inst: 0, qu: 0, qs: 0, aw: False, bw: CheckingForTimeout, rs: NotStarted, ws: Initializing, in: 0, last-in: 0, cur-in: 0, sync-ops: 0, async-ops: 4, serverEndpoint: test-pr-analyzer-redis-cache.redis.cache.windows.net:6380, conn-sec: n/a, aoc: 0, mc: 1/1/0, mgr: 10 of 10 available, clientName: pd1sdwk001NH9(SE.Redis-v2.8.0.27420), IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=2,Free=32765,Min=1,Max=32767), POOL: (Threads=5,QueuedItems=0,CompletedItems=4712,Timers=12), v:2.8.0.27420

排查与解决步骤

1. 验证白名单IP完整性

  • 确认Redis白名单已添加Azure Function的全部出站IP,包括属性页中列出的所有主出站IP和额外出站IP,不能仅添加部分IP。
  • 检查是否遗漏IPv6地址(若Function启用了IPv6出站)。

2. 检查VNet子网出站规则

  • 核实VNet是否关联了网络安全组(NSG),出站规则需允许访问Redis的SSL端口6380(或非SSL端口6379,若已启用)。
  • 确认Azure Function的VNet集成配置正确,确保流量确实从指定子网出站。

3. 校验Redis连接配置

  • 确认Function使用的Redis连接字符串指向SSL端口6380,Azure Redis默认强制禁用非SSL连接。
  • 检查连接字符串中的主机名、访问密钥是否无拼写错误。

4. 修复StackExchange.Redis客户端问题

  • 升级客户端至最新稳定版,旧版本2.8.0.27420存在连接池、超时处理的已知bug。
  • 调整客户端超时参数:将ConnectTimeout和SyncTimeout值提升至10000ms,适配网络延迟。
  • 优化连接池配置:确保maxconnects参数设置合理,避免连接耗尽。

5. 测试网络连通性

  • 在Function中添加测试代码,验证到Redis服务器端口的连通性(如使用PowerShell的Test-Connection或TCP端口检测)。
  • 通过Azure Monitor查看Redis的连接日志,确认Function的出站IP是否有连接被拒绝的记录。

内容的提问来源于stack exchange,提问作者akhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:49:57