【问题标题】:RabbitMQ: Handshake Terminated by server (ACCESS-REFUSED)RabbitMQ:握手被服务器终止(ACCESS-REFUSED)
【发布时间】:2021-03-15 17:21:50
【问题描述】:

我正在尝试将 RabbitMQ 消息从我的主机发送到部署了 RabbitMQ 集群的 Minikube 实例。

在运行我的发送脚本时,我遇到了这个错误:

Handshake terminated by server: 403 (ACCESS-REFUSED) with message "ACCESS_REFUSED - Login was refused 
using authentication mechanism PLAIN. For details see the broker logfile.

在代理日志文件中,我可以看到这一行:

Error on AMQP connection <0.13226.0> (172.17.0.1:40157 -> 172.17.0.8:5672, state: starting):
PLAIN login refused: user 'rabbitmq-cluster-default-user' - invalid credentials

我确信我拥有正确的凭据,因为我是按照官方文档 (link) 直接从 RabbitMQ pod 获取的。

我的发送脚本如下:

const amqp = require('amqplib/callback_api');

const cluster = "amqp://rabbitmq-cluster-default-user:dJhLl2aVF78Gn07g2yGoRuwjXSc6tT11@192.168.49.2:30861";

amqp.connect(cluster, function(error0, connection) 
{
    if (error0)
    {
        throw error0;
    }

    connection.createChannel(function(error1, channel) 
    {
        if (error1)
        {
            throw error1;
        }

        const queue = "files";
        var msg = {
            name: "Hello World"
        };

        var msgJson = JSON.stringify(msg);

        channel.assertQueue(queue, {
            durable: false
        });

        channel.sendToQueue(queue, Buffer.from(msgJson));
    });
});

我知道代码有效,因为我为我的本地主机设置运行完全相同的脚本并且它有效。我唯一更改的是 URL(用于 Minikube RabbitMQ 服务)。

我看过一些其他包含类似问题的帖子,但大多数解决方案都是关于在 URI 中包含正确的凭据,我已经这样做了。

还有其他想法吗?

【问题讨论】:

    标签: javascript kubernetes rabbitmq


    【解决方案1】:

    您可以使用端口将rabbitMQ服务转发到您的本地机器并使用UI登录并使用RabbitMQ本身提供的UI检查密码。

    kubectl port-forward svc/rabbitmq UI-PORT:UI-PORT (must be 15672)
    

    然后从浏览器

    localhost:15762  
    

    应该够了

    为了获得许可,您可以检查是否可以从容器本身登录。如果从容器登录失败,您还可以检查 yaml 文件或您用于登录方法和凭据的 helm 图表。普通登录可能会被禁用。

    另一种情况可能与分发有关。在部署 RabbitMQ 时,我尝试使用 bitnami 图表。我可以推荐他们。

    如果所有这些都失败了,您可以使用另一种方法。您可以尝试创建另一个具有管理员权限的用户来连接到 RabbitMQ,然后继续使用它。

    有关更多信息,您可以发布容器/pod 日志供我们查看。 美好的一天。

    【讨论】:

    • 所以这并不是我遇到的问题,而是通过检查我是否可以登录 UI 引导我朝着正确的方向前进。结果当我向 RabbitMQ pod 询问凭据时,我没有正确解码用户名,所以它以某种方式给了我一个纯文本用户名,而不是正确的 base64 用户名。为帮助干杯
    • @BradyHarper 我很乐意提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多