一些運維相關的建議

CrazyZard發表於2020-03-09
  • 預上線
    • 評估使用者的需求及使用場景 / 資料建模 / 容量規劃 / 選擇合適的部署架構 / 效能測試
  • 上線
    • 監控流量 / 定期檢查潛在問題 (防患於未然,發現錯誤的使用方式,及時增加機器)
    • 對索引進行優化(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
  • 停止索引資料,同時備份叢集
  • 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 協議》,轉載必須註明作者和本文連結

快樂就是解決一個又一個的問題!

相關文章