2017-01-24 18 views
0

Я пытаюсь настроить плагин RabbitMQ - MQTT. Но я не могу перезапустить службу после включения плагина.Плагин RabbitMQ MQTT не запускается

Я последовал за руководство, которое я нашел на документы: https://www.rabbitmq.com/mqtt.html

Резюмируя свои действия:

Я включил плагин с помощью команды

sudo rabbitmq-plugins enable rabbitmq_mqtt 

Это ответ

[[email protected] rabbitmq]# rabbitmq-plugins enable rabbitmq_mqtt 
The following plugins have been enabled: 
    rabbitmq_mqtt 

Applying plugin configuration to [email protected] failed. 
Error: {could_not_start,rabbitmq_mqtt, 
     {{shutdown, 
      {failed_to_start_child,'rabbit_mqtt_listener_sup_:::1883', 
      {shutdown, 
      {failed_to_start_child, 
      {ranch_listener_sup,{acceptor,{0,0,0,0,0,0,0,0},1883}}, 
      {shutdown, 
       {failed_to_start_child,ranch_acceptors_sup, 
       {listen_error,{acceptor,{0,0,0,0,0,0,0,0},1883},eacces}}}}}}}, 
     {rabbit_mqtt,start,[normal,[]]}}} 

Итак, я напечатал список подключаемых модулей

[[email protected] rabbitmq]# rabbitmq-plugins list 
Configured: E = explicitly enabled; e = implicitly enabled 
| Status: [failed to contact [email protected] - status not shown] 
|/ 
[e ] amqp_client      3.6.1 
[ ] cowboy       1.0.3 
[ ] cowlib       1.0.1 
[e ] mochiweb       2.13.0 
[ ] rabbitmq_amqp1_0     3.6.1 
[ ] rabbitmq_auth_backend_ldap  3.6.1 
[ ] rabbitmq_auth_mechanism_ssl  3.6.1 
[ ] rabbitmq_consistent_hash_exchange 3.6.1 
[ ] rabbitmq_event_exchange   3.6.1 
[ ] rabbitmq_federation    3.6.1 
[ ] rabbitmq_federation_management 3.6.1 
[E ] rabbitmq_management    3.6.1 
[e ] rabbitmq_management_agent   3.6.1 
[ ] rabbitmq_management_visualiser 3.6.1 
[E ] rabbitmq_mqtt      3.6.1 
[ ] rabbitmq_recent_history_exchange 1.2.1 
[ ] rabbitmq_sharding     0.1.0 
[ ] rabbitmq_shovel     3.6.1 
[ ] rabbitmq_shovel_management  3.6.1 
[ ] rabbitmq_stomp     3.6.1 
[ ] rabbitmq_tracing     3.6.1 
[e ] rabbitmq_web_dispatch    3.6.1 
[ ] rabbitmq_web_stomp    3.6.1 
[ ] rabbitmq_web_stomp_examples  3.6.1 
[ ] sockjs       0.3.4 
[e ] webmachine      1.10.3 

Как вы можете видеть, [E ] rabbitmq_management 3.6.1 плагин был явно включен.

Так я пытался запустить службу

[[email protected] rabbitmq]# /sbin/service rabbitmq-server start 
Starting rabbitmq-server (via systemctl):     [ OK ] 

Это, кажется, начал правильно. Но это не так.

[[email protected] rabbitmq]# rabbitmqctl status 
Status of node '[email protected]' ... 
Error: unable to connect to node '[email protected]': nodedown 

DIAGNOSTICS 
=========== 

attempted to contact: ['[email protected]'] 

[email protected]: 
    * connected to epmd (port 4369) on iot-rabbit01 
    * epmd reports: node 'rabbit' not running at all 
        no other nodes on iot-rabbit01 
    * suggestion: start the node 

current node details: 
- node name: '[email protected]' 
- home dir: /var/lib/rabbitmq 
- cookie hash: pNNE23Tq7SUKunVAXkqReg== 

Это то, что появляется в startup_log

  RabbitMQ 3.6.1. Copyright (C) 2007-2016 Pivotal Software, Inc. 
    ## ##  Licensed under the MPL. See http://www.rabbitmq.com/ 
    ## ## 
    ########## Logs: /var/log/rabbitmq/[email protected] 
    ###### ##  /var/log/rabbitmq/[email protected] 
    ########## 
       Starting broker... 

BOOT FAILED 
=========== 

Error description: 
    {could_not_start,rabbitmq_mqtt, 
     {{shutdown, 
      {failed_to_start_child,'rabbit_mqtt_listener_sup_:::1883', 
       {shutdown, 
        {failed_to_start_child, 
         {ranch_listener_sup,{acceptor,{0,0,0,0,0,0,0,0},1883}}, 
         {shutdown, 
          {failed_to_start_child,ranch_acceptors_sup, 
           {listen_error, 
            {acceptor,{0,0,0,0,0,0,0,0},1883}, 
            eacces}}}}}}}, 
     {rabbit_mqtt,start,[normal,[]]}}} 

Log files (may contain more information): 
    /var/log/rabbitmq/[email protected] 
    /var/log/rabbitmq/[email protected] 

{"init terminating in do_boot",{could_not_start,rabbitmq_mqtt,{{shutdown,{failed_to_start_child,'rabbit_mqtt_listener_sup_:::1883',{shutdown,{failed_to_start_child,{ranch_listener_sup,{acceptor,{0,0,0,0,0,0,0,0},1883}},{shutdown,{failed_to_start_child,ranch_acceptors_sup,{listen_error,{acceptor,{0,0,0,0,0,0,0,0},1883},eacces}}}}}}},{rabbit_mqtt,start,[normal,[]]}}}} 

Это /var/log/rabbitmq/[email protected] файл

=ERROR REPORT==== 24-Jan-2017::11:43:53 === 
Failed to start Ranch listener {acceptor,{0,0,0,0,0,0,0,0},1883} in ranch_tcp:listen([{port, 
                         1883}, 
                         {ip, 
                         {0, 
                         0, 
                         0, 
                         0, 
                         0, 
                         0, 
                         0, 
                         0}}, 
                         inet6, 
                         {backlog, 
                         128}, 
                         {nodelay, 
                         true}]) for reason eacces (permission denied) 

=INFO REPORT==== 24-Jan-2017::11:43:53 === 
stopped TCP Listener on [::]:5672 

=INFO REPORT==== 24-Jan-2017::11:43:53 === 
Error description: 
    {could_not_start,rabbitmq_mqtt, 
     {{shutdown, 
      {failed_to_start_child,'rabbit_mqtt_listener_sup_:::1883', 
       {shutdown, 
        {failed_to_start_child, 
         {ranch_listener_sup,{acceptor,{0,0,0,0,0,0,0,0},1883}}, 
         {shutdown, 
          {failed_to_start_child,ranch_acceptors_sup, 
           {listen_error, 
            {acceptor,{0,0,0,0,0,0,0,0},1883}, 
            eacces}}}}}}}, 
     {rabbit_mqtt,start,[normal,[]]}}} 

Если вам необходимо получить подробную информацию, пожалуйста, свяжитесь со мной. Большое вам спасибо.

+0

Вы проверили, что на порту 1883 уже ничего не работает? 'sudo lsof -i -P -n' покажет, какие порты используются – hardillb

+0

Ничто уже не работает в 1883 году. – Stefano

ответ

0

Я исправил свою проблему. Для кого у меня будет такая же проблема.

Плагин не мог привязываться к порту 1883, потому что ядро ​​ответил ошибкой EACCESS. Какой-то инструмент безопасности (скорее всего SELinux) нуждается в том, чтобы этот порт был включен в белый список.

Изменение параметров SELinux я смог исправить свою проблему. Это возможно двумя способами

  1. Редактирование файла /etc/selinux/config редактирования строки SELINUX=enforcing Into SELINUX=permissive или в (будьте осторожны, это ошибка безопасности) SELINUX=disabled
  2. Добавить порт 1883 с semanage port --add в белом списке SELinux