web-dev-qa-db-ja.com

コンシューマー:amqp:// user:** @ localhost:5672 //に接続できません:[Errno 111]接続が拒否されました

DockerとrabbitMQを使用してエアフローを構築しようとしています。 rabbitmq:3-management画像を使用しています。そして、rabbitMQ UIとAPIにアクセスできます。

エアフローでは、エアフローウェブサーバー、エアフロースケジューラ、エアフローワーカー、エアフローフラワーを構築しています。 Airflow.cfgファイルは、airflowの構成に使用されます。

私が使用している場所broker_url = amqp://user:[email protected]:5672/およびcelery_result_backend = amqp://user:[email protected]:5672/

私のdocker composeファイルは次のとおりです

version: '3'
services:
  rabbit1:
    image: "rabbitmq:3-management"
    hostname: "rabbit1"
    environment:
      RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
      RABBITMQ_DEFAULT_USER: "user"
      RABBITMQ_DEFAULT_PASS: "password"
      RABBITMQ_DEFAULT_VHOST: "/"
    ports:
      - "5672:5672"
      - "15672:15672"

    labels:
      NAME: "rabbitmq1"

  webserver:
    build: "airflow/"
    hostname: "webserver"
    restart: always
    environment:
      - EXECUTOR=Celery
    ports:
      - "8080:8080"
    depends_on:
      - rabbit1
    command:  webserver

  scheduler:
    build: "airflow/"
    hostname: "scheduler"
    restart: always
    environment:
      - EXECUTOR=Celery
    depends_on:
      - webserver
      - flower
      - worker
    command: scheduler

  worker:
    build: "airflow/"
    hostname: "worker"
    restart: always
    depends_on:
      - webserver
    environment:
      - EXECUTOR=Celery
    command: worker

  flower:
    build: "airflow/"
    hostname: "flower"
    restart: always
    environment:
      - EXECUTOR=Celery
    ports:
      - "5555:5555"
    depends_on:
      - rabbit1
      - webserver
      - worker
    command: flower

Docker composeを使用してイメージを構築できます。ただし、airflowスケジューラをrabbitMQに接続できません。次のエラーが発生します。

コンシューマ:amqp:// user:** @ localhost:5672 //に接続できません:[Errno 111]接続が拒否されました。

127.0.0.1とlocalhostの両方を使用してみました。

私は何を間違っていますか?

10
Kush Patel

airflowコンテナー内から、サービスrabbit1に接続できるはずです。したがって、amqp://user:**@localhost:5672//:amqp://user:**@rabbit1:5672//:に変更するだけで動作します。

Docker composeはデフォルトネットワークを作成し、ネットワークを明示的に定義しないサービスをそれにアタッチします。

アプリケーションの外部からアクセスできるようにする場合を除き、rabbit1の5672および15672ポートを公開する必要はありません。

また、一般的にdocker-compose内でイメージを構築することは推奨されません。

8
Anoop

この問題は、rabbitMQサーバーをSudo apt install rabbitmq-serverコマンドを使用してシステムにインストールすることで解決しました。

2
imhimanshu