type
status
date
slug
summary
tags
category
icon
password

Elasticsearch

Cluster 重啟升級

當升級前後的版本不兼容時,必須停止整個 cluster 才能進行升級
  1. 準備升級
      • 確保使用中的插件有相容 Elasticsearch 新版本的版本
      • 備份
  1. 禁用 shard 分配
    1. 由於關閉節點會將該節點的 shard 複製到 cluster 中的其他節點,可能涉及大量的 IO,因為稍後就要重啟的不需要此 IO,透過關閉 shard 分配節省時間。
  1. 停止 indexing 並且 synced flush
    1. 執行 synced-flush 可以加快 shard 恢復速度
  1. [可選] 暫時停止機器學習和數據源關聯任務
    1. 關閉機器學習節點時,其作業會移動到另一個節點並還原模型,雖然可以在升級期間繼續使用,但會增加 cluster 負擔,可以透過以下方式暫時停止。
  1. 關閉所有節點
    1. 升級節點,安裝新的 rpm
      1. 升級插件
        1. 使用 elasticsearch-plugin 腳本為每個已安裝的插件進行升級。
      1. 啟動所有節點
        1. 等待 cluster 狀態為 yellow
          1. 當 cluster 狀態為 yellow 表示所有 primary shard 都已恢復,但未分配 replica shard。
            不過這是正常的,因為我們已經禁用了 shard 分配。
        1. 重新啟用 shard 分配,並等待 cluster 狀態變為 green
          1. 重新啟動機器學習

            滾動升級

            Elasticsearch 支援滾動升級,對 Cluster 可以逐一升級每個節點,因此可以在升級期間不停服務
            1. 準備升級
                • 確保使用中的插件有相容 Elasticsearch 新版本的版本
                • 備份
            1. 禁用 shard 分配
              1. 由於關閉節點會將該節點的 shard 複製到 cluster 中的其他節點,可能涉及大量的 IO,因為稍後就要重啟的不需要此 IO,透過關閉 shard 分配節省時間。
            1. [可選] 停止非必要的 indexing 並且 synced flush
              1. 雖然滾動升級期間允許 indexing,但減少 indexing 可以加速 shard recovery。
            1. [可選] 暫時停止機器學習和數據源關聯任務
              1. 關閉機器學習節點時,其作業會移動到另一個節點並還原模型,雖然可以在升級期間繼續使用,但會增加 cluster 負擔,可以透過以下方式暫時停止。
            1. 關閉單個節點
              1. 升級節點,安裝新的 rpm
                1. 升級插件
                  1. 使用 elasticsearch-plugin 腳本為每個已安裝的插件進行升級。
                1. 啟動升級後的節點並加入 cluster
                  1. 加入集群後重新啟用 shard 分配
                    1. 在升級下一個節點之前,先等待 cluster 完成 shard 分配
                      1. 透過以下指令確認進度,直到 status 中的值為 green 則表示已分配完成
                        在滾動升級期間,分配給新版本節點的 primary shard 不能將其 repica shard 分配給就版本節點,因此若集群中只有一個以升級的節點,則 shard 無法分配狀態會是 yellow,在此況下可以繼續升級下一個節點。
                        在滾動升級期間,分配給新版本節點的 primary shard 不能將其 repica shard 分配給就版本節點,因此若集群中只有一個以升級的節點,則 shard 無法分配狀態會是 yellow,在此況下可以繼續升級下一個節點。
                    1. 重複步驟 1~9
                      1. 可以使用以下指令檢查哪些節點已升級
                    1. 重新啟動機器學習任務

                      Kibana

                      Kibana 不支援滾動升級,而且如果針對 Elasticsearch index 運行不同的版本的 Kibana 可能導致數據損壞與丟失,因此升級之前應該停止所有的 Kibana 實例。
                      1. 停止所有的 Kibana 實例
                        1. 更新 rpm 檔案,並且避免覆蓋設定檔
                          1. 確認移除或更新設定檔中設置是否依照新版本 Kibana 更新
                          1. 透過 kibana-plugin 腳本重新安裝 plugin
                            1. 開啟 Kibana
                              Kibana 版本升級後,啟動 Kibana 之後會遷移保存在 Elasticsearch 內的資料,確保資料和新版本兼容
                              • .kibana_{kibana_version}_001

                              Logstash

                              1. 關閉 Logstash
                                1. 更新 rpm 檔案
                                  1. 測試設定檔,根據結果調整設定檔
                                    1. 開啟 Logstash
                                       

                                      參考

                                       
                                      升級 SOP
                                      升級 SOP