在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Elasticsearch索引生命周期常見的階段

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-10-13 10:38 ? 次閱讀

引入索引生命周期的作用

在 Elasticsearch的日常管理中,有很多如系統日志,行為數據等方面的應用場景,這些場景的特點是數據量非常大,并且隨著時間的增長索引的數量也會持續增長,然而這些場景基本上只有最近一段時間的數據有使用價值或者會被經常使用(熱數據),而歷史數據幾乎沒有作用或者很少會被使用(冷數據),這個時候就需要對索引進行一定策略的維護管理甚至是刪除清理,否則隨著數據量越來越多除了浪費磁盤與內存空間之外,還會嚴重影響 Elasticsearch 的性能。

在 Elastic Stack 6.6 版本后推出了新功能 Index Lifecycle Management(索引生命周期管理),支持針對索引的全生命周期托管管理,并且在 Kibana 上也提供了一套UI界面來配置策略。

索引生命周期常見的階段

hot: 索引還存在著大量的讀寫操作。

warm:索引不存在寫操作,還有被查詢的需要。

cold:數據不存在寫操作,讀操作也不多。

delete:索引不再需要,可以被安全刪除。

注意:以上只是索引生命周期階段的常見定義,具體策略可以根據實際業務情況來定義。

部署Elasticsearch集群

部署一個由2個hot節點,2個warm節點,2個cold節點組成的Elasticsearch集群,并且部署了Kibana和Cerebro方便調試和觀察。docker-compose.yaml文件如下:

version:'2.2'
services:
cerebro:
image:lmenezes/cerebro:0.8.3
container_name:hwc_cerebro
ports:
-"9000:9000"
command:
--Dhosts.0.host=http://elasticsearch:9200
networks:
-hwc_es7net
kibana:
image:docker.elastic.co/kibana/kibana:7.1.0
container_name:hwc_kibana7
environment:
#-I18N_LOCALE=zh-CN
-XPACK_GRAPH_ENABLED=true
-TIMELION_ENABLED=true
-XPACK_MONITORING_COLLECTION_ENABLED="true"
ports:
-"5601:5601"
networks:
-hwc_es7net
elasticsearch:
image:docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name:es7_hot1
environment:
-cluster.name=cr7-hwc
-node.name=es7_hot1
-node.attr.box_type=hot
-bootstrap.memory_lock=true
-"ES_JAVA_OPTS=-Xms512m-Xmx512m"
-discovery.seed_hosts=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
-cluster.initial_master_nodes=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
ulimits:
memlock:
soft:-1
hard:-1
volumes:
-hwc_es7data_hot1:/usr/share/elasticsearch/data
ports:
-9200:9200
networks:
-hwc_es7net
elasticsearch2:
image:docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name:es7_warm1
environment:
-cluster.name=cr7-hwc
-node.name=es7_warm1
-node.attr.box_type=warm
-bootstrap.memory_lock=true
-"ES_JAVA_OPTS=-Xms512m-Xmx512m"
-discovery.seed_hosts=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
-cluster.initial_master_nodes=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
ulimits:
memlock:
soft:-1
hard:-1
volumes:
-hwc_es7data_warm1:/usr/share/elasticsearch/data
networks:
-hwc_es7net
elasticsearch3:
image:docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name:es7_cold1
environment:
-cluster.name=cr7-hwc
-node.name=es7_cold1
-node.attr.box_type=cold
-bootstrap.memory_lock=true
-"ES_JAVA_OPTS=-Xms512m-Xmx512m"
-discovery.seed_hosts=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
-cluster.initial_master_nodes=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
ulimits:
memlock:
soft:-1
hard:-1
volumes:
-hwc_es7data_cold1:/usr/share/elasticsearch/data
networks:
-hwc_es7net
elasticsearch4:
image:docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name:es7_hot2
environment:
-cluster.name=cr7-hwc
-node.name=es7_hot2
-node.attr.box_type=hot
-bootstrap.memory_lock=true
-"ES_JAVA_OPTS=-Xms512m-Xmx512m"
-discovery.seed_hosts=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
-cluster.initial_master_nodes=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
ulimits:
memlock:
soft:-1
hard:-1
volumes:
-hwc_es7data_hot2:/usr/share/elasticsearch/data
networks:
-hwc_es7net
elasticsearch5:
image:docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name:es7_warm2
environment:
-cluster.name=cr7-hwc
-node.name=es7_warm2
-node.attr.box_type=warm
-bootstrap.memory_lock=true
-"ES_JAVA_OPTS=-Xms512m-Xmx512m"
-discovery.seed_hosts=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
-cluster.initial_master_nodes=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
ulimits:
memlock:
soft:-1
hard:-1
volumes:
-hwc_es7data_warm2:/usr/share/elasticsearch/data
networks:
-hwc_es7net
elasticsearch6:
image:docker.elastic.co/elasticsearch/elasticsearch:7.1.0
container_name:es7_cold2
environment:
-cluster.name=cr7-hwc
-node.name=es7_cold2
-node.attr.box_type=cold
-bootstrap.memory_lock=true
-"ES_JAVA_OPTS=-Xms512m-Xmx512m"
-discovery.seed_hosts=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
-cluster.initial_master_nodes=es7_hot1,es7_warm1,es7_cold1,es7_hot2,es7_warm2,es7_cold2
ulimits:
memlock:
soft:-1
hard:-1
volumes:
-hwc_es7data_cold2:/usr/share/elasticsearch/data
networks:
-hwc_es7net

volumes:
hwc_es7data_hot1:
driver:local
hwc_es7data_warm1:
driver:local
hwc_es7data_cold1:
driver:local
hwc_es7data_hot2:
driver:local
hwc_es7data_warm2:
driver:local
hwc_es7data_cold2:
driver:local

networks:
hwc_es7net:
driver:bridge

執行docker-compose up -d命令即可啟動Elasticsearch集群。(前提安裝好docker和docker-compose)

修改IML刷新時間

將ILM刷新時間設定為1秒,便于實驗演示(默認為10分鐘):

PUT_cluster/settings
{
"persistent":{
"indices.lifecycle.poll_interval":"1s"
}
}

設置Index Lifecycle Policies

設置hot/warm/cold和delete四個階段:

hot:超過5個文檔以后rollover。

warm:20s后進入warm階段,將索引設置為只讀。

cold:40s后進入warm階段,將副本分別從1縮小為0。

delete:60s后進入delete階段,刪除索引。

PUT/_ilm/policy/log_ilm_policy
{
"policy":{
"phases":{
"hot":{
"actions":{
"rollover":{
"max_docs":5
}
}
},
"warm":{
"min_age":"20s",
"actions":{
"allocate":{
"include":{
"box_type":"warm"
}
},
"readonly":{}
}
},
"cold":{
"min_age":"40s",
"actions":{
"allocate":{
"include":{
"box_type":"cold"
},
"number_of_replicas":0
}
}
},
"delete":{
"min_age":"60s",
"actions":{
"delete":{}
}
}
}
}
}

創建第一個索引

將索引分配到hot節點,并且調用之前設置的IML策略log_ilm_policy,設置rollover的別名為ilm_alias,設置主分片為1,副本分片為1。設置"is_write_index": true在rollover的時候,alias會包含所有rollover文檔。

PUTilm_index-000001
{
"settings":{
"number_of_shards":1,
"number_of_replicas":1,
"index.lifecycle.name":"log_ilm_policy",
"index.lifecycle.rollover_alias":"ilm_alias",
"index.routing.allocation.include.box_type":"hot"
},
"aliases":{
"ilm_alias":{
"is_write_index":true
}
}
}

創建文檔

連續執行5次POST,創建5個文檔。

POSTilm_alias/_doc
{
"name":"cr7",
"age":15
}

觀察

剛開始可以看到總共有5個doc。5a6d60f8-4a37-11ed-a3b6-dac502259ad0.png

當達索引iml_index-000001到5個doc時,做了rollover操作,新建了新的索引iml_index-000002。

5a7c987a-4a37-11ed-a3b6-dac502259ad0.png

等待20s后,將索引iml_index-000001移動到warm節點。

5a88fbb0-4a37-11ed-a3b6-dac502259ad0.png

等待40s后,將索引iml_index-000001移動到cold節點,并且將副本數從1縮小為0。

5a977afa-4a37-11ed-a3b6-dac502259ad0.png

等待60s后,索引iml_index-000001被刪除。

5aa446ae-4a37-11ed-a3b6-dac502259ad0.png

由于在warm階段設置了readonly,在warm和cold階段如果嘗試往iml_index-000001寫入或修改數據,將會收到以下報錯:

{
"error":{
"root_cause":[
{
"type":"cluster_block_exception",
"reason":"blockedby:[FORBIDDEN/8/indexwrite(api)];"
}
],
"type":"cluster_block_exception",
"reason":"blockedby:[FORBIDDEN/8/indexwrite(api)];"
},
"status":403
}

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7139

    瀏覽量

    89581
  • ui界面
    +關注

    關注

    0

    文章

    11

    瀏覽量

    1584
  • Elasticsearch
    +關注

    關注

    0

    文章

    30

    瀏覽量

    2854

原文標題:Elasticsearch 索引生命周期管理

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于Rust語言中的生命周期

    Rust是一門系統級編程語言具備高效、安和并發等特,而生命周期是這門語言中比較重要的概念之一。在這篇教程中,我們會了解什么是命周期、為什么需要生命周期、如何使用生命周期,同時我們依然會
    的頭像 發表于 09-19 17:03 ?943次閱讀

    Traveo II B-H中的SECURE和SECURE_WITH_DEBUG生命周期階段有何不同?

    Traveo II B-H 中的 SECURE 和 SECURE_WITH_DEBUG 生命周期階段有何不同?
    發表于 05-21 07:07

    AutoScaling 生命周期掛鉤功能

    摘要: AutoScaling 伸縮組實例管理功能全面升級,新上線生命周期掛鉤(LifecycleHook)功能,方便用戶更加靈活地管理伸縮組內實例。使用生命周期掛鉤可以在伸縮組發生伸縮活動時將伸縮
    發表于 06-27 17:13

    在S32G2 RM中有“生命周期”,生命周期的完整含義是什么?

    在S32G2 RM中,有“生命周期”。生命周期的完整含義是什么,我們應該如何使用它?
    發表于 04-23 10:37

    貫穿于全生命周期的功能安全

    簡要介紹了功能安全在SIS 全安全生命周期的主要活動,敘述了全生命周期的功能安全管理。簡要闡述了貫穿于整體安全生命周期的功能安全進行的主要階段,同時提出了在設計SIS
    發表于 12-19 15:50 ?15次下載

    貫穿于全生命周期的功能安全

    簡要介紹了功能安全在SIS 全安全生命周期的主要活動,敘述了全生命周期的功能安全管理。簡要闡述了貫穿于整體安全生命周期的功能安全進行的主要階段,同時提出了在設計SIS 時
    發表于 01-06 17:11 ?6次下載

    一文讀懂Android Activity生命周期

    正常情況下Activity的生命周期: Activity的生命周期大概可以歸為三部分 整個的生命周期:onCreate()可以設置所有的“全局”狀態, onDestory()可以釋放所有的資源 可見
    發表于 05-30 01:03 ?1611次閱讀

    基于延長WSN生命周期的LEACH算法的改進

    基于延長WSN生命周期的LEACH算法的改進(開關電源技術與設計pdf百度云)-基于延長WSN生命周期的LEACH算法的改進? ? ? ? ? ? ? ? ? ??
    發表于 09-15 11:17 ?14次下載
    基于延長WSN<b class='flag-5'>生命周期</b>的LEACH算法的改進

    了解產品制造生命周期中的安全風險問題

    列的 第一篇文章 所解釋的,IC 生命周期的最后兩個階段,即電路板組裝和電路板測試,由原始設備制造商 (OEM) 擁有和控制。 點擊查看完整大小的圖片 圖 1:OEM 負責確保 IC 生命周期的最后
    的頭像 發表于 07-13 18:03 ?2980次閱讀
    了解產品制造<b class='flag-5'>生命周期</b>中的安全風險問題

    深入分析芯片生命周期管理平臺

    (SLM)平臺,通過收集芯片上各個階段的有用數據,并在其整個生命周期中對這些數據進行智能化分析,優化芯片生命周期中每個階段。
    的頭像 發表于 08-02 10:43 ?2358次閱讀

    Vue入門Vue的生命周期

    .生命周期 4.1生命周期是什么 Vue的生命周期, 就是Vue實例從創建到銷毀的過程.
    的頭像 發表于 02-06 16:16 ?893次閱讀
    Vue入門Vue的<b class='flag-5'>生命周期</b>

    編譯器的標準生命周期

    編譯器的標準生命周期
    發表于 03-14 19:06 ?0次下載
    編譯器的標準<b class='flag-5'>生命周期</b>

    編譯器的標準生命周期

    編譯器的標準生命周期
    發表于 07-05 19:32 ?1次下載
    編譯器的標準<b class='flag-5'>生命周期</b>

    鴻蒙開發:【PageAbility的生命周期

    PageAbility生命周期是PageAbility被調度到INACTIVE、ACTIVE、BACKGROUND等各個狀態的統稱。PageAbility生命周期流轉及狀態說明見如下圖1、表1所示。
    的頭像 發表于 06-17 10:05 ?746次閱讀
    鴻蒙開發:【PageAbility的<b class='flag-5'>生命周期</b>】

    鴻蒙開發組件:DataAbility的生命周期

    應用開發者可以根據業務場景實現data.js/data.ets中的生命周期相關接口。DataAbility生命周期接口說明見下表。
    的頭像 發表于 06-20 09:39 ?492次閱讀
    主站蜘蛛池模板: 色多多在线观看高清免费 | 久久婷婷丁香七月色综合 | 欧美性aaa | 色视频在线观看 | 香焦视频在线观看黄 | 69japanese日本100| 欧美性69 | 欧美极品在线视频 | 国产成人精品日本亚洲语音1 | 老师您的兔子好软水好多动漫视频 | 四虎一影院区永久精品 | 成年网站在线在免费播放 | 香港三澳门三日本三级 | 日本乱理论片免费看 | 3344在线观看永久免费 | 亚洲第一视频 | 色狠狠狠狠综合影视 | 操美女在线看 | 美女扒开尿口给男人桶视频免费 | 窝窝视频成人影院午夜在线 | 久久国产午夜精品理论片34页 | 亚洲黄色小视频 | 色佬网 | 在线观看黄色一级片 | 五月婷婷综合基地 | 国内精品久久久久久影院老狼 | 久久久国产高清 | 国产成人精品午夜二三区 | 亚洲一区二区三区四 | 天天操免费视频 | 69xxxx日本| 中文字幕在线播放第一页 | 1024国产高清精品推荐 | 四虎影在线永久免费观看 | 日本在线观看高清不卡免v 日本在线观看永久免费网站 | 黄色网址日本 | 噜噜爽| 9299yy看片淫黄大片在线 | 手机看片福利盒子久久 | 国产三级毛片视频 | 国产全黄三级三级 |