Elasticsearch7.8.0版本进阶——分布式集群(应对故障)

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch7.8.0版本进阶——分布式集群(应对故障)相关的知识,希望对你有一定的参考价值。

目录

一、Elasticsearch集群的安装

1.1、Elasticsearch集群的安装(win10环境)

1.2、Elasticsearch集群的安装(linux环境)

二、应对故障(win10环境集群演示)

2.1、启动集群(三个节点)

  • 先启动Elasticsearch7.8.0集群的节点1
  • 再启动Elasticsearch7.8.0集群的节点2
  • 最后启动Elasticsearch7.8.0集群的节点3

2.2、创建3个主分片和2份副本(每个主分片拥有2个副本分片)

  • 在包含一个空节点的集群内创建名为 users 的索引,为了演示目的,将分配 3个主分片和2份副本(每个主分片拥有2个副本分片)

    
    	"settings" : 
    		"number_of_shards" : 3,
    		"number_of_replicas" : 2
    	
    
    

  • user索引现在拥有 9 个分片:3 个主分片和 6 个副本分片。 这意味着我们可以将集群扩容到 9 个节点,每个节点上一个分片。相比原来 3 个节点时,集群搜索性能可以提升 3 倍。

  • 通过 elasticsearch-head 插件查看集群情况。

2.3、关闭第一个节点

  • 当关闭第一个节点,这时集群的状态为:关闭了一个节点后的集群。

  • 关闭的节点是一个主节点。而集群必须拥有一个主节点来保证正常工作,所以发生的第一件事情就是选举一个新的主节点: Node-1002 。在我们关闭 Node-1001 的同时也失去了主分片 1 和 2 ,并且在缺失主分片的时候索引也不能正常工作。 如果此时来检查集群的状况,我们看到的状态将会为 red:不是所有主分片都在正常工作。

  • 在其它节点上存在着这两个主分片的完整副本, 所以新的主节点立即将这些分片在 Node-1002 和 Node-1003 上对应的副本分片提升为主分片, 此时集群的状态将会为yellow。这个提升主分片的过程是瞬间发生的,如同按下一个开关一般。

2.4、为什么我们集群状态是 yellow 而不是 green

2.4.1、为什么集群状态是 yellow 而不是 green

  • 虽然我们拥有所有的三个主分片,但是同时设置了每个主分片需要对应 2 份副本分片,而此
    时只存在一份副本分片,所以集群不能为 green 的状态.

  • 如果我们同样关闭了 Node-1002 ,我们的程序 依然 可以保持在不丢任何数据的情况下运行,因为Node-1003 为每一个分片都保留着一份副本。

2.4.2、重新启动主节点(Node-1001)

  • 在Node-1001主节点的elasticsearch.yml配置文件中添加访问如下Node-1002和Node-1003的配置,如下:

    discovery.seed_hosts: ["localhost:9302", "localhost:9303"]
    

  • 重新启动主节点(Node-1001),通过 elasticsearch-head 插件查看集群情况

  • 由上图可知,,集群可以将缺失的副本分片再次进行分配,那么集群的状态也将恢复成之前的状态。 如果 Node-1001 依然拥有着之前的分片,它将尝试去重用它们,同时仅从主分片复制发生了修改的数据文件。和之前的集群相比,只是 Master 节点切换了。

以上是关于Elasticsearch7.8.0版本进阶——分布式集群(应对故障)的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch7.8.0版本进阶——倒排索引

Elasticsearch7.8.0版本进阶——近实时搜索

Elasticsearch7.8.0版本进阶——分片控制

Elasticsearch7.8.0版本进阶——分布式集群(故障转移)

Elasticsearch7.8.0版本进阶——持久化变更

Elasticsearch7.8.0版本进阶——数据更新流程