中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Elasticsearch索引生命周期如何管理

本篇內(nèi)容介紹了“Elasticsearch索引生命周期如何管理”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供平谷網(wǎng)站建設(shè)、平谷做網(wǎng)站、平谷網(wǎng)站設(shè)計(jì)、平谷網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、平谷企業(yè)網(wǎng)站模板建站服務(wù),十余年平谷做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

引入索引生命周期的作用

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

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

索引生命周期常見的階段

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

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

  • cold:數(shù)據(jù)不存在寫操作,讀操作也不多。

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

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

部署Elasticsearch集群

部署一個(gè)由2個(gè)hot節(jié)點(diǎn),2個(gè)warm節(jié)點(diǎn),2個(gè)cold節(jié)點(diǎn)組成的Elasticsearch集群,并且部署了Kibana和Cerebro方便調(diào)試和觀察。 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
  elasticsearch3:
    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
  elasticsearch4:
    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
  elasticsearch5:
    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
  elasticsearch6:
    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
  elasticsearch7:
    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

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

修改IML刷新時(shí)間

將ILM刷新時(shí)間設(shè)定為1秒,便于實(shí)驗(yàn)演示(默認(rèn)為10分鐘):

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

設(shè)置Index Lifecycle Policies

設(shè)置hot/warm/cold和delete四個(gè)階段:

  • hot:超過5個(gè)文檔以后rollover。

  • warm:20s后進(jìn)入warm階段,將索引設(shè)置為只讀。

  • cold:40s后進(jìn)入warm階段,將副本分別從1縮小為0。

  • delete:60s后進(jìn)入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": {}
        }
      }
    }
  }
}

設(shè)置索引模板

設(shè)置索引模板是為了新 rollover 出來的索引能夠應(yīng)用 iml 的配置:

PUT /_template/log_ilm_template
{
  "index_patterns" : [
      "ilm_index-*"
    ],
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "log_ilm_policy",
          "rollover_alias" : "ilm_alias"
        },
        "routing" : {
          "allocation" : {
            "include" : {
              "box_type" : "hot"
            }
          }
        },
        "number_of_shards" : "1",
        "number_of_replicas" : "1"
      }
    }
}

創(chuàng)建第一個(gè)索引

將索引分配到hot節(jié)點(diǎn),并且調(diào)用之前設(shè)置的IML策略log_ilm_policy,設(shè)置rollover的別名為ilm_alias,設(shè)置主分片為1,副本分片為1。 索引必須后面要帶有數(shù)字,否則 rollover 策略不會(huì)生效。

PUT ilm_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": {
      #在rollover的時(shí)候,alias會(huì)包含所有rollover的索引,并且會(huì)自動(dòng)將 is_write_index": 
      #true 設(shè)置到最新rollover的索引上,也就是說寫操作會(huì)到最新的索引上。
      "is_write_index": true 
    }
  }
}

創(chuàng)建文檔

連續(xù)執(zhí)行5次POST,創(chuàng)建5個(gè)文檔。

POST ilm_alias/_doc
{
  "name":"cr7",
  "age": 15
}

觀察

剛開始可以看到總共有5個(gè)doc。 Elasticsearch索引生命周期如何管理

當(dāng)達(dá)索引iml_index-000001到5個(gè)doc時(shí),做了rollover操作,新建了新的索引iml_index-000002。

Elasticsearch索引生命周期如何管理

等待20s后,將索引iml_index-000001移動(dòng)到warm節(jié)點(diǎn)。

Elasticsearch索引生命周期如何管理

等待40s后,將索引iml_index-000001移動(dòng)到cold節(jié)點(diǎn),并且將副本數(shù)從1縮小為0。

Elasticsearch索引生命周期如何管理

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

Elasticsearch索引生命周期如何管理

由于在warm階段設(shè)置了readonly,在warm和cold階段如果嘗試往iml_index-000001寫入或修改數(shù)據(jù),將會(huì)收到以下報(bào)錯(cuò):

{
  "error": {
    "root_cause": [
      {
        "type": "cluster_block_exception",
        "reason": "blocked by: [FORBIDDEN/8/index write (api)];"
      }
    ],
    "type": "cluster_block_exception",
    "reason": "blocked by: [FORBIDDEN/8/index write (api)];"
  },
  "status": 403
}

“Elasticsearch索引生命周期如何管理”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站欄目:Elasticsearch索引生命周期如何管理
本文鏈接:http://m.rwnh.cn/article40/ggddho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)網(wǎng)站排名、網(wǎng)站內(nèi)鏈虛擬主機(jī)、網(wǎng)站建設(shè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
齐齐哈尔市| 射洪县| 德钦县| 永靖县| 泗洪县| 衢州市| 长乐市| 新野县| 南和县| 江陵县| 昆明市| 和顺县| 宁都县| 斗六市| 灵璧县| 若羌县| 上栗县| 隆化县| 光泽县| 大名县| 雷山县| 怀柔区| 北安市| 科技| 娱乐| 洞头县| 嘉善县| 遂宁市| 迭部县| 岳池县| 徐水县| 博爱县| 南漳县| 佛山市| 道真| 昔阳县| 广汉市| 常山县| 兴安盟| 合肥市| 卫辉市|