管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

CrazyZard發表於2020-02-19

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

  • 什麼是 Hot & Warm Architecture
    • 資料通常不會有 Update 操作;適用於 Time based 索引資料(生命週期管理),同時資料量比較大的
      場景
    • 引入 Warm 節點,低配置大容量的機器存放老資料,以降低部署成本
  • 兩類資料節點, 不同的硬體配置
    • Hot 節點(通常使用 SSD):索引有不斷有新文件寫入。通常使用 SSD
    • Warm 節點(通常使用 HDD):索引不存在新資料的寫入;同時也不存在大量的資料查詢
  • 用於資料的寫入
    • Indexing 對 CPU 和 IO 都有很高的要求。所以需要使用高配置的機器
    • 儲存的效能要好。建議使用 SSD

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

  • 用於儲存只讀的索引,比較舊的資料
    • 通常使用大容量的磁碟(通常是 Spinning Disks)

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

  • 使用 Shard Filtering,步驟分為以下幾步
    • 標記節點 (Tagging)
    • 配置索引到 Hot Node
    • 配置索引到 Warm 節點
  • 需要通過 “node.attr” 來標記一個節點
    • 節點的 attribute可以是任何的 key/value
    • 可以通過 elasticsearch.yml 或者通過 –E 命 令指定
GET /_cat/nodeattrs?v
node   host       ip         attr              value
es7_01 172.28.0.2 172.28.0.2 ml.machine_memory 3973386240
es7_01 172.28.0.2 172.28.0.2 xpack.installed   true
es7_01 172.28.0.2 172.28.0.2 ml.max_open_jobs  20

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

  • 建立索引時候,指定將其建立在 hot 節點上

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

  • Index.routing.allocation 是一個索引級的 dynamic setting,可以通過 API 在後期進行設定
    • Curator / Index Life Cycle Management Tool

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

  • ES 的節點可能分佈在不同的機架
    • 當一個機架斷電,可能會同時丟失幾個節點
    • 如果一個索引相同的主分片和副本分片,同時在這個機架上,就 有可能導致資料的丟失
    • 通過 Rack Awareness 的機制,就可以儘可能避免將同一個索引 的主副分片同時分配在一個機架的節點上
    • 一個機架斷電,資料可以恢復

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

管理 ES 叢集:Hot & Warm 架構與 Shard Filtering

  • Shard Filtering
    • node.attr - 標記節點
    • index.routing.allocation – 分配索引到節點
設定 分配索引到節點,節點的屬性規則
Index.routing.allocation.include.{attr} 至少包含一個值
Index.routing.allocation.exclude.{attr} 不能包含任何一個值
Index.routing.allocation.require.{attr} 所有值都需要包含
本作品採用《CC 協議》,轉載必須註明作者和本文連結

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

相關文章