#javascript #kubernetes #rabbitmq
Вопрос:
Я пытаюсь отправлять сообщения RabbitMQ со своей хост — машины на экземпляр Minikube с развернутым кластером RabbitMQ.
При запуске моего сценария отправки я получаю эту ошибку:
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
Я уверен, что у меня есть правильные учетные данные, так как я получил их непосредственно из модуля RabbitMQ, следуя официальной документации (ссылка).
Мой сценарий отправки приведен ниже:
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, что я и сделал.
Есть еще какие-нибудь идеи?
Ответ №1:
Вы можете использовать переадресацию порта службы RabbitMQ на свой локальный компьютер и использовать логин пользовательского интерфейса и проверить пароль с помощью пользовательского интерфейса, предоставленного самим RabbitMQ.
kubectl port-forward svc/rabbitmq UI-PORT:UI-PORT (must be 15672)
затем из браузера
localhost:15762
должно быть достаточно
Для получения разрешения вы можете проверить, можете ли вы войти в систему из самого контейнера. Если вход в систему из контейнера завершится неудачно, вы также можете проверить файл yaml или диаграмму управления, которую вы используете, на предмет методов входа и учетных данных. Обычный вход в систему может быть отключен.
Другая ситуация может быть связана с распределением. При развертывании RabbitMQ я стараюсь использовать диаграммы bitnami. Я могу их предложить.
Если все это не сработает, вы можете использовать другой способ. Вы можете попытаться создать другого пользователя с правами администратора для подключения к RabbitMQ, а затем продолжить его использование.
Для получения дополнительной информации вы можете публиковать журналы контейнеров/модулей, чтобы мы могли их видеть. Хороший день.
Комментарии:
1. Так что это не совсем та проблема, с которой я столкнулся, но она привела меня в правильном направлении, проверив, могу ли я войти в пользовательский интерфейс. Оказывается, когда я попросил у модуля RabbitMQ учетные данные, я неправильно расшифровал имя пользователя, поэтому он каким-то образом дал мне имя пользователя в виде обычного текста вместо правильного base64. Спасибо за помощь
2. @BradyHarper Я просто рад помочь.