elasticsearch分布式集群模型和选主过程

分布式特性

elasticsearch的集群支持存储的水平扩容,支持PB级数据,他的分布式特性允许部分节点停止服务的同时,整个集群的服务不受影响。默认的集群名字是 elasticsearch, 这个名字可以通过修改yml 配置文件或者是在命令行中通过-E cluster.name = elastic 进行设置。

节点

  • 节点就是一个Elasticsearch的实例,其本质就是一个JAVA进程,一个机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器运行一个Elasticsearch 实例。
  • 每一个节点都有名字,通过配置文件配置,或者启动的时候 -E node.name = nodeName 进行指定。
  • 每一个节点在启动之后,会分配一个UID,保存在data目录下。

主节点

Master Node 处理创建、删除索引等的请求;决定分片被分配到哪个节点等;同时维护并且更新集群状态信息(Cluster State)包括:

  • 所有节点信息
  • 所有索引和对应的Mapping与Setting 信息
  • 分片路由信息
    虽然在每个节点上都保存了集群的状态信息,但是只有Master Node才能修改集群的状态信息,并负责同步给其他节点,防止Cluster State 信息的不一致。
    MasterNode 非常重要,在部署上需要考虑解决单点问题,最佳的做法是设置多个MasterNode,每个节点只承担Master 的单一角色。

候选主节点

  • 英文名Master Eligible Node, 一个集群,支持配置多个Master Eligible节点,这些节点在必要时(如Master节点出现故障,网络故障时)参与选主流程,成为Master Node。
  • 每个节点启动后,默认就是一个Master eligible Node,可以设置node.master:false 禁止。
  • 当集群内第一个Master eligible 节点启动的时候,它会将自己选举成Master Node.

数据节点

  • 可以保存数据的节点,叫做DataNode,节点启动后,默认就是数据节点。可以设置node.data:false 禁止。
  • Data Node 的职责:保存分片数据,在数据扩展上起到至关重要的作用(由Master Node 决定如何把分片分发到数据节点上)
  • 增加节点可以解决数据水平扩展和数据单点的问题。

协调节点

处理请求的节点,叫Coordinating Node,所有的节点默认都是Coordinating Node,所有的请求会被收到请求的节点路由到正确的节点,例如创建索引的请求,需要路由到Master Node。

预处理节点

您可以在实际的 indexing(索引)发生之前使用 ingest node 来预处理 documents(文档)。这种预处理发生在 intercepts bulk(拦取批量索引)和 index requests(索引请求)的 ingest node 上,通过transformations然后将文档传回 index或者 bulk APIs。

可以在任何节点上启用 ingest,甚至使用专门的 ingest nodes。默认情况下在所有的节点上启用 ingest。为了在某个节点上禁用 ingest,在 elasticsearch.yml文件中配置 node.ingest: false

配置角色类型及配置原则

一个节点默认是一个Master Eligible、data、ingest node。

节点类型配置参数默认值
master eligiblenode.mastertrue
datanode.datatrue
ingestnode.ingesttrue
coordinating only以上参数设置为false

配置原则:
1、配置多台Data Node,实现数据存储的水平扩展。
2、设置多台Master Eligible Nodes,同时设置合理理的quorum 数,避免脑裂问题。
3、设置多台Coordinating Node,提升查询的可⽤用性和性能。

选主过程

1、当集群内Master eligible 节点启动的时候,它会将自己选举成Master Node.
2、互相Ping 对方,Node Id 低的会成为被选举的Master节点。
3、其他节点会加⼊入集群,但是不不承担Master 节点的⻆角⾊色。一旦发现被选中的主节点丢失,就会选举出新的Master 节点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值