在任何系統或軟體中,當我們升級到較新版本時,需要按照幾個步驟來維護應用程式設定,組態,資料和其他事情。 這些步驟是使應用程式在新系統中保持穩定或保持資料的完整性(防止資料損壞)所必需的。
以下是升級Elasticsearch的步驟 -
舊版 | 新版 | 升級方法 |
---|---|---|
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步 - 在每個節點上執行以下操作 -
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