2015-04-30 61 views
4

我有一個運行在6個低能耗節點上的彈性搜索集羣。我想將它遷移到一個新的4個非常重型節點。我試圖找出最好的辦法。由於我從6個節點到4個節點,我不能將數據文件從舊集羣複製到新節點。它看起來像是快照和恢復功能,但我無法找到一種文檔化的方式在一組硬件上創建快照並將其恢復到另一組硬件中。有沒有人用ElasticSearch做過這種硬件升級?將ElasticSearch羣集遷移到新硬件的最佳方式是什麼?

+0

難道你不是原始硬件上的快照,'scp'(複製)到新的硬件,然後執行恢復?自從我看過這些文檔以來,已經有一段時間了,但也許只是嘗試一下,看看會發生什麼? –

+0

是的,這幾乎是我的想法,但我無法在任何地方找到這個過程。 –

回答

8

要使用快照/恢復,您必須在所有服務器(即NFS)上具有公共裝入點。您必須在兩個羣集上添加存儲庫,然後在一個上快照並在另一個上恢復。確切的命令在這裏有很好的記錄:http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html

遷移的另一種方式是最初將羣集連接在一起,並等待所有東西都變成綠色。然後通過退役舊緩慢節點的過程:How to remove node from elasticsearch cluster on runtime without down time

遷移的最後一種方式是@Zouzias推薦的方式,即使用程序將數據從一個集羣複製到另一個集羣。這裏有一個開源的基於node.js的項目:https://github.com/mallocator/Elasticsearch-Exporter,它可以在你不需要編寫代碼的情況下完成你所需要的任務。

另一種方式遷移是利用現有的API在5.x的 - 從遠程reindex from remote

POST _reindex 
{ 
    "source": { 
    "remote": { 
     "host": "http://otherhost:9200", 
     "username": "user", 
     "password": "pass" 
    }, 
    "index": "source" 
    }, 
    "dest": { 
    "index": "dest" 
    } 
} 

但可以肯定,在提供的link閱讀的文檔,因爲你必須設置在reindex.remote.whitelist你elasticsearch.yml文件。

1

我爲此任務遵循的方法如下:使用Java API,批量API和Scroll API將一個(或幾個)索引節點的自定義副本功能從一個elasticsearch集羣編碼到另一個集羣。

更準確地說,我使用滾動API從舊索引獲取數據,並使用批量API將其推送到新索引。

我還使用上述功能備份/索引的緊急副本。

相關問題