日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch7.X ILM索引生命周期管理(冷热分离)

發布時間:2024/1/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch7.X ILM索引生命周期管理(冷热分离) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、“索引生命周期管理”概述

Elasticsearch索引生命周期管理指:Elasticsearch從設置、創建、打開、關閉、刪除的全生命周期過程的管理。

二、為什么要使用“索引生命周期管理”

1、ELK集群之前的索引模式,通過app_name和日期區分,隨著時間累積,索引數量逐漸增多,造成服務器內存、CPU、IO等指標上漲;

2、需要創建額外定時任務執行索引刪除腳本,這種方式無法避免kafka重復消費造成的大量已刪除索引重建,并無法用腳本按日期刪除;

3、根據日志查詢和存儲的特點,將數據冷熱分離,熱數據使用高性能磁盤提高寫入與查詢效率,溫數據只做查詢不影響數據寫入性能,冷數據用OSS等低價存儲作為歸檔節約存儲成本。

三、面臨的問題

1、ES生命周期策略要緊密貼合業務模型

2、數據冷熱節點和生命周期策略需要合理規劃

3、數據高可用性規劃(單純日志場景對數據可用性并不高,可以規劃0副本索引,減小系統開銷)

四、配置方法及原理

1、生命周期管理的本質--RollOver

當現有索引被認為太大或太舊時,滾動索引API將別名滾動到新索引。該API接受一個別名和一個條件列表。別名必須只指向一個索引。如果索引滿足指定條件,則創建一個新索引,并將別名切換到指向新索引的位置

2、使用場景

RollOver適合存放日志數據、索引非常大、索引實時導入數據等場景

在索引模板配置好索引的setting、mapping等參數,然后配置好_rollover規則,es會幫助你處理剩余的事情

索引生命周期管理使用了rollover的特性,將rollover分成四個階段。

3、四個階段

ES索引生命周期管理分為4個階段:hot、warm、cold、delete,其中hot主要負責對索引進行rollover操作,warm、cold、delete分別對rollover后的數據進一步處理

階段描述
hot主要處理時序數據的實時寫入
warm可以用來查詢,但是不再寫入
cold索引不再有更新操作,并且查詢也會很少
delete數據將被刪除

?

注意:上述四個階段不是必須同時存在

4、配置方法

實現索引生命周期,必須同時存在如下要素,缺一不可,上述四個階段可以根據實際情況配置,并為ES數據節點添加相應的標簽。

配置項描述
節點標簽配置數據節點標簽,區分熱節點、溫節點以及冷節點
生命周期策略定義熱階段的大小、最大文檔數或最大時長,溫階段是否縮小索引、冷階段存在時長及刪除周期
索引模板引用生命周期策略模板中指定引用的生命周期策略,按模板規則創建索引后,加載生命周期策略
索引模板指定調度節點將新建索引分片都分配到熱節點

4.1、節點

熱節點

這種類型的數據節點執行集群內所有的操作,節點存儲的數據經常被查詢,屬于IO、CPU密集型操作,因而需要CPU比較空閑和裝有高性能IO讀寫的磁盤(如SSD)的服務器支撐。

1

2

3

4

5

6

7

#配置方法

vim?/data/app/elasticsearch/config/elasticsearch.yml

?

#每個熱節點加入如下配置并重啟服務

node.attr.box_type: hot

node.attr.rack: rack1

#這兩項配置是為節點增加標簽,具體名稱并不是寫死的,與后面模板和策略配置有關

溫節點

這種類型的數據節點處理不太常用的索引(比如前一天的日志數據),這種數據查詢的實時性不算高,索引為只讀索引,不會有寫入操作,因此不需要SSD磁盤存儲,降低存儲成本。

1

2

3

4

5

6

#配置方法

vim?/data/app/elasticsearch/config/elasticsearch.yml

?

#每個溫節點加入如下配置并重啟服務

node.attr.box_type: warm

node.attr.rack: rack1

冷節點

冷節點數據適合作為歸檔使用,比溫節點查詢還要少(比如半月以上的歸檔日志),這種類型數據一般很少查詢,并不會消耗CPU性能及IO,但是存儲容量會很大,需要更低成本的存儲,例如OSS或S3;ES可以使用經過fuse協議掛載的對象存儲作為后端存儲。

1

2

3

4

5

6

#配置方法

vim?/data/app/elasticsearch/config/elasticsearch.yml

?

#每個溫節點加入如下配置并重啟服務

node.attr.box_type: cold

node.attr.rack: rack1

4.2、生命周期策略

配置方法:

1、利用Kibana新建策略并指定到模板

打開Kibana--->管理--->索引生命周期策略

創建策略

?

?

?

?

?

?保存策略并在創建模板后添加到模板中

?

?2、調用ESApi將策略寫入ES

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

curl -XPUT -H?"content-type:application/json"?http://es_addr:9200/_ilm/policy/test_policy?\

?

-d "{

????"policy": {

????????"phases": {

????????????"hot": {

????????????????"min_age":?"0ms",

????????????????"actions": {

????????????????????"rollover": {

????????????????????????"max_age":?"1h",

????????????????????????"max_size":?"10mb",

????????????????????????"max_docs": 50000

????????????????????},

????????????????????"set_priority": {

????????????????????????"priority": 100

????????????????????}

????????????????}

????????????},

????????????"warm": {

????????????????"min_age":?"0ms",

????????????????"actions": {

????????????????????"allocate": {

????????????????????????"number_of_replicas": 0,

????????????????????????"include": {},

????????????????????????"exclude": {},

????????????????????????"require": {

????????????????????????????"box_type":?"warm"

????????????????????????}

????????????????????},

????????????????????"shrink": {

????????????????????????"number_of_shards": 3

????????????????????},

????????????????????"set_priority": {

????????????????????????"priority": 50

????????????????????}

????????????????}

????????????},

????????????"cold": {

????????????????"min_age":?"1h",

????????????????"actions": {

????????????????????"freeze": {},

????????????????????"allocate": {

????????????????????????"include": {},

????????????????????????"exclude": {},

????????????????????????"require": {

????????????????????????????"box_type":?"cold"

????????????????????????}

????????????????????},

????????????????????"set_priority": {

????????????????????????"priority": 0

????????????????????}

????????????????}

????????????},

????????????"delete": {

????????????????"min_age":?"2h",

????????????????"actions": {

????????????????????"delete": {}

????????????????}

????????????}

????????}

????}"

4.3、索引模板

以下為索引模板配置,要有以下配置項策略才會生效,其他選項如字段mapping等請參考官方文檔

1

2

3

4

5

6

7

8

9

10

11

PUT _template/my_template

{

??"index_patterns": ["test-*"],

??"settings": {

????"number_of_shards": 5,

????"number_of_replicas": 0,

????"index.lifecycle.name":?"test_policy",?#指定索引生命周期策略名稱

????"index.lifecycle.rollover_alias":?"test-alias",?#指定rollover別名(索引寫入與讀取時所用的名稱)

????"routing.allocation.require.box_type":?"hot"?#指定索引新建時所分配的節點(此項不指定會默認分配到所有節點)

??}

}

注意:索引創建的名稱應該是以 “-00001”等可自增長的字段結尾,否則策略不生效,es指定索引的別名寫入

總結

以上是生活随笔為你收集整理的Elasticsearch7.X ILM索引生命周期管理(冷热分离)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。