[Question]: http://es01:1200 connect fault.

用户在 Ubuntu 系统下通过 Docker 部署 RAGFlow,执行 docker compose -f docker/docker-compose.yml up -d 后,所有容器(ragflow-redis、ragflow-es-01、ragflow-mysql、ragflow-minio

[Question]: http://es01:1200 connect fault.

[Question]: http://es01:1200 connect fault.

快速结论:该报错通常发生在 RAGFlow 容器启动后,Elasticsearch 容器内部尚未完全就绪或网络连通性出问题时。优先排查 Elasticsearch 容器是否健康,并尝试重启 Docker 服务。

问题场景

用户在 Ubuntu 系统下通过 Docker 部署 RAGFlow,执行 docker compose -f docker/docker-compose.yml up -d 后,所有容器(ragflow-redis、ragflow-es-01、ragflow-mysql、ragflow-minio、ragflow-server)均显示为 Running 状态。但执行 docker logs -f ragflow-server 时,持续输出连接 Elasticsearch 失败的报错。

报错原文

docker logs -f ragflow-server
[WARNING] [2025-02-09 10:15:22,335] [_node_pool.mark_dead] [line:249]: Node  has failed for 1 times in a row, putting on 1 second timeout
[WARNING] [2025-02-09 10:15:22,335] [_transport.perform_request] [line:395]: Retrying request after failure (attempt 0 of 3)
Traceback (most recent call last):
  File "/ragflow/.venv/lib/python3.12/site-packages/elastic_transport/_transport.py", line 328, in perform_request
    meta, raw_data = node.perform_request(
                     ^^^^^^^^^^^^^^^^^^^^^
  File "/ragflow/.venv/lib/python3.12/site-packages/elastic_transport/_node/_http_urllib3.py", line 202, in perform_request
    raise err from None
elastic_transport.ConnectionError: Connection error caused by: NewConnectionError(: Failed to establish a new connection: [Errno 111] Connection refused)

原因分析

可能原因:Elasticsearch 容器在启动时尚未完全就绪(例如内存分配、初始化过程耗时较长),或者 Docker 内部网络出现临时错误导致 ragflow-server 无法通过 http://es01:1200 访问 ES。

环境排查

  • 确认 Docker 版本及 Docker Compose 版本。
  • 确认 Elasticsearch 容器状态:docker ps -adocker inspect ragflow-es-01 查看 health 状态。
  • 确认 Elasticsearch 监听端口:在宿主机执行 curl http://localhost:1200 测试外部可达性。
  • 检查 docker-compose-base.yml 中 ES 的 healthcheck 配置(测试命令为 curl http://localhost:9200,内部暴露端口是 9200,外部映射 1200)。

解决步骤

  1. 先尝试重启 Docker 服务(社区反馈此操作在部分场景有效):
    sudo systemctl restart docker.socket
    sudo systemctl restart docker
  2. 重启后重新启动 RAGFlow 容器:
    cd ragflow/
    docker compose -f docker/docker-compose.yml down
    docker compose -f docker/docker-compose.yml up -d
  3. 等待 Elasticsearch 容器完全启动(约 30~60 秒),观察 logs 是否恢复连接。
  4. 如问题依旧,检查 Elasticsearch 容器日志:
    docker logs ragflow-es-01

    排查是否有内存不足、磁盘空间不足等错误。

  5. 确认 con/service_conf.yamles.hosts 的 URL 是否正确(http://es01:1200 是容器内部地址,无需修改)。

验证方法

执行 docker logs -f ragflow-server,观察不再输出连接错误,同时出现类似 connected to elasticsearch 或正常启动的日志信息;或通过浏览器访问 RAGFlow Web 界面确认服务正常。

参考来源

infiniflow/ragflow #4853

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 7977

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注