- 預上線
- 評估使用者的需求及使用場景 / 資料建模 / 容量規劃 / 選擇合適的部署架構 / 效能測試
- 上線
- 監控流量 / 定期檢查潛在問題 (防患於未然,發現錯誤的使用方式,及時增加機器)
- 對索引進行優化(Index Lifecycle Management),檢測是否存在不均衡而導致有部分節點過熱
- 定期資料備份 / 滾動升級
- 下架前監控流量,實現 Stage Decommission
- 根據實際場景,選擇合適的部署方式,選擇合理的硬體配置
- 搜尋類
- 日誌/指標
- 部署要考慮,反親和性(Anti-Affinity)
- 儘量將機器分散在不同的機架。例如,3 臺 Master 節點必須分散在不同的機架上
- 善用 Shard Filtering 進行配置
- Mapping
- 生產環境中索引應考慮禁止 Dynamic Index Mapping,避免過多欄位導致 Cluster State 佔用過多
- 禁止索引自動建立的功能,建立時必須提供 Mapping 或通過 Index Template 進行設定
- 設定 Slowlogs,發現一些效能不好,甚至是錯誤的使用 Pattern
- 例如:錯誤的將網址對映成 keyword,然後用萬用字元查詢。應該使用 Text,結合 URL 分詞器
- 嚴禁一切 “*” 開頭的萬用字元查詢
- ES 在新版本中會持續對效能作出優化;提供更多的新功能
- Circuit breaker 實現的改進
- 修復一些已知的 bug 和安全隱患
- Elasticsearch 的版本格式是: X.Y.Z
- X: Major
- Y: Minor
- Z: Patch
- Elasticsearch 可以使用上一個主版本的索引
- 7.x 可以使用 6.x / 7.x 不支援使用 5.x
- 5.x 可以使用 2.x
- Rolling Upgrade
- Full Cluster Restart
- 叢集在更新期間不可用
- 升級更快
- 停止索引資料,同時備份叢集
- Disable Shard Allocation (Persistent)
- 執行 Synced Flush
- 關閉並更新所有節點
- 先執行所有 Master 節點 / 再執行其他節點
- 等叢集變黃後開啟 Shard Allocation
移動分片
- 從一個節點移動分片到另外一個節點
- 使用場景:
- 當一個資料節點上有過多 Hot Shards;可以通過手 動分配分片到特定的節點解決
從叢集中移除一個節點
- 使用場景:當你想移除一個節點,或者對一個機器進行維護。同時你又不希望導致叢集的顏色變 黃或者變紅
控制 Allocation 和 Recovery
- 使用場景:控制 Allocation 和 Recovery 的速率
Synced Flush
- 使用場景:需要重啟一個節點。
- 通過 synced flush,可以在索引上放置一個 sync ID。這樣可以提供這些分片的 Recovery 的時間
清空節點上的快取
- 使用場景:節點上出現了高記憶體佔用。可以執行清除快取的操作。這個操作會影響叢集的效能,但是會避免你的叢集出現 OOM 的問題
控制搜尋的佇列
- 使用場景:當搜尋的響應時間過長,看到有“reject” 指標的增加,都可以適當增加該數值
設定 Circuit Breaker
- 使用場景:設定各類 Circuit Breaker。避免 OOM 的發生
瞭解使用者場景,選擇合適部署
定期檢查,發現潛在問題
對重要的資料進行備份
保持版本升級
本作品採用《CC 協議》,轉載必須註明作者和本文連結