Плагин RabbitMQ Shovel застрял в стартовом состоянии

RabbitMQ запускается нормально, но статус плагина лопаты указан как «запуск».

Я использую следующий rabbitmq.config:

Каждый брокер работает на отдельном экземпляре AWS. Удаленный сервер — это сервер Windows 2008, локальный сервер — Amazon Linux.

[{rabbitmq_shovel,
  [{shovels,
    [{scrape_request_shovel,
      [{sources,      [{broker,"amqp://test_user:test_password@localhost"}]},
       {destinations, [{broker, "amqp://test_user:test_password@ec2-###-##-###-###.compute-1.amazonaws.com"}]},
       {queue, <<"scp_request">>},
       {ack_mode, on_confirm},
       {publish_properties, [{delivery_mode, 2}]},
       {publish_fields, [{exchange, <<"">>},
                         {routing_key, <<"scp_request">>}]},
       {reconnect_delay, 5}
       ]}
      ]
   }]
}].

Выполнение следующей команды:

sudo rabbitmqctl eval 'rabbit_shovel_status:status().'

возвращает:

[{scrape_request_shovel,начало,{{2012,7,11},{23,38,47}}}]

Согласно этому вопросу, это может произойти, если пользователи не был правильно настроен на двух брокерах. Тем не менее, я перепроверил, правильно ли настроил пользователей с помощью rabbitmqctl user_add на обеих машинах — даже пробовал это с другим набором пользователей, чтобы быть уверенным.

Я также запустил сканирование nmap порта 5672 на удаленном хосте, чтобы убедиться, что он запущен и работает на этом порту.

ОБНОВЛЕНИЕ Проблема не решена, но, похоже, это результат проблем с подключением к удаленному серверу. Я изменил «reconnect_delay» на 0 в своем конфигурационном файле, чтобы избежать бесконечного повторного подключения лопаты. Настоятельно рекомендуем другим пользователям с этой проблемой сделать то же самое, так как это позволит вам получать сообщения об ошибках из rabbit_shovel_status. В моем случае я получил следующую ошибку:

[{scrape_request_shovel,
    {terminated,
        {{badmatch,{error,access_refused}},
         [{rabbit_shovel_worker,make_conn_and_chan,1},
          {rabbit_shovel_worker,handle_cast,2},
          {gen_server2,handle_msg,2},
          {proc_lib,init_p_do_apply,3}]}},
    {{2012,7,12},{0,4,37}}}]

person CQP    schedule 12.07.2012    source источник


Ответы (1)


Отвечая на мой собственный вопрос здесь, на случай, если другие столкнутся с этой проблемой. Эта ошибка (а также ошибка тайм-аута, если вы ее получите, {{badmatch,{error,etimedout}}, ), почти наверняка является проблемой связи между двумя машинами, скорее всего, из-за настроек доступа к порту / брандмауэра.

Здесь я делал пару глупостей:

1) Использовал неправильный DNS для моего удаленного инстанса EC2 (Черт возьми, действительно глупо - не могу вам сказать, сколько времени я потратил на то, чтобы биться головой о стену об этом...). Помните, что при остановке и запуске вашего экземпляра создается новый DNS, если у вас нет гибкого IP-адреса, связанного с экземпляром.

2) Мой удаленный экземпляр — это сервер Windows, и я понял, что вам нужно открыть порт 5672 оба в брандмауэре Windows и в группах безопасности EC2 — здесь есть два перекрывающихся уровня управления доступом, и открытие Порт в консоли управления EC2 недостаточно, если ваш компьютер является сервером Windows на EC2, так как вам также необходимо настроить брандмауэр сервера Windows.

person CQP    schedule 13.07.2012
comment
(2.7.1) Также см. мой ответ здесь: .com/questions/11217902/rabbitmq-shovel-wont-start/ - person Greg M. Krsak; 08.10.2012