Elasticsearch

基础

  1. Elasticsearch 架构解析与最佳实践
  2. 不适合作为主存储:可能出现数据丢失和污染、无事务、近实时、吃内存、mapping不能修改
  3. 分片-主分片,可读可写,数量确定后就不能修改,除非reindex
  4. 分片-副本分片,只可读,数量可以后期修改
  5. 节点类型:
    1. Master Eligible Node,候选主节点
    2. Data Node,数据节点
    3. Coordinating Node,协调节点,负责路由转发和查询汇总
  6. 索引的index,相当于数据库的table
  7. 索引的mapping,相当于表的schema,定义字段的类型
  8. 索引的setting,定义不同的数据分布
  9. 索引的routing,路由键字段,可以指定多个值

安装

  1. bin/elasticsearch.bat -d -Ecluster.name=geektime -Enode.name=node1 -Epath.data=node1_data -Ehttp.port=9201
  2. bin/elasticsearch.bat -d -Ecluster.name=geektime -Enode.name=node2 -Epath.data=node2_data -Ehttp.port=9202
  3. bin/elasticsearch.bat -d -Ecluster.name=geektime -Enode.name=node3 -Epath.data=node3_data -Ehttp.port=9203

_cat 命令

  1. /_cat/health 查看集群整体状态
  2. /_cat/nodes?v&s=ip:desc 查看节点(负载信息)
  3. /_cat/nodes?v&h=name,diskUsed,diskTotal 查看磁盘使用
  4. /_cat/allocation 查看磁盘使用
  5. /_cat/shards 查看node下的shard分布
  6. /_cat/indices 查所有索引
  7. /_cat/segments/* 查看index内存占用
  8. /_cat/plugins 查看扩展
  9. /_cat/count 查看文档总数

监控

  1. 集群级别:GET /_cluster/health?level=nodes,其中level还可以是indices
  2. 节点级别:GET /_nodes/stats,如果nodes.节点.fielddata_breaker.tripped值很大或者一直增,说明内存不够经常OOM
  3. 索引级别:GET /{index_name}/_stats,index_name 可以改成 _all

其他

  1. 查看模板:GET /_template
  2. 查看设置项:GET /_all/_settings
  3. 清理缓存:POST /_cache/clear
  4. 查看当前的task:GET /_tasks
  5. 查索引的type和mapping:GET /_mapping
  6. 查mapping的字段类型:GET ngx-access-mobotoolpush-2018.04.12/_mapping/doc

如何组建集群

  1. 来自于流行病的Gossip协议
  2. Elasticsearch集群优化笔记
  3. 路由形式:单播 vs. 组播(多播) vs. 广播
  4. 一个新节点会通过组播或者文件配置的方式来发现一些种子节点,通讯后让所有节点都知道自己

如何选举

  1. Elasticsearch选举流程详解
  2. Elasticsearch的选举机制
  3. 选举时机:集群刚建、master失联
  4. 选举前提:需要是候选主节点、节点数要达到minimum_master_nodes
  5. 选举流程:以节点A为例,采用Bully算法
    1. 节点A ping集群所有节点得到activeMasters和masterCandidates
    2. 在activeMasters中投票id最小的(activeMasters正常集群只会有一个,如果出现了脑裂,则会存在多个)
    3. 如果activeMasters为空,在masterCandidates中投票(集群状态版本编号最大的,id最小的)
    4. 投票的节点如果是自己,就广播集群状态,否则就加入集群

results matching ""

    No results matching ""