ピアエラーによって接続が停止していることがわかり、RabbitMQがポートをリッスンしていないか、ファイアウォールがポートをブロックしていると想定しました。そうではありませんでした。
Ubuntu 16.04.2 LTSでRabbitMQを実行し、aptによってインストールされたバージョン:3.5.7-1ubuntu0.16.04.1
Rabbitのポート5672の「netstat-a」の出力は次のようになりました。
$ netstat -a|grep -i amqp
tcp6 0 0 [::]:amqp [::]:* LISTEN
ただし、Rabbitは実際にはIPv4アドレスとIPv6アドレスの両方をリッスンしていました。これをnetcatで確認しました。
別のマシンからRabbitにアクセスするには、次のコマンドのようなユーザーアカウントを設定する必要があります。
sudo rabbitmqctl add_user celery celerypassword
sudo rabbitmqctl add_vhost celery_vhost
sudo rabbitmqctl set_user_tags celery celerytag
sudo rabbitmqctl set_permissions -p celery_vhost celery .* .* .*
問題は私のURLでした。私のは次のように見えました:
BROKER_URL = 'amqp://celery:[email protected]//'
その後、最後から2番目のスラッシュがvhostの名前になります。上記では、vhostにcelery_vhostという名前を付けました。接続するには、URLを次のように変更する必要がありました:
BROKER_URL = 'amqp://celery:[email protected]/celery_vhost'
/ var / log/rabbitmqのRabbitログを見てこれを発見しました。 URLが間違っていると次のエラーが含まれる.logファイルがあります:
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}