目录
- 一、Elasticsearch集群的安装
- 1.1、Elasticsearch集群的安装(win10环境)
- 1.2、Elasticsearch集群的安装(linux环境)
- 二、应对故障(win10环境集群演示)
- 2.1、启动集群(三个节点)
- 2.2、创建3个主分片和2份副本(每个主分片拥有2个副本分片)
- 2.3、关闭第一个节点
- 2.4、为什么我们集群状态是 yellow 而不是 green
- 2.4.1、为什么集群状态是 yellow 而不是 green
- 2.4.2、重新启动主节点(Node-1001)
一、Elasticsearch集群的安装
1.1、Elasticsearch集群的安装(win10环境)
- 参考lz此博文链接:https://wwwxz.blog.csdn.net/article/details/128866583?spm=1001.2014.3001.5502
1.2、Elasticsearch集群的安装(linux环境)
- 参考lz此博文链接:https://wwwxz.blog.csdn.net/article/details/128914484?spm=1001.2014.3001.5502
二、应对故障(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 节点切换了。