【发布时间】:2018-01-28 17:48:48
【问题描述】:
总结
我正在使用 Celery Executer 以分布式模式运行 Airflow。我在 AWS 上有两个 RHEL7 EC2 实例,一个主实例(网络服务器、调度程序、花)和一个工作线程。我无法通过 UI 查看日志。
问题的根源
(在 AWS 上)我使用的 DNS 服务器通过删除生成的 DNS 名称中的第一个八位字节来截断 DNS 记录。如果实例 IP 地址为 10.204.224.123,则 DNS A-Record 将为 IP-204-224-123.xxx.domain.com。
效果task_instance表中记录的hostname值被记录为AWS最初提供的DNS记录,不正确。
这会导致尝试通过 UI 查看日志时失败。
*** Log file isn't local.
*** Fetching here: http://<incorrect-dns>:8793/log/<dag>/<task>/<log-timestamp>
*** Failed to fetch log file from worker.
*** Reading remote logs...
*** Unsupported remote log location.
工作环境
- 如果我编辑(删除“-10”)用户界面试图在其中查找日志的 URL,那么我只需在地址栏中输入即可在浏览器中查看它。
-
如果我手动修改
task_instance表:UPDATE task_instance SET hostname = replace(hostname,'ip-10-','ip-');然后 UI 可以找到它们(对于已运行的 dag)。
询问
如何以编程方式修改工作人员地址的存储方式?有人可以指出我处理这个的气流代码吗?我希望 UI 中的 View Log 页面能够正常工作。
【问题讨论】:
-
作为一种变通方法 - 您可以在私有托管区域上公布“错误”的 DNS 主机名,然后该代码就会起作用。
-
我无法控制 DNS 服务器,也无法与私有托管区域进行交互。上游问题严格来说是给定的。
-
想通了。 aws.amazon.com/premiumsupport/knowledge-center/… 由于我使用的是公司 AMI,解决方案对我来说略有不同,但这是我最终所做的一般对应物。
-
酷。您当时为实例分配了什么主机名?无效的?
标签: amazon-web-services amazon-ec2 dns celery airflow