OpenShift中连接Hono集群AMQP适配器遇503错误求助
问题:OpenShift上Hono集群AMQP适配器连接503错误排查
环境与背景
- 在OpenShift上运行Hono集群,使用MQTT协议网关模板创建网关时,遇到AMQP适配器连接问题
- CLI版本2.1.0,可正常连接Sandbox的AMQP适配器,但连接集群内实例时返回503 - Temporary unavailable
- 即使调用OpenShift中不属于Hono集群的主机,也会出现完全相同的错误
- 已验证集群状态:所有Pod运行正常,可创建租户和设备,HTTP适配器能正常接收遥测数据
集群服务信息
$ oc get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hono-poc-adapter-amqp ClusterIP 172.30.197.58 5672/TCP,5671/TCP 17d hono-poc-adapter-http ClusterIP 172.30.212.47 8080/TCP,8443/TCP 17d hono-poc-adapter-mqtt ClusterIP 172.30.2.192 1883/TCP,8883/TCP 17d hono-poc-kafka ClusterIP 172.30.252.145 9092/TCP 17d hono-poc-kafka-0-external NodePort 172.30.145.109 9094:32094/TCP 17d hono-poc-kafka-headless ClusterIP None 9092/TCP,9093/TCP 17d hono-poc-monogodb-server ClusterIP 172.30.53.142 27017/TCP 17d hono-poc-service-auth ClusterIP 172.30.226.82 5671/TCP,8088/TCP 17d hono-poc-service-command-router ClusterIP 172.30.93.170 5671/TCP 17d hono-poc-service-device-registry ClusterIP 172.30.217.54 5671/TCP,8080/TCP,8443/TCP 17d hono-poc-service-device-registry-ext ClusterIP 172.30.170.109 28080/TCP,28443/TCP 17d hono-poc-zookeeper ClusterIP 172.30.176.187 2181/TCP,2888/TCP,3888/TCP 17d hono-poc-zookeeper-headless ClusterIP None 2181/TCP,2888/TCP,3888/TCP 17d
Helm安装配置
platform: openshift kafka: podSecurityContext: enabled: false containerSecurityContext: enabled: false zookeeper: podSecurityContext: enabled: false containerSecurityContext: enabled: false useLoadBalancer: false deviceRegistryExample: type: "mongodb" externalAccess: enabled: true mongoDBBasedDeviceRegistry: externalAccess: enabled: true mongodb: createInstance: true persistence: enabled: false kafka: externalAccess: autoDiscovery: enabled: false service: type: "NodePort" # length of the array must match replicaCount nodePorts: - "32094" serviceAccount: create: false rbac: create: false adapters: amqp: enabled: true coap: enabled: false http: enabled: true mqtt: enabled: true lora: enabled: false
排查方向建议
路由配置验证
- 检查AMQP适配器对应的OpenShift Route配置:确认Route的
host指向正确集群域名,port映射是否对应AMQP适配器的5671(SSL)或5672(非SSL)端口 - 执行
oc describe route <amqp-route-name>查看Route状态,排查端点故障或路由规则错误
- 检查AMQP适配器对应的OpenShift Route配置:确认Route的
网络连通性测试
- 在集群内部工具Pod中测试AMQP服务连通性:执行
telnet hono-poc-adapter-amqp 5672或openssl s_client -connect hono-poc-adapter-amqp:5671,确认服务端口可达 - 外部测试时,确认Route外部域名解析正常,且网络策略未阻止外部到AMQP Route的流量
- 在集群内部工具Pod中测试AMQP服务连通性:执行
AMQP适配器日志分析
- 获取适配器Pod日志:
oc logs <amqp-adapter-pod-name>,查找连接相关错误,比如认证失败、Kafka连接异常或服务初始化故障 - 重点关注与
command-router、device-registry的连接日志,依赖服务故障可能导致适配器返回503
- 获取适配器Pod日志:
CLI连接参数校验
- 确认连接主机为Route外部域名(ClusterIP仅集群内部可达),端口匹配Route暴露的端口(通常HTTPS对应443,映射内部5671)
- 检查租户、设备认证信息及SSL证书配置是否正确
服务依赖检查
- 确认
hono-poc-service-command-router、hono-poc-service-auth服务运行正常,AMQP适配器依赖这些服务处理连接请求 - 检查Kafka集群状态:
oc exec -it <kafka-pod-name> -- kafka-topics.sh --list --bootstrap-server hono-poc-kafka:9092,确认Hono所需主题已创建
- 确认
内容的提问来源于stack exchange,提问作者Wolfgang Jagomir
相关产品推荐
相关产品推荐

