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