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

Azure自托管网关(K8s部署)连接EventHubs时遇连接拒绝错误

问题分析与排查步骤

错误详情

[Error]2024-06-14T11:28:08.719 [EventHubSendFailed], exception: System.Net.Sockets.SocketException (111): Connection refused
   at Microsoft.Azure.EventHubs.Amqp.AmqpEventHubClient.CreateConnectionAsync(TimeSpan timeout)
   at Microsoft.Azure.Amqp.FaultTolerantAmqpObject`1.OnCreateAsync(TimeSpan timeout)
   at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout)
   at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout)
   at Microsoft.Azure.EventHubs.Amqp.AmqpEventDataSender.CreateLinkAsync(TimeSpan timeout)
   at Microsoft.Azure.Amqp.FaultTolerantAmqpObject`1.OnCreateAsync(TimeSpan timeout)
   at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout)
   at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout)
   at Microsoft.Azure.EventHubs.Amqp.AmqpEventDataSender.OnSendAsync(IEnumerable`1 eventDatas, String partitionKey)
   at Microsoft.Azure.EventHubs.Amqp.AmqpEventDataSender.OnSendAsync(IEnumerable`1 eventDatas, String partitionKey)
   at Microsoft.Azure.EventHubs.EventDataSender.SendAsync(IEnumerable`1 eventDatas, String partitionKey)
   at Microsoft.Azure.EventHubs.EventHubClient.SendAsync(IEnumerable`1 eventDatas, String partitionKey)
   at Gateway.EventHub.EventHubSender.ProcessResult(Task task, Object data) in D:\a\1\s\Proxy\Gateway.EventHub\EventHubSender.cs:line 131, source: EventHubSender#xxx

已配置API策略

<policies>
    <inbound>
        <log-to-eventhub logger-id="xxx">@{ 
          return new JObject(
              new JProperty("EventTime", DateTime.UtcNow.ToString()),
              new JProperty("ServiceName", context.Deployment.ServiceName),
              new JProperty("RequestId", context.RequestId),
              new JProperty("RequestIp", context.Request.IpAddress),
              new JProperty("OperationName", context.Operation.Name)
          ).ToString();
      }</log-to-eventhub>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

排查步骤

  • 验证K8s集群到Event Hub的网络连通性
    进入自托管网关Pod内部,执行以下命令测试Event Hub的AMQP默认端口(5671)连通性:

    nc -zv <你的EventHub命名空间>.servicebus.windows.net 5671
    

    若连接失败,说明集群网络无法访问Event Hub,需检查VNet对等配置、K8s网络策略或集群出口路由。

  • 确认Event Hub连接字符串有效性
    检查自托管网关配置中日志记录器对应的连接字符串:

    • 确保包含正确的EntityPath参数(指定目标Event Hub实例名称)
    • 验证连接字符串使用的共享访问策略具备Send权限
    • 确认密钥未过期、未被轮换或禁用
  • 检查Event Hub命名空间防火墙规则
    Azure Event Hub命名空间的防火墙可能仅允许托管网关IP访问,需将K8s集群的出口IP或集群所在VNet添加到Event Hub的允许访问列表中。

  • 验证自托管网关版本兼容性
    旧版本自托管网关可能存在Event Hub SDK兼容性问题,建议升级到与Azure API Management服务匹配的最新稳定版本。

  • 排查AMQP流量拦截问题
    若集群内有代理或安全组件,需确保:

    • 允许5671端口的出站TLS流量
    • 未对AMQP协议帧进行篡改或拦截
  • 检查自托管网关代理配置
    确认自托管网关Pod的环境变量中未配置错误的代理地址,或代理已正确配置允许访问Event Hub服务域名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:15:01