Elasticsearch高可用和路由规则

Lucene

  • 迄今为止最先进,性能最好的,功能最全的搜素引擎库。

Elasticsearch

  • 基于Apache Lucene 开源的搜素引擎,以Lucene为核心进行了封装,提供相关RestFul API 的调用方式,让使用更加简单有效。

ELK stack

  • 以Elasticsearch为核心组件,日志通过Logstash 进行解析和结构化的构造,然后输入Elasticsearch进行索引的创建和结构化的存储,前端展示通过Kibana对Elasticsearch结构化数据做聚合运算和出图展示。
  • Beat组件在ELK中担当日志收集终端的角色。代替之前logstash收集的功能,以速度快和性能好为其优势。

Elasticsearch集群和分片路由(高可用)

用es代替Elasticsearch
  • Es的集群很简单,只需要简单的配置就能启动构成工作集群。
elasticsearch.yml中集群名字一样即可,es之间自动发现节点。
  • 在数据进入后,es默认创建5个分片(0,1,2,3,4),集群状态为yellow。es会自动同步各个分片和其副本分片的数据。
API查看分片状态:
curl -XGET 192.168.59.63:9200/_cat/shards

API查看节点健康状态:
curl -XGET
192.168.59.63:9200/_cluster/health?pretty

API查看节点角色:
curl -XGET
192.168.59.63:9200/_cat/nodes?v

  • 再启动一个es的时候,es会默认创建一个副本分片,这个时候分片总数为10个

  • 再启动一个es,es会自动均衡将分片自动加载到三台es中

  • 这个时候模拟故障关掉一台es,丢掉的分片会在其他两台中找到,并恢复。

  • es路由到分片的算法过程
shard= hash(routing)% number_of_primary_shards

routing是一个字符串,默认是索引的_id值,也可以自己定义。 
这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数量得到一个余数(remainder),
余数的范围永远是0到number_of_primary_shards - 1,这个数字就是特定文档所在的分片。
  • 由上面可以看出,数据存在特定分区内,如果我们放数据的时候就指定好 routing值,查询的时候就可以直接到特定地点分片上查找,让查询变得高效得多
放数据 指定 routing
curl -XPUT 192.168.59.63:9200/test/doc/1?routing=a -d '{ "name": "1" }'

查数据 

curl -XGET '192.168.59.63:9200/test/_search?pretty&q=*:*&routing=a'  

你可能感兴趣的:(ELK)