You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨AWS EC2实例:Airflow触发Ni-Fi流水线失败求助

排查Airflow触发Ni-Fi任务连接拒绝问题的步骤

1. 先从Airflow实例做基础网络连通性测试

在Airflow所在的EC2实例上,用命令直接测试Ni-Fi实例的8443端口:

  • 私网IP测试:telnet <Ni-Fi私网IP> 8443 或 curl -vk https://<Ni-Fi私网IP>:8443/nifi-api
  • 公网IP测试:telnet <Ni-Fi公网IP> 8443

如果这一步失败,说明问题出在网络层面:

  • 检查Ni-Fi实例的本地防火墙:Ubuntu默认用ufw,执行sudo ufw status确认是否允许8443端口入站,未开启则添加规则:sudo ufw allow 8443
  • 重新核对安全组规则:确保Ni-Fi实例的安全组入站规则,源是Airflow实例的私网IP/IP段或Airflow的安全组ID,协议为TCP,端口8443,方向为入站。

2. 检查Ni-Fi的API监听配置

Ni-Fi默认可能仅监听localhost,导致外部无法访问API。打开Ni-Fi配置文件/opt/nifi/conf/nifi.properties:

  • 确认nifi.web.https.host设置为0.0.0.0或Ni-Fi实例的私网IP,而非localhost/127.0.0.1
  • 确认nifi.web.https.port值为8443,与代码中使用的端口一致

修改后重启Ni-Fi:sudo systemctl restart nifi(若用systemd管理)

3. 验证Ni-Fi API本地可用性

在Ni-Fi实例本地执行curl -vk https://localhost:8443/nifi-api,查看是否返回正常JSON响应。若本地正常但Airflow实例访问失败,回到网络层面排查。

4. 核对Airflow代码细节

  • 确认请求用HTTPS:Ni-Fi 1.18.0默认启用HTTPS,8443是HTTPS端口,代码中不能写http://xxx:8443
  • 确认processor_id正确性:必须是GenerateFlowFile处理器的ID,从Ni-Fi界面处理器详情页复制,勿用流程组或其他组件ID
  • 验证登录凭证:在Airflow实例上用curl测试登录:
curl -vk -X POST https://<Ni-Fi-IP>:8443/nifi-api/access/token -H "Content-Type: application/x-www-form-urlencoded" -d "username=<你的账号>&password=<你的密码>"

能返回token则凭证正常,返回401则账号密码错误。

5. 检查Airflow执行环境

  • 若用CeleryExecutor,确认worker节点的安全组是否被允许访问Ni-Fi的8443端口(worker可能和webserver不在同一实例)
  • 查看Airflow任务日志,若有SSL证书验证报错,可在代码中临时添加verify=False(仅测试用,生产环境建议配置可信证书)

内容的提问来源于stack exchange,提问作者Berni Hacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 23:44:57