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
相关产品推荐
相关产品推荐

