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

使用Pika连接AKS部署的RabbitMQ时遭遇AMQPConnectionError

RabbitMQ AKS部署下Pika连接AMQPConnectionError排查与解决

场景说明

RabbitMQ部署在AKS集群中,通过启用TLS的NGINX可正常访问RabbitMQ UI(浏览器输入用户名密码能查看内容),但使用Python Pika库连接时触发AMQPConnectionError错误。

相关代码与网络信息

Python连接代码

import pika
import traceback

credentials = pika.PlainCredentials('test', 'test_123')
parameters = pika.ConnectionParameters("rmqtst.xy.zy.o",
                                       5672,
                                       '/',
                                       credentials)
try:
    # 建立连接
    connection = pika.BlockingConnection(parameters)
    print("Connection established successfully.")
    
    # 关闭连接
    connection.close()
except Exception as e:
    print("Failed to establish connection.")
    traceback.print_exc()

DNS解析结果

# DNS服务器解析到IP地址1.3.1.1
 ~ % nslookup rmqtst.xy.zy.o
Server:     1.2.2.3
Address:    1.2.2.3#53

Non-authoritative answer:
Name:   rmqtst.xy.zy.o
Address: 1.3.1.1

RabbitMQ服务端口配置

RabbitMQ服务AMQP端口配置

排查思路与解决方案

1. 端口暴露与转发检查

从服务端口图可见,RabbitMQ的5672端口为ClusterIP类型,仅集群内部可访问。外部通过域名访问需确认:

  • NGINX Ingress是否配置了AMQP端口转发规则,将外部端口(如TLS加密的5671端口)映射到RabbitMQ的对应端口;
  • 用nc -zv rmqtst.xy.zy.o 5672测试端口可达性,若不通则说明外部端口未开放,需调整AKS Service或Ingress配置,暴露AMQP服务端口。

2. TLS连接配置修正

RabbitMQ UI通过TLS的NGINX访问,但当前Pika代码未配置SSL参数:

  • 若AMQP服务启用了TLS加密,需修改连接参数添加SSL配置,示例代码如下(需提前导入ssl模块):
import pika
import ssl
import traceback

credentials = pika.PlainCredentials('test', 'test_123')
parameters = pika.ConnectionParameters(
    "rmqtst.xy.zy.o",
    5671,  # 替换为NGINX转发的TLS端口
    '/',
    credentials,
    ssl=True,
    ssl_options={
        'ssl_version': ssl.PROTOCOL_TLSv1_2,
        'cert_reqs': ssl.CERT_NONE  # 自签名证书场景下使用,生产环境建议开启证书验证
    }
)
try:
    connection = pika.BlockingConnection(parameters)
    print("Connection established successfully.")
    connection.close()
except Exception as e:
    print("Failed to establish connection.")
    traceback.print_exc()

3. RabbitMQ权限与配置检查

  • 登录RabbitMQ UI,进入Admin -> Users,确认test用户拥有/虚拟主机的读写权限,且不在loopback_users列表中(默认仅允许guest用户本地连接,需修改RabbitMQ配置将loopback_users设置为none或添加test用户到允许列表);
  • 查看AKS中RabbitMQ Pod的日志,搜索连接失败相关记录,定位是否存在认证失败、IP白名单限制等问题。

4. 网络防火墙检查

确认本地网络与AKS集群所在网络之间的防火墙未拦截5672/5671端口的流量。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:52:55