2017-04-24 64 views
3

我正在使用Mesos和Marathon來管理應用程序部署,並且遇到了馬拉松https://github.com/mesosphere/marathon/issues/3783中的這個錯誤,也就是說部署期間的領導者選舉將實例縮小到0.領導者選舉非常頻繁地發生每30分鐘一次),所以我經常遇到這個問題。什麼條件導致馬拉松領導人選舉?

我知道每30分鐘一次是非常不規則的,因爲我已經升級到馬拉松1.3.10並且在過去兩天內沒有選舉過,但是多久是「正常」?領導退出/選舉是在正常情況下發生的,還是我應該期待0選舉,除非存在潛在的問題?一位同事向我提出,「領導選舉是正常的」,而且「有一定數量的選舉是正常的和可以預料的」。我只是不相信,並且很想知道。

回答

5

如果您的馬拉松每30分鐘再選一次,這是不正常的。在正常情況下,馬拉松不應該退位或重選新領導,直到維護髮生(更新或重新啓動)。但如果發生這種情況可以通過4個主要問題(所有結果超時)引起的:

  1. 馬拉松性能 - 當馬拉松有性能問題,症狀之一是失去領導地位。這是因爲Marathon在給定的時間間隔內沒有響應Zookeeper並且被標記爲消失。
  2. Marathon Zookeeper連接問題 - 當網絡延遲太高時(例如,Zookeeper集羣位於與Marathon不同的DC),那麼某些更新可能會超時。這將導致失去領導力。
  3. 動物園管理員的表現 - 當Zookeeper需要做很多工作時,會超時導致馬拉松鬆動領導。
  4. 馬拉松賽被迫退位由DELETE /v2/leader

要解決性能問題,請按照下面的步驟描述here

  1. 碎片您的馬拉松比賽。
  2. 監控 - 啓用指標,但記得配置它們。
  3. 更新至1.3.10或更高版本。
  4. 最小化Zookeeper通信延遲和對象大小。
  5. 調諧JVM - 添加更多的堆和CPU :)。
  6. 請勿使用事件總線 - 如果您確實需要使用過濾的SSE,並且接受它是異步的,並且事件最多隻能傳遞一次。
  7. 如果您需要任務生命週期事件,請使用自定義執行程序。
  8. 首選批量部署到許多單獨的部署。
+0

這是一個體面的答案,但如果你能直接解決我的問題,它會愛上它。有什麼想法嗎? –

+0

@MikeSherov我重申了我的答案。現在好點了嗎? – janisz

+1

完美,謝謝。並接受:-) –