Elasticsearch的集群
ElasticSearch 的主旨是随时可用和按需扩容。 而扩容可以通过购买性能更强大( 垂直扩容 ,或 纵向扩容 ) 或者数量更多的服务器( 水平扩容 ,或 横向扩容 )来实现。
节点
一个运行中的 Elasticsearch 实例称为一个 节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。
主节点
负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等;
无论我们将请求发送到哪个节点(主节点、从节点),它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端
Elasticsearch的健康检查
GET /_cluster/health
返回
{
"cluster_name": "elasticsearch",
"status": "green",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 0,
"active_shards": 0,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0
}
green
所有的主分片和副本分片都正常运行。
yellow
所有的主分片都正常运行,但不是所有的副本分片都正常运行。
red
有主分片没能正常运行。
索引
索引实际上是指向一个或者多个物理 分片 的 逻辑命名空间
分片
分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个节点里;一个分片 是一个底层的 工作单元 ,它仅保存了全部数据中的一部分;一个分片是一个 Lucene 的实例,它本身就是一个完整的搜索引擎;
故障转移---整个节点内分片的平移
在集群中添加节点后,所有新近被索引的文档都将会保存在主分片上,然后被并行的复制到对应的副本分片上。这就保证了我们既可以从主分片又可以从副本分片上获得文档。
水平扩容---节点内某一个或多个分片的平移
为提高服务器资源的利用率,提高集群响应水平而降资源按分片分摊到不同的集群;
性能调优点
主分片的数目在索引创建时就已经确定了下来。实际上,这个数目定义了这个索引能够 存储 的最大数据量。(实际大小取决于你的数据、硬件和使用场景。) 但是,读操作——搜索和返回数据——可以同时被主分片 或 副本分片所处理,所以当你拥有越多的副本分片时,也将拥有越高的吞吐量。
故障响应
而集群必须拥有一个主节点来保证正常工作,所以主节点发生的第一件事情就是选举一个新的主节点;如果其它节点上存在着原来主节点的所有分片的副本,那么系统将不会受到影响。