2015-10-15 73 views
0

我試圖用mesos/marathon實現lizardfs集羣。我爲此創建了一些碼頭圖像。我需要得到一個特定類型的docker容器(lizardfs-master)而不是在已經運行另一種類型的容器(lizardfs-shadow或lizardfs-metalogger)的同一個節點上運行。也就是說,我需要運行這三種類型容器中的每一種的實例,但它們不能同時在同一個節點上運行。它們是相互排斥的。相互排斥的碼頭集裝箱的馬拉松限制

我不想限制可以運行每個容器的節點。我只是想讓它們獨佔。

有沒有什麼辦法可以在馬拉松中完成這個,即使用約束?它會怎樣?

謝謝。

回答

0

我可以想象有幾種方法可以實現這一點。 :)

我會做下列..

設置3個應用程序,每一個爲您的具體泊塢窗圖像(主,陰影,metalogger)。 然後,你可以對捆綁的應用程序特定節點的應用程序創建一個約束:

"constraints": [["hostname", "CLUSTER", "a.specific.node.com"]] 

https://github.com/mesosphere/marathon/blob/master/docs/docs/constraints.md#cluster-operator

我想你也可以定義多個節點。

我沒有測試這個,但它對我來說看起來很合理。 ;)

+0

理想情況下,我的想法並不是將docker容器綁定到特定節點,但marathon可以「實現」它不能在已經運行其他容器類型的節點上運行某個容器。我想要一個「扁平」的集羣,其中馬拉松,如果節點損壞,可以決定在哪裏運行該「死」容器,選擇另一個不運行互斥容器的節點:) –

+0

是的,你可以額外拆分將羣集分組,然後使用LIKE或UNLIKE約束將您的容器分配給節點組並將它們相互排斥。 –

+0

有道理。因此,我可以將羣集節點拆分爲不相交的集合,並強制每個互斥容器運行在不同的節點子集中。謝謝! –