Elasticsearch版本之間遷移


在任何系統或軟體中,當我們升級到較新版本時,需要按照幾個步驟來維護應用程式設定,組態,資料和其他事情。 這些步驟是使應用程式在新系統中保持穩定或保持資料的完整性(防止資料損壞)所必需的。

以下是升級Elasticsearch的步驟 -

  • http://www.elastic.co/ 閱讀了解如何更改文件。
  • 在非生產環境(如UAT,E2E,SIT或DEV環境)中測試升級版本。
  • 如果沒有資料備份,則無法回滾到上一個Elasticsearch版本。 建議在升級到更高版本之前進行資料備份。
  • 可以使用完全群集重新啟動或捲動升級進行升級。 捲動升級適用於新版本(適用於2.x和更高版本)。當您使用捲動升級方法進行遷移時,不要中斷服務。
舊版 新版 升級方法
0.90.x 2.x 完全群集重新啟動
1.x 2.x 完全群集重新啟動
2.x 2.y 捲動升級(y> x)
  • 在遷移前進行資料備份,並按照說明執行備份過程。 快照和恢復模組可用於進行備份。此模組可用於建立索引或完整叢集的快照,並可儲存在遠端儲存庫中。

快照和還原模組

在開始備份過程之前,需要在Elasticsearch中註冊快照儲存庫。

PUT /_snapshot/backup1
{
   "type": "fs", "settings": {
      ... repository settings ...
   }
}

注意 - 上面的文字是對http://localhost:9200/_snapshot/backup1的HTTP PUT請求(可以是遠端伺服器的IP地址,而不是localhost)。其餘的文字是請求正文。可以使用fiddler2和Windows中的其他網路工具。

我們使用共用檔案系統(型別:fs)進行備份; 它需要在每個主節點和資料節點中註冊。只需要新增具有備份儲存庫路徑的path.repo變數作為值。

新增儲存庫路徑後,需要重新啟動節點,然後可以通過執行以下命令來執行註冊 -

PUT http://localhost:9200/_snapshot/backup1
{
   "type": "fs", "settings": {
      "location": "/mount/backups/backup1", "compress": true
   }
}

完全群集重新啟動

此升級過程包括以下步驟 -

第1步 - 禁用碎片分配程式,並關閉節點。

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.enable": "none"
   }
}

在升級0.90.x1.x的情況下使用以下請求 -

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.disable_allocation": false,
      "cluster.routing.allocation.enable": "none"
   }
}

第2步 - 對Elasticsearch進行同步重新整理 -

POST http://localhost:9200/_flush/synced

第3步 - 在所有節點上,終止所有 elastic 服務。
第4步 - 在每個節點上執行以下操作 -

  • 在Debian或Red Hat節點中 - 可以使用rmp或dpkg通過安裝新軟體包來升級節點。 不要覆蓋組態檔案。
  • 在Windows(zip檔案)或UNIX(tar檔案) - 提取新版本,而不覆蓋config目錄。 您可以從舊安裝複製檔案或可以更改path.confpath.data

第5步 - 從群集中的主節點(node.master設定為truenode.data設定為false的節點)開始重新啟動節點。等待一段時間以建立群集。可以通過監視紀錄檔或使用以下請求進行檢查 -

GET _cat/health or http://localhost:9200/_cat/health
GET _cat/nodes or http://localhost:9200/_cat/health

第6步 - 使用GET _cat/health請求監視叢集的形成進度,並等待黃色響應,響應將是這樣 -

1451295971 17:46:11 elasticsearch yellow 1 1 5 5 0 0 5 0 - 50.0%

第6步 - 啟用分片分配過程,這是在第1步中禁用的,使用以下請求 -

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.enable": "all"
   }
}

在將0.90.x升級到1.x的情況下,請使用以下請求 -

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.disable_allocation": true,
      "cluster.routing.allocation.enable": "all"
   }
}

捲動升級

它與完全群集重新啟動相同,但第3步除外。在此,停止一個節點並進行升級。升級後,重新啟動節點並對所有節點重複這些步驟。 啟用分片分配過程後,可以通過以下請求監視:

GET http://localhost:9200/_cat/recovery