Nova-cloud-controller не может подключиться к rabbitmq – amqp.exceptions.AccessRefused

Вопрос или проблема

Я использую:

  • Канал: Виктория
  • ОС: focal

Недавно в моем кластере произошло отключение электричества. Затем мне пришлось заново развернуть juju приложения nova-compute, keystone, neutron-api, vault, nova-cloud-controller…

Теперь он застрял на nova-cloud-controller. Сначала возникла ошибка из-за отсутствия файла db-client.ca (хотя в nova.conf не была указана ssl конфигурация). Затем мне пришлось вручную создать db-client.ca. Похоже, миграции прошли успешно, потом я протестировал некоторые функции, но не смог создать снимок, и создание нового экземпляра застряло на этапе Планирования.

На хосте nova-cloud-controller я получил следующий журнал ошибок:

2025-02-17 07:57:26.960 1516 INFO nova.compute.rpcapi
[req-b9ed4975-6d8f-44d8-87bc-863055657831 - - - - -] Автоматически
выбрана версия compute RPC 5.12 из минимальной версии сервиса 53
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server
[req-b9ed4975-6d8f-44d8-87bc-863055657831 - - - - -] 
Исключение при
обработке сообщения: amqp.exceptions.AccessRefused: (0, 0): (403)
ACCESS_REFUSED - Вход был отвергнут с использованием механизма аутентификации
AMQPLAIN. Для подробностей см. журнал брокера. 
2025-02-17 07:57:26.976
1516 ERROR oslo_messaging.rpc.server Traceback (most recent call
last): 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server  
File "/usr/lib/python3/dist-packages/oslo_messaging/rpc/server.py",
line 165, in _process_incoming 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server     
res = self.dispatcher.dispatch(message)
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/rpc/dispatcher.py",
line 309, in dispatch 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return self._do_dispatch(endpoint, method, ctxt, args) 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/rpc/dispatcher.py",
line 229, in _do_dispatch 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
result = func(ctxt, **new_args)
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/nova/conductor/manager.py", line 1686,
in schedule_and_build_instances 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server    
self.compute_rpcapi.build_and_run_instance( 
2025-02-17 07:57:26.976
1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/nova/compute/rpcapi.py", line 1460, in
build_and_run_instance 
2025-02-17 07:57:26.9762025- 1516 ERROR
oslo_messaging.rpc.server     
cctxt.cast(ctxt, 'build_and_run_instance', **kwargs) 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/rpc/client.py", line
150, in cast 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     self.transport._send(self.target,
msg_ctxt, msg, 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/oslo_messaging/transport.py", line
123, in _send 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return self._driver.send(target, ctxt, message, 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server 
File "/usr/lib/python3/dist-packages/oslo_messaging/_drivers/amqpdriver.py",
line 680, in send 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return self._send(target, ctxt, message,
wait_for_reply, timeout, 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/oslo_messaging/_drivers/amqpdriver.py",
line 644, in _send 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server with self._get_connection(rpc_common.PURPOSE_SEND) as conn: 
2025-02-17
07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/_drivers/amqpdriver.py",
line 597, in _get_connection 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return rpc_common.ConnectionContext(self._connection_pool, 
2025-02-17
07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/_drivers/common.py",
line 423, in __init__ 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     self.connection = connection_pool.get()
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/oslo_messaging/_drivers/pool.py", line
109, in get 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return self.create() 
2025-02-17
07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/_drivers/pool.py", line
146, in create 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return self.connection_cls(self.conf, self.url, purpose) 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/_drivers/impl_rabbit.py",
line 625, in __init__ 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
self.ensure_connection() 
2025-02-17
07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/oslo_messaging/_drivers/impl_rabbit.py",
line 742, in ensure_connection 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server    
self.connection.ensure_connection(errback=on_error) 
2025-02-17
07:57:26.976 1516 ERROR oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/kombu/connection.py", line 389, in
ensure_connection 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
self._ensure_connection(*args, **kwargs)
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/kombu/connection.py", line 441, in
_ensure_connection 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server     
return retry_over_time( 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/kombu/utils/functional.py", line 344,
in retry_over_time 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return fun(*args, **kwargs) 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/kombu/connection.py", line 874, in
_connection_factory 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server     
self._connection = self._establish_connection() 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/kombu/connection.py", line 809, in
_establish_connection 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server     
conn = self.transport.establish_connection() 
2025-02-17 07:57:26.976 1516
ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/kombu/transport/pyamqp.py", line 130,
in establish_connection 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     conn.connect() 
2025-02-17 07:57:26.976
1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/amqp/connection.py", line 320, in
connect 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server  
self.drain_events(timeout=self.connect_timeout) 
2025-02-17
07:57:26.976 1516 ERROR oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/amqp/connection.py", line 508, in
drain_events 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server while not self.blocking_read(timeout):
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/amqp/connection.py", line 514, in
blocking_read 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server return self.on_inbound_frame(frame)
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server   File
"/usr/lib/python3/dist-packages/amqp/method_framing.py", line 55, in
on_frame 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server 
callback(channel, method_sig, buf, None) 
2025-02-17 07:57:26.976 1516
ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/amqp/connection.py", line 520, in
on_inbound_method 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server     
return self.channels[channel_id].dispatch_method( 
2025-02-17 07:57:26.976
1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/amqp/abstract_channel.py", line 145,
in dispatch_method 
2025-02-17 07:57:26.976 1516 ERROR
oslo_messaging.rpc.server listener(*args) 
2025-02-17 07:57:26.976
1516 ERROR oslo_messaging.rpc.server   
File "/usr/lib/python3/dist-packages/amqp/connection.py", line 650, in
_on_close 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server raise error_for_code(reply_code, reply_text, 
2025-02-17 07:57:26.976
1516 ERROR oslo_messaging.rpc.server amqp.exceptions.AccessRefused: (0, 0): (403) 
ACCESS_REFUSED - Вход был отвергнут с использованием механизма аутентификации 
AMQPLAIN. Для подробностей см. журнал брокера. 
2025-02-17 07:57:26.976 1516 ERROR oslo_messaging.rpc.server

В rabbitmq нет указаний на ошибки подключения.

juju status: https://launchpadlibrarian.net/777173611/juju-debug-log.txt

журнал агента juju: https://launchpadlibrarian.net/777173886/machine-0-lxd-104.log

nova-api-wsgi.log: https://launchpadlibrarian.net/777173920/nova-api-wsgi.log

nova-conductor.log: https://launchpadlibrarian.net/777173960/nova-conductor.log

nova-scheduler.log: https://launchpadlibrarian.net/777173993/nova-scheduler.log

nova-manager.log: https://launchpadlibrarian.net/777174167/nova-manage.log

nova.conf: https://launchpadlibrarian.net/777176686/nova.conf

juju show unit nova-cloud-controller: https://launchpadlibrarian.net/777174454/juju-show-unit-nova-cloud-controller.txt

.

Ответ или решение

Ваша проблема с ошибкой "amqp.exceptions.AccessRefused" в nova-cloud-controller при попытке подключения к RabbitMQ является довольно распространенной в инфраструктурах, построенных на OpenStack. Эта ошибка указывает на отказ в доступе, который может возникнуть из-за неправильных настроек аутентификации между сервисами OpenStack и сервером RabbitMQ. Давайте рассмотрим, как можно диагностировать и исправить эту проблему.

Теория

Протокол AMQP, который использует RabbitMQ, требует корректной аутентификации для установления соединения с клиентами. Ошибка ACCESS_REFUSED (403) обычно возникает при следующих условиях:

  1. Некорректные учетные данные: Имя пользователя или пароль для подключения к RabbitMQ неверные.
  2. Неправильно настроенный механизм аутентификации: Указан неправильный механизм аутентификации (например, AMQPLAIN вместо PLAIN).
  3. Проблемы с правами доступа: У пользователя отсутствуют необходимые привилегии на запрашиваемые ресурсы или обменники.
  4. Сетевые проблемы: Возможны блокировки или фильтрация сетевого трафика между RabbitMQ и OpenStack сервисами.

Пример

Рассмотрим ситуацию из предоставленных вами данных. Ваш класт урок OpenStack потерял питание, и после этого пришлось заново развернуть приложения Juju, включая nova-cloud-controller. Версия OpenStack — Victoria, операционная система — Ubuntu Focal (20.04). Судя по логам, возникает ошибка доступа при попытке использования аутентификационного механизма AMQPLAIN.

Применение

  1. Проверка конфигурации: Убедитесь, что в конфигурационном файле nova.conf и других соответствующих конфигурационных файлах, указаны правильные учетные данные для подключения к RabbitMQ. Это может быть в разделе [oslo_messaging_rabbit], где должны быть указаны rabbit_userid, rabbit_password, и возможно rabbit_host.

  2. Проверка механизма аутентификации: Убедитесь, что механизм аутентификации AMQPLAIN поддерживается и настроен корректно. Также стоит проверить, не заблокирован ли механизм PLAIN (часто используется).

  3. Лог-файлы RabbitMQ: Поскольку логов RabbitMQ вы не предоставили, стоит их проверить. Обычно они находятся по пути /var/log/rabbitmq/. Ошибки или предупреждения в этих логах могут дать более точное понимание, почему именно происходит отказ в доступе.

  4. Права доступа: Проверьте, что пользователь, указанный в nova.conf, имеет все необходимые права доступа. Это можно сделать с помощью команды RabbitMQ для управления правами:

    rabbitmqctl list_permissions -p <vhost>

    Убедитесь, что пользователь имеет необходимые разрешения на читывание, запись и администрирование для нужного виртуального хоста.

  5. Обновление конфигурации после отключения питания: Отключение питания могло привести к порче файлов конфигурации или данных. Перепроверьте, что все конфигурационные файлы сохранены и имеют корректные параметры.

  6. Juju и OpenStack службы: Перезапустите службы, чтобы удостовериться, что все изменения в конфигурации применены. Для перезапуска используйте:

    juju run --unit nova-cloud-controller/0 "sudo systemctl restart nova-compute.service"
    juju run --unit rabbitmq-server/0 "sudo systemctl restart rabbitmq-server.service"

    При необходимости перезапустите другие модули OpenStack, такие как Keystone и Neutron.

  7. Обновление и исправление настроек SSL: Если SSL был ранее настроен, его конфигурация может быть утеряна или некорректна после сбоя питания. Проверьте и пересоздайте необходимые SSL сертификаты и ключи.

  8. Сетевые проверки: Убедитесь, что все необходимые порты между контроллерами OpenStack и RabbitMQ открыты. Для диагностики можно использовать telnet или nc для проверки подключения к нужным портам.

Эти шаги должны помочь выявить и устранить проблемы, возникающие при подключении nova-cloud-controller к RabbitMQ. Если проблема не решится, рекомендуется обратиться за дополнительной поддержкой в комьюнити OpenStack, предоставив больше информации о специфике настройки и используемых конфигурациях.

Оцените материал
Добавить комментарий

Капча загружается...