消费者:无法连接到 amqp://user:**@localhost:5672//: [Errno 111] 连接被拒绝
consumer: Cannot connect to amqp://user:**@localhost:5672//: [Errno 111] Connection refused
我正在尝试使用 docker 和 rabbitMQ 构建我的气流。我正在使用 rabbitmq:3-管理图像。而且我能够访问 rabbitMQ UI 和 API.
在 airflow 中,我正在构建 airflow webserver、airflow scheduler、airflow worker 和 airflow flower。 Airflow.cfg 文件用于配置气流。
我在哪里使用 broker_url = amqp://user:password@127.0.0.1:5672/
和 celery_result_backend = amqp://user:password@127.0.0.1:5672/
我的docker合成文件如下
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 构建图像。但是,我无法将气流调度程序连接到 rabbitMQ。我收到以下错误:
consumer: Cannot connect to amqp://user:**@localhost:5672//: [Errno
111] Connection refused.
我试过同时使用 127.0.0.1 和本地主机。
我做错了什么?
从您的 airflow
容器中,您应该能够连接到服务 rabbit1
。所以你需要做的就是将 amqp://user:**@localhost:5672//:
更改为 amqp://user:**@rabbit1:5672//:
并且它应该可以工作。
Docker compose 创建一个默认网络并附加未明确定义网络的服务。
你不需要在 rabbit1 上公开 5672 和 15672 端口,除非你希望能够从应用程序外部访问它。
另外,一般不建议在docker-compose.
里面构建镜像
我通过使用命令 sudo apt install rabbitmq-server
在我的系统中安装 rabbitMQ 服务器解决了这个问题。
我正在尝试使用 docker 和 rabbitMQ 构建我的气流。我正在使用 rabbitmq:3-管理图像。而且我能够访问 rabbitMQ UI 和 API.
在 airflow 中,我正在构建 airflow webserver、airflow scheduler、airflow worker 和 airflow flower。 Airflow.cfg 文件用于配置气流。
我在哪里使用 broker_url = amqp://user:password@127.0.0.1:5672/
和 celery_result_backend = amqp://user:password@127.0.0.1:5672/
我的docker合成文件如下
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 构建图像。但是,我无法将气流调度程序连接到 rabbitMQ。我收到以下错误:
consumer: Cannot connect to amqp://user:**@localhost:5672//: [Errno 111] Connection refused.
我试过同时使用 127.0.0.1 和本地主机。
我做错了什么?
从您的 airflow
容器中,您应该能够连接到服务 rabbit1
。所以你需要做的就是将 amqp://user:**@localhost:5672//:
更改为 amqp://user:**@rabbit1:5672//:
并且它应该可以工作。
Docker compose 创建一个默认网络并附加未明确定义网络的服务。
你不需要在 rabbit1 上公开 5672 和 15672 端口,除非你希望能够从应用程序外部访问它。
另外,一般不建议在docker-compose.
里面构建镜像我通过使用命令 sudo apt install rabbitmq-server
在我的系统中安装 rabbitMQ 服务器解决了这个问题。