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.x
到1.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.conf
或path.data
。
第5步 - 從羣集中的主節點(node.master
設置爲true
,node.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