Elasticsearch集群内部的工作方式(二)

390 阅读2分钟

Elasticsearch集群内部的工作方式

Elasticsearch用于构建高可用和可拓展的系统。拓展的方式可以使购买更好的服务器(纵向拓展)或者购买更多的服务器(横向拓展),虽然纵向拓展是完全可以增强服务器的性能,但是纵向拓展是有局限性,我们在实际中更加倾向于横向拓展。 在传统的数据库中横向拓展需要在程序做更多的工作,但是在Elasticsearch中我们完全不需要关系这些,Elasticsearch具备天生的分布式特性。这章主要涉及到了集群(cluster),节点(node)和分片(shards).

空集群

如果我们期待一个单独的节点,它还没有数据和索引,这个集群看起来就是这样的

1. 一个节点就是就是Elasticsearch实例,一个集群有一个或者多个节点组成,它们具有相同的cluster.name,它们协调工作,分享数据和负载。当加入新的节点或者删除一个节点的时候,集群就会感知到并且平衡数据。

2. 集群被选取为主节点的节点,他讲临时管理集群级别的一些变更,例如新建或者删除索引,增加或者移除节   点等。主节点不参与文档节的变更或搜索,这意味着在流量的增长的时候,该主节点不会成为集群的瓶颈。任何节点都可以成为主节点。集群只有一个节点的时候会充当主节点的角色。

3.我们可以和集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于那个节点上,它们可以转发请求到相应的节点上。访问的节点负责收集各节点返回的数据,最后一起讲结果返回给客户端

集群健康

Elasticsearch可以健康统计集群的健康信息。集群的健康状态有green,yellow或者red

 GET /_cluster/health

返回的结果如下:

颜色 颜色代表的意义
green 所有主要分片和复制分片都可用
yellow 所有主要分片都可用,但是不是所有的复制分片都可以用
red 不是所有的主要分片都可用