2015-06-12 40 views
2

對不起,這可能是一個廣泛的問題,但我沒有找到解決方案來解決這個問題。爲動態Elasticsearch集羣保存節點數據的策略

我嘗試使用Docker容器在MesosMarathon之間運行Elasticsearch集羣。因此,我構建了一個Docker image,它可以從Marathon開始並通過前端或API動態擴展。

這對測試設置非常有用,但問題仍然是如何保持數據,以便如果集羣縮小(我知道這也是關於索引配置本身)或停止,並且我想稍後重新啓動(或放大)相同的數據。

問題是,馬拉松決定運行節點的位置(在哪個Mesos Slave上),所以從我的角度來看,如果在重新啓動時所有數據都可用於「新」節點,但我試圖保留通過Docker卷將數據發送到Docker主機。

這使我心中唯一的事情是:

  • 使用分佈式文件系統HDFS一樣或NFS,與安裝的卷要麼泊塢主機或泊塢窗圖像本身上。不過,這會留下的問題是如何在新的羣集啓動期間,如果「老」集羣有例如8個節點加載所有數據,而新的只有4

  • 使用Elasticsearch的Snapshot API保存到一個普通的驅動器在網絡的某個地方。我認爲這將有性能懲罰...

有沒有其他辦法可以解決這個問題?有什麼建議嗎?不幸的是,我沒有找到關於這類話題的好資源。提前致謝。

+1

Elasticsearch和NFS不是最好的朋友;-)。你不想在NFS上運行集羣,速度太慢,而且當存儲速度更好時,Elasticsearch的效果會更好。如果你在這個方程中引入網絡,你會遇到麻煩。我不知道Docker或Mesos。但肯定我建議反對NFS。使用快照/恢復。 –

+0

@AndreiStefan非常感謝有關NFS的見解。如果我們擁有100GB的數據,Snapshot API真的是一種方式嗎? – Tobi

+0

後續快照是增量式的。所以,第一個快照需要一些時間,但其餘的快照應該佔用更少的空間和更少的時間。總共100GB的數據或100GB的初始化(無副本)?另外請注意,「增量」是指文件級別的增量,而不是文檔級別。 –

回答

1

Elasticsearch和NFS不是最好的朋友;-)。你不想在NFS上運行集羣,速度太慢,而且當存儲速度更好時,Elasticsearch的效果會更好。如果你在這個方程中引入網絡,你會遇到麻煩。我不知道Docker或Mesos。但肯定我建議反對NFS。使用快照/恢復。

第一個快照需要一些時間,但其餘快照應占用較少的空間和較少的時間。另外請注意,「增量」是指文件級別的增量,而不是文檔級別。

快照本身需要所有具有想要快照的索引的初選的節點。這些節點都需要訪問公共位置(存儲庫),以便他們可以寫入。對同一地點的這種普通訪問通常並不那麼明顯,這就是我提到它的原因。

+0

再次感謝您的幫助! – Tobi

0

在Mesos上運行Elasticsearch的最好方法是使用專門的Mesos框架。第一個努力是這個區域是https://github.com/mesosphere/elasticsearch-mesos。最近有一個項目,即AFAIK,目前正在開發中:https://github.com/mesos/elasticsearch。我不知道這是什麼狀態,但你可能想嘗試一下。

+0

感謝您的回答。你鏈接的第一個項目或多或少死了,你鏈接的第二個項目目前正在積極開發恕我直言...我不明白後者比在馬拉松上運行Docker圖像「更好」,但也許你可以給一些細節。我認爲運行馬拉松比賽等更靈活(輕量級),但這只是我個人的看法。 – Tobi

+0

擁有一個專門的框架可以爲您在任務生命週期(= elasticsearch節點)提供很大的靈活性,並允許將它們作爲一個整體進行管理。例如,您可以擁有一套檢查和自動縮放彈性搜索集合。你對這兩個項目的狀態都是正確的,但是我會鼓勵你使用第二個項目並最終對它做出貢獻:) – rukletsov