2016-09-19 50 views
6

如何在高可用性中部署apache airflow(正式名稱爲airbnb的氣流)調度程序?爲高可用性設置氣流

我不是在詢問應該明確部署在高可用性配置中的後端DB或RabbitMQ。

我的主要焦點是調度程序 - 有什麼特別的需要做?

回答

7

經過一番挖掘,我發現同時運行多個調度程序並不安全,這意味着開箱即用 - 氣流調度程序在高可用性環境中使用並不安全。

airflow團隊正計劃通過在DAG數據結構上添加鎖定機制來解決此問題,但尚未實現(我通過運行2個調度程序進行檢查,並看到他們安排了相同的不合適的dag實例)。 這說明如下: https://groups.google.com/forum/#!topic/airbnb_airflow/-1wKa3OcwME

我沒有找到一種方法,用我自己的代碼以及使用羣集工具領導人選舉包裹調度來解決此高availalbilty問題(我personanlly用於此目的領事)。通過這種方式,只有當選的主人正在運行調度程序,當主人關閉時,奴隸將替換他。

請考慮這一點,因爲開箱即用,在高可用性環境中使用氣流時,氣流調度程序目前不適用於此(除非您自己解決此問題)。

編輯 - 主從解決方案的另一種方法是使用集羣管理器/調度程序來確保始終只有一個氣流調度程序實例可用。這種方法依賴於集羣管理員的自我修復能力。例如,mesos和nomad都支持這種配置(我之前爲了簡單起見選擇了遊牧民族)。

+0

我正在研究這個問題,並通過Google發現了這個問題。你有關於這個或任何描述遊牧人和領事如何參與所有這些的示例代碼的博客嗎?我們使用領事,但Nomad對我們來說仍然是新的。我希望能夠在不同節點或相同節點上啓動調度程序,如果出於某種原因而出現故障。 – luckytaxi

+0

我沒有關於它的博客。如果您設置了遊牧民族,只需將其指定爲服務並使用count = 1,並確保約束符合少數節點。它應該做的伎倆。 –

+0

U也可以使用Kubernetes或任何其他編排工具。這被稱爲自我修復。 –