2015-02-06 42 views
33

最近我發現了這樣一個Apache Mesos。Apache Mesos的持久存儲器

這一切看起來令人驚訝的所有演示和實例。我很容易想象如何爲無國籍工作競選 - 這自然地符合整個想法。

Bot如何處理有狀態的長時間運行的作業?

說,我有由N個機器羣集(和經由馬拉松調度)。我想在那裏運行postgresql服務器。

這就是它 - 一開始我甚至不希望它是高度可用的,但只是單純的承載一個PostgreSQL服務器的單一工作(實際上Dockerized)。

1-如何組織它?將服務器約束到特定的集羣節點?使用一些分佈式FS?

2- DRBD,MooseFS,GlusterFS,NFS,CephFS,這其中的一個與Mesos和Postgres的類似服務方面發揮呢? (我在想這裏Mesos /馬拉松可能會重定位服務的可能性,如果下降)

3-請告訴我的方法是否在哲學方面是錯誤的(數據服務器的DFS和某種服務器切換像Mesos的頂部)從Persistent storage for Apache Mesos

問題主要是複製,通過zerkmsProgrammers Stack Exchange問的Postgres。

回答

43

非常好的問題。以下是Mesos中的一些即將發佈的功能,旨在改進對有狀態服務的支持以及相應的當前解決方法。

  1. Persistent volumes(0.23):當啓動一個任務,你可以創建一個存在任務的沙箱之外,任務甚至死亡後的節點上會持續/完成音量。當任務退出時,其資源(包括持久性卷)可以提供給框架,以便框架可以再次啓動相同的任務,啓動恢復任務或啓動消耗前一任務輸出的新任務作爲其輸入。
    • 當前解決方法:將您的狀態保存在沙箱外的某個已知位置,並讓您的任務嘗試手動恢復它。也許將其保存在分佈式文件系統/數據庫中,以便可以從任何節點訪問它。
  2. DiskIsolation(0.22):對沙箱以及持久卷實施磁盤配額限制。這可確保您的存儲空間龐大的框架無法阻塞磁盤並阻止其他任務運行。
    • 當前的解決辦法:監視磁盤使用帶外,並運行定期清理作業。
  3. Dynamic Reservations(0.23):當啓動一個任務,你可以預留資源的任務用途(包括持久卷),以保證而不是去,他們在任務退出提供給您,無論框架是最遠低於公平份額。
    • 當前解決方法:使用slave的--resources標誌爲從站啓動時爲您的框架靜態保留資源。

至於具體使用情況和問題:

1A)如何將一個組織呢?您可以使用Marathon來做到這一點,也許爲您的有狀態服務創建一個單獨的Marathon實例,以便您可以爲「有狀態」角色創建靜態保留,從而只有有狀態的Marathon才能保證這些資源。

1b)將服務器約束到特定的集羣節點?您可以在Marathon中輕鬆完成此任務,將應用程序限制到特定主機名或具有特定屬性值的任何節點(例如NFS_Access = true)。見Marathon Constraints。如果您只想在特定的一組節點上運行任務,則只需在這些節點上創建靜態保留。如果您需要發現這些節點,您應該查看Mesos-DNS和/或Marathon's HAProxy integration

1c)使用一些分佈式FS?由許多分佈式文件系統提供的數據複製將確保您的數據可以在任何單個節點的故障中倖存下來。堅持使用DFS還可以提供更大的靈活性,以便您可以安排任務的時間安排,但代價是網絡和本地磁盤之間的延遲差異。 Mesos內置支持從HDFS uris獲取二進制文件,許多客戶使用HDFS將執行程序二進制文件,配置文件和輸入數據傳遞到其任務將運行的從站。

2)DRBD,MooseFS,GlusterFS,NFS,CephFS?我聽說過使用CephFS,HDFS和MapRFS與Mesos的客戶。 NFS看起來也很容易。只要你的任務知道如何從它放置的任何節點訪問它,對Mesos來說,真的沒關係。

希望有幫助!

+2

更新:持續卷沒有落入0.22(全部),因此您必須等待0.23才能開始使用持久卷或動態保留。 – Adam 2015-03-30 22:53:08

+0

動態保留現在被推到0.24 – Sergey 2015-07-01 14:33:29

+0

永久卷和動態保留都將在Mesh 0.23的alpha/experimental狀態下可用。預計他們將在0.24生產就緒。 – Adam 2015-07-01 18:18:35